千家信息网

Kubernetes中如何安装Helm2.7.2

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍Kubernetes中如何安装Helm2.7.2,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理
千家信息网最后更新 2026年11月01日Kubernetes中如何安装Helm2.7.2

这篇文章主要介绍Kubernetes中如何安装Helm2.7.2,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。本文将介绍Helm的基本概念和使用方式,演示在阿里云的Kubenetes集群上利用 Helm 来部署应用。

Helm 是由 Deis 发起的一个开源工具,有助于简化部署和管理 Kubernetes 应用。

Helm 基本概念

Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现、共享和使用为Kubernetes构建的应用,它包含几个基本概念

  • Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula,APT 的 dpkg 或者 Yum 的 rpm 文件,

  • Release: 在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。

  • Repository:用于发布和存储 Chart 的仓库。

Helm 组件

Helm 采用客户端/服务器架构,有如下组件组成:

  • Helm CLI 是 Helm 客户端,可以在本地执行

  • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管理 Kubernetes 应用程序的生命周期

  • Repository 是 Chart 仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。

15019325767895

安装Helm

Helm Client安装过程如下:

  1. 下载 Helm 2.7.2:https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz
    下载不了我上传一份到百度网盘:https://pan.baidu.com/s/1pLPzVS3

  2. 解包:tar -zxvf helm-v2.7.2-linux-amd64.tgz

  3. helm二进制文件移到/usr/local/bin目录:

    mv linux-amd64/helm /usr/local/bin/helm


安装好 Helm 后,通过键入如下命令,在 Kubernetes 群集上安装 Tiller:

helm init --upgrade

在缺省配置下, Helm 会利用 "gcr.io/kubernetes-helm/tiller" 镜像在Kubernetes集群上安装配置 Tiller;并且利用 "https://kubernetes-charts.storage.googleapis.com" 作为缺省的 stable repository 的地址。由于在国内可能无法访问 "gcr.io", "storage.googleapis.com" 等域名,阿里云容器服务为此提供了镜像站点。

请执行如下命令利用阿里云的镜像来配置 Helm

helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.7.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

安装成功完成后,将看到如下输出:

$ helm init --upgrade$HELM_HOME has been configured at /root/.helm.Tiller (the helm server side component) has been installed into your Kubernetes Cluster.Happy Helming!

Helm 基础操作

若要查看在存储库中可用的所有 Helm charts,请键入以下命令:

helm search

将看到如下输出:

[root@cz_fbsdb500_06 templates]# helm searchNAME                               VERSION DESCRIPTION                                       local/mychart                   0.1.0         A Helm chart for Kubernetes                       stable/acs-engine-autoscaler       2.1.0         Scales worker nodes within agent pools            stable/artifactory               6.1.0         Universal Repository Manager supporting all maj...stable/aws-cluster-autoscaler   0.3.1         Scales worker nodes within autoscaling groups.    stable/buildkite               0.2.0         Agent for Buildkite                               stable/centrifugo                   2.0.0         Centrifugo is a real-time messaging server.       stable/chaoskube               0.5.0         Chaoskube periodically kills random pods in you...stable/chronograf                   0.3.0         Open-source web application written in Go and R......

若要更新charts列表以获取最新版本,请键入:

helm repo update

若要查看在群集上安装的Charts列表,请键入:

helm list

备注:kubernetes每个node一定要执行,否则会报连不上44134端口

yum install socat -y

自Kubernetes 1.6版本开始,API Server启用了RBAC授权。而目前的Tiller部署没有定义授权的ServiceAccount,这会导致访问API Server时被拒绝。我们可以采用如下方法,明确为Tiller部署添加授权。

kubectl create serviceaccount --namespace kube-system tillerkubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tillerkubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

检查是否安装成功:

[root@cz_fbsdb500_06 tmp]# kubectl -n kube-system get pods|grep tillertiller-deploy-3366552617-sfw20          1/1       Running   0          14h[root@cz_fbsdb500_06 tmp]# helm versionClient: &version.Version{SemVer:"v2.7.2", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}Server: &version.Version{SemVer:"v2.7.2", GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6", GitTreeState:"clean"}

至此helm已经搭建成功,我们进行部署测试。

创建chart

我们创建一个名为mychart的chart,看一看chart的文件结构。

[root@cz_fbsdb500_06 chart_data]# helm create mychartCreating mychart[root@cz_fbsdb500_06 chart_data]# tree mychartmychart├── charts├── Chart.yaml├── templates│   ├── deployment.yaml│   ├── _helpers.tpl│   ├── ingress.yaml│   ├── NOTES.txt│   └── service.yaml└── values.yaml2 directories, 7 files

模板

Templates目录下是yaml文件的模板,遵循Go template语法。使用过Hugo的静态网站生成工具的人应该对此很熟悉。

我们查看下deployment.yaml文件的内容。

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: {{ template "fullname" . }}  labels:    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"spec:  replicas: {{ .Values.replicaCount }}  template:    metadata:      labels:        app: {{ template "fullname" . }}    spec:      containers:      - name: {{ .Chart.Name }}        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"        imagePullPolicy: {{ .Values.image.pullPolicy }}        ports:        - containerPort: {{ .Values.service.internalPort }}        livenessProbe:          httpGet:            path: /            port: {{ .Values.service.internalPort }}        readinessProbe:          httpGet:            path: /            port: {{ .Values.service.internalPort }}        resources:{{ toYaml .Values.resources | indent 12 }}

