如何使用 Helm 2 软件包管理器在 Kubernetes 集群上安装软件

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

Helm 是 Kubernetes 的一个包管理工具,允许开发人员和运维人员更轻松地在 Kubernetes 集群上配置和部署应用程序。

在本教程中,我们将设置 Helm,并使用它来安装、重新配置、回滚,然后删除 Kubernetes 仪表板应用程序的一个实例。该仪表板是官方基于 Web 的 Kubernetes 图形用户界面。

如果您正在寻找托管的 Kubernetes 服务,请查看我们专为增长而构建的简单的托管 Kubernetes 服务。

先决条件

在本教程中,您将需要:

  • 启用基于角色的访问控制(RBAC)的 Kubernetes 1.8+ 集群。

  • 在本地机器上安装并配置连接到您的集群的 kubectl 命令行工具。您可以在官方文档中了解更多关于安装 kubectl 的信息。

    您可以使用以下命令测试连接:

    kubectl cluster-info
    

    如果没有错误显示,表示您已连接到集群。如果使用 kubectl 访问多个集群,请确保验证已选择了正确的集群上下文:

    kubectl config get-contexts
    
    
    CURRENT   NAME                    CLUSTER                      AUTHINFO                      NAMESPACE
    *         do-nyc1-k8s-example     do-nyc1-k8s-example          do-nyc1-k8s-example-admindocker-for-desktop      docker-for-desktop-cluster   docker-for-desktop
    

    在此示例中,星号(*)表示我们已连接到 do-nyc1-k8s-example 集群。要切换集群,请运行:

    kubectl config use-context context-name
    

当您连接到正确的集群时,继续执行第 1 步开始安装 Helm。

第 1 步 — 安装 Helm

首先,我们将在本地机器上安装 helm 命令行实用程序。Helm 提供了一个脚本,可处理在 MacOS、Windows 或 Linux 上的安装过程。

切换到可写目录并从 Helm 的 GitHub 仓库下载脚本:

cd /tmp
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh

使用 chmod 使脚本可执行:

chmod u+x install-helm.sh

此时,您可以使用您喜欢的文本编辑器打开脚本并检查以确保其安全。当您满意时,运行它:

./install-helm.sh

可能会提示您输入密码。提供密码并按 ENTER


helm installed into /usr/local/bin/helm
Run 'helm init' to configure helm.

接下来,我们将通过在集群上安装一些 Helm 组件来完成安装过程。

第 2 步 — 安装 Tiller

Tiller 是 helm 命令的伴侣,运行在您的集群上,接收来自 helm 的命令,并直接与 Kubernetes API 通信来执行创建和删除资源的实际工作。为了给 Tiller 运行在集群上所需的权限,我们将创建一个 Kubernetes serviceaccount 资源。

创建 tiller serviceaccount

kubectl -n kube-system create serviceaccount tiller

接下来,将 tiller serviceaccount 绑定到 cluster-admin 角色:

kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

现在我们可以运行 helm init,它会在我们的集群上安装 Tiller,以及一些本地的日常任务,比如下载 stable 仓库的详细信息:

helm init --service-account tiller

. . .
Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!

要验证 Tiller 是否正在运行,请列出 kube-system 命名空间中的 pods:

kubectl get pods --namespace kube-system

NAME                                    READY     STATUS    RESTARTS   AGE
. . .
kube-dns-64f766c69c-rm9tz               3/3       Running   0          22m
kube-proxy-worker-5884                  1/1       Running   1          21m
kube-proxy-worker-5885                  1/1       Running   1          21m
kubernetes-dashboard-7dd4fc69c8-c4gwk   1/1       Running   0          22m
tiller-deploy-5c688d5f9b-lccsk          1/1       Running   0          40s

Tiller pod 的名称以前缀 tiller-deploy- 开头。

现在我们已经安装了 Helm 的两个组件,准备使用 helm 来安装我们的第一个应用程序。

步骤 3 — 安装 Helm Chart

Helm 软件包被称为 charts。Helm 预先配置了一个经过筛选的 chart 仓库,名为 stable。您可以在他们的 GitHub 仓库中浏览可用的 charts。我们将以安装 Kubernetes 仪表板为例。

使用 helmstable 仓库安装 kubernetes-dashboard 软件包:

helm install stable/kubernetes-dashboard --name dashboard-demo

NAME:   dashboard-demo
LAST DEPLOYED: Wed Aug  8 20:11:07 2018
NAMESPACE: default
STATUS: DEPLOYED. . .

请注意上面示例输出中突出显示的 NAME 行。在这种情况下,我们指定了名称 dashboard-demo。这是我们的 release 的名称。Helm release 是一个具有特定配置的单个 chart 部署。您可以部署同一 chart 的多个 releases,每个 release 都有自己的配置。

如果您不使用 --name 指定自己的 release 名称,Helm 将为您创建一个随机名称。

我们可以询问 Helm 在此集群上的 release 列表:

helm list

NAME           	REVISION	UPDATED                 	STATUS  	CHART                     	NAMESPACE
dashboard-demo	1       	Wed Aug  8 20:11:11 2018	DEPLOYED	kubernetes-dashboard-0.7.1	default

现在我们可以使用 kubectl 验证集群上是否部署了新的服务:

kubectl get services

NAME                                   TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
dashboard-demo-kubernetes-dashboard   ClusterIP   10.32.104.73   <none>        443/TCP   51s
kubernetes                             ClusterIP   10.32.0.1      <none>        443/TCP   34m

请注意,默认情况下,与我们的 release 对应的服务名称是 Helm release 名称和 chart 名称的组合。

现在我们已经部署了应用程序,让我们使用 Helm 更改其配置并更新部署。

步骤 4 — 更新 Release

helm upgrade 命令可用于使用新的或更新的 chart 升级 release,或更新其配置选项。

我们将对我们的 dashboard-demo release 进行简单更改,以演示更新和回滚过程:我们将更新仪表板服务的名称为 dashboard,而不是 dashboard-demo-kubernetes-dashboard

kubernetes-dashboard chart 提供了 fullnameOverride 配置选项来控制服务名称。让我们使用设置了此选项的 helm upgrade 命令:

helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="dashboard"

您将看到类似于初始 helm install 步骤的输出。

检查您的 Kubernetes 服务是否反映了更新后的值:

kubectl get services

NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes             ClusterIP   10.32.0.1       <none>        443/TCP   36m
dashboard              ClusterIP   10.32.198.148   <none>        443/TCP   40s

我们的服务名称已更新为新值。

接下来,我们将研究 Helm 回滚 release 的能力。

步骤 5 — 回滚 Release

在上一步中更新我们的 dashboard-demo release 时,我们创建了第二个 revision。Helm 保留了以前 release 的所有详细信息,以防您需要回滚到先前的配置或 chart。

使用 helm list 再次检查 release:

helm list

NAME           	REVISION	UPDATED                 	STATUS  	CHART                     	NAMESPACE
dashboard-demo	2       	Wed Aug  8 20:13:15 2018	DEPLOYED	kubernetes-dashboard-0.7.1	default

REVISION 列告诉我们这现在是第二个 revision。

使用 helm rollback 回滚到第一个 revision:

helm rollback dashboard-demo 1

您应该会看到以下输出,表示回滚成功:


Rollback was a success! Happy Helming!

此时,如果您再次运行 kubectl get services,您将注意到服务名称已更改回其先前的值。Helm 已使用 revision 1 的配置重新部署了应用程序。

接下来,我们将研究使用 Helm 删除 releases。

步骤 6 — 删除 Release

Helm releases 可以使用 helm delete 命令删除:

helm delete dashboard-demo

release "dashboard-demo" deleted

尽管 release 已被删除,仪表板应用程序不再运行,但 Helm 保存了所有 revision 信息,以防您想要重新部署 release。如果您现在尝试 helm install 一个新的 dashboard-demo release,您将收到错误:

Error: a release named dashboard-demo already exists.

如果您使用 --deleted 标志列出已删除的 releases,您将看到 release 仍然存在:

helm list --deleted

NAME           	REVISION	UPDATED                 	STATUS 	CHART                     	NAMESPACE
dashboard-demo	3       	Wed Aug  8 20:15:21 2018	DELETED	kubernetes-dashboard-0.7.1	default

要真正删除 release 并清除所有旧的 revisions,请使用 helm delete 命令的 --purge 标志:

helm delete dashboard-demo --purge

现在 release 已真正被删除,您可以重用 release 名称。

结论

在本教程中,我们安装了 helm 命令行工具及其 tiller 伴侣服务。我们还探讨了安装、升级、回滚和删除 Helm charts 和 releases。

有关 Helm 和 Helm charts 的更多信息,请参阅官方 Helm 文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542781.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

李宏毅结构化学习 03

文章目录 一、Sequence Labeling 问题概述二、Hidden Markov Model(HMM)三、Conditional Random Field(CRF)四、Structured Perceptron/SVM五、Towards Deep Learning 一、Sequence Labeling 问题概述 二、Hidden Markov Model(HMM) 上图 training data 中的黑色字为x&#xff…

基于单片机的水位检测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;DHT11温湿度检测&#xff0c;水位检测&#xff0c;通过LCD1602显示&#xff0c;超过阈值报警&#xff0c;继电器驱动电机转动。通过矩阵按键切换选择设置各项参数阈值。 …

【Linux】通过内核以太层可查看应用程序运行时访问外网情况

比如&#xff0c;SourceInsight3.exe从外网接收信息&#xff1a; 下边是运行firefox时内核打印的日志&#xff0c;可以看到浏览器运行时调用了很多的操作系统内核系统调用&#xff0c;比如&#xff1a;文件读写、网络数据包的收发等等&#xff0c;其实这些日志还并不全&#x…

基于Ambari搭建hadoop生态圈+Centos7安装教程(还没写完,等明天补充完整)

当我们学习搭建hadoop的时候&#xff0c;未免也会遇见很多繁琐的事情&#xff0c;比如很多错误&#xff0c;需要解决。在以后公司&#xff0c;也不可能让你一个一个搭建hadoop&#xff0c;成千上万的电脑&#xff0c;你再一个个搭建&#xff0c;一个个报错&#xff0c;而且每台…