这是该应用的Deployment的yaml配置文件,其中的双大括号包扩起来的部分是Go template,其中的Values是在values.yaml文件中定义的:

# Default values for mychart.# This is a YAML-formatted file.# Declare variables to be passed into your templates.replicaCount: 1image:  repository: nginx  tag: stable  pullPolicy: IfNotPresentservice:  name: nginx  type: ClusterIP  externalPort: 80  internalPort: 80resources:  limits:    cpu: 100m    memory: 128Mi  requests:    cpu: 100m    memory: 128Mi

比如在Deployment.yaml中定义的容器镜像image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"其中的:

  • .Values.image.repository就是nginx

  • .Values.image.tag就是stable

以上两个变量值是在create chart的时候自动生成的默认值。

我们将默认的镜像地址和tag改成我们自己的镜像

10.0.0.162/library/nginx:1.9

检查配置和模板是否有效

[root@cz_fbsdb500_06 chart_data]# helm install --dry-run --debug mychart[debug] Created tunnel using local port: '39156'[debug] SERVER: "127.0.0.1:39156"[debug] Original chart version: ""[debug] CHART PATH: /tmp/chart_data/mychartNAME:   ardent-otterREVISION: 1RELEASED: Fri Dec 22 10:31:45 2017CHART: mychart-0.1.0USER-SUPPLIED VALUES:{}COMPUTED VALUES:image:  pullPolicy: IfNotPresent  repository: nginx  tag: stableingress:  annotations: null  enabled: false  hosts:  - chart-example.local  tls: nullreplicaCount: 1resources: {}service:  externalPort: 80  internalPort: 80  name: nginx  type: ClusterIPHOOKS:MANIFEST:---# Source: mychart/templates/service.yamlapiVersion: v1kind: Servicemetadata:  name: ardent-otter-mychart  labels:    app: mychart    chart: mychart-0.1.0    release: ardent-otter    heritage: Tillerspec:  type: ClusterIP  ports:    - port: 80      targetPort: 80      protocol: TCP      name: nginx  selector:    app: mychart    release: ardent-otter---# Source: mychart/templates/deployment.yamlapiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: ardent-otter-mychart  labels:    app: mychart    chart: mychart-0.1.0    release: ardent-otter    heritage: Tillerspec:  replicas: 1  template:    metadata:      labels:        app: mychart        release: ardent-otter    spec:      containers:        - name: mychart          image: "10.0.0.162/library/nginx:1.9"          imagePullPolicy: IfNotPresent          ports:            - containerPort: 80          livenessProbe:            httpGet:              path: /              port: 80          readinessProbe:            httpGet:              path: /              port: 80          resources:            {}

部署到kubernetes

在mychart目录下执行下面的命令将nginx部署到kubernetes集群上.

[root@cz_fbsdb500_06 mychart]# helm install .

现在nginx已经部署到kubernetes集群上,本地执行提示中的命令在本地主机上访问到nginx实例。

[root@cz_fbsdb500_06 mychart]# helm listNAME                    REVISION        UPDATED                    STATUS        CHART            NAMESPACE wishful-alpaca            1            Fri Dec 22 09:28:07 2017    DEPLOYED        mychart-0.1.0    default  wordpress-test            1            Thu Dec 21 20:05:03 2017    DEPLOYED        wordpress-0.6.13        default

打包分享

我们可以修改Chart.yaml中的helm chart配置信息,然后使用下列命令将chart打包成一个压缩文件。

helm package .

打包出mychart-0.1.0.tgz文件。

安装源

我们在前面安装chart可以通过HTTP server的方式提供。

[root@cz_fbsdb500_06 mychart]# helm serve --address 0.0.0.0:8879Regenerating index. This may take a moment.Now serving you on 0.0.0.0:8879

以上是"Kubernetes中如何安装Helm2.7.2"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

文件 镜像 集群 应用 命令 配置 服务 工具 管理 运行 成功 仓库 内容 客户 客户端 服务器 概念 模板 目录 组件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 北京互联网科技公司 互联网的科技创新 新浪科技互联网 互联网公司会议桌创意科技软装饰 中国最先进互联网科技公司 西藏七维空间互联网科技有限公司 栖莱科技互联网股份有限公司 注册互联网科技公司经营范围大全 互联网科技如何创业 广州富喜互联网络科技 上海创道互联网络科技有限公司 郑州欣桑互联网科技有限公司 悟空问答互联网科技 唐山双旺合互联网科技产业园 绵阳真晨互联网科技有限公司 三亚科技创新互联网基地 重庆科技产业互联网有哪些 互联网科技创新方面的资料 互联网高科技绘画 瑰夏咖啡 精品咖啡豆 深圳九邦互联网科技有限公司 科技创新互联网企业 睿民互联网科技 厦门比较好的科技互联网公司 荆州市昕露互联网络科技有限公司 恒生互联网科技业指数调整周期 互联网公司高科技产品 信承诺互联网科技有限公司
0