数据处理与统计分析篇-day08-apply()自定义函数与分组操作

一. 自定义函数 概述 当Pandas自带的API不能满足需求, 例如: 我们需要遍历的对Series中的每一条数据/DataFrame中的一列或一行数据做相同的自定义处理, 就可以使用Apply自定义函数 apply函数可以接收一个自定义函数, 可以将Series对象的逐个值或DataFrame的行/列数据传递给自…

K8s 之微服务的定义及详细资源调用案例

什么是微服务 用控制器来完成集群的工作负载&#xff0c;那么应用如何暴漏出去&#xff1f; 需要通过微服务暴漏出去后才能被访问 Service是一组提供相同服务的Pod对外开放的接口。借助Service&#xff0c;应用可以实现服务发现和负载均衡。service默认只支持4层负载均衡能力&…

OpenCV特征检测(10)检测图像中直线的函数HoughLinesP()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在二值图像中使用概率霍夫变换查找线段。 该函数实现了用于直线检测的概率霍夫变换算法&#xff0c;该算法在文献 181中有所描述。 HoughLines…

JavaEE: 深入探索TCP网络编程的奇妙世界(五)

文章目录 TCP核心机制TCP核心机制六: 拥塞控制为什么要有拥塞控制?动态调整的拥塞控制拥塞控制中,窗口大小具体的变化过程 TCP核心机制七: 延时应答TCP核心机制八: 捎带应答 TCP核心机制 前一篇文章 JavaEE: 深入探索TCP网络编程的奇妙世界(四) 书接上文~ TCP核心机制六: 拥…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布&#xff0c;这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进&#xff0c;其中最引人注目的当属 Parallels …

Python 入门(一、使用 VSCode 开发 Python 环境搭建)

Python 入门第一课 &#xff0c;环境搭建...... by 矜辰所致前言 现在不会 Python &#xff0c;好像不那么合适&#xff0c;咱先不求精通&#xff0c;但也不能不会&#xff0c;话不多说&#xff0c;开干&#xff01; 这是 Python 入门第一课&#xff0c;当然是做好准备工作&a…

计算机毕业设计 校园失物招领网站的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

嵌入式单片机STM32开发板详细制作过程--01

大家好,今天主要给大家分享一下,单片机开发板的制作过程,原理图的制作与PCB设计,以及电子元器件采购与焊接。 第一:单片机开发板成品展示 板子正面都有各个芯片的丝印与标号,方便焊接元器件的时候,可以参考。(焊接完成之后,成品图如下) 第二:开发板原理图制作 在制…

MATLAB中多张fig图合并为一个图

将下列两个图和为一个图 打开查看-----绘图浏览器 点击第一幅图中曲线右键复制&#xff0c;到第二幅图中粘贴即可完成

布草洗涤-酒店分楼层统计报表--———未来之窗行业应用跨平台架构

一、大酒店分层管理 1. 精准管理库存 - 能够清晰了解每个楼层布草的具体数量和状况&#xff0c;实现对布草库存的精细化管理&#xff0c;避免出现某些楼层布草短缺或过剩的情况。 2. 优化资源分配 - 依据各楼层的使用频率和需求差异&#xff0c;合理调配布草资源&…

排序--归并排序

1.什么是归并排序&#xff1f; 归并排序将待排序的数组分成两部分&#xff0c;对每部分递归地应用归并排序&#xff0c;然后将两个有序的子数组合并成一个有序的数组。这个过程一直重复&#xff0c;直到数组完全有序。归并排序的过程可以用一棵完全二叉树来形象地表示&#xf…

frpc内网穿透

官网地址&#xff1a;frp官网 本次用到的Liunx包&#xff1a; https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz下载&#xff1a; wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.g…

申论笔记杉树林

同义词尽量用文章中的词进行拼凑不一定要有前置词分条 单一题 同义词给分不一定需要前置词分条 1、2、3、尽量抄文章中的词&#xff0c;通顺即可&#xff0c;不一定要成句子不要过分关注形式 题干&#xff1a; 条理清晰&#xff1a;要求分条&#xff0c;尽量有提示词…

脱离枯燥的CRUD,灵活使用Mybatis,根据mybatis动态的xml片段和接口规范动态生成代理类,轻松应付简单业务场景。

需求 需求是这样的&#xff0c;我们有一个数据服务平台的产品&#xff0c;用户先将数据源信息保存到平台上&#xff0c;一个数据源可以提供多个接口服务&#xff0c;而每个接口服务在数据库中存一个具有mybatis语法的sql片段。这样的话&#xff0c;对于一些简单的业务只需要编…

c++进阶学习-----继承

1.继承的概念及定义 1.1继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。 继承呈现了面向对象 程序设计的…

006——队列

队列&#xff1a; 一种受限的线性表&#xff08;线性逻辑结构&#xff09;&#xff0c;只允许在一段进行添加操作&#xff0c;在另一端只允许进行删除操作&#xff0c;中间位置不可操作&#xff0c;入队的一端被称为队尾&#xff0c;出队的一端被称为队头&#xff0c;在而我们…