华为云上安装helm

Helm是Kubernetes生态系统中的一个软件包管理工具.

对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。

除此以外,Helm还提供了kubernetes上的软件部署,删除,升级,回滚应用的强大功能。

Helm概念

  • Helm: Kubernetes的应用打包工具,也是命令行工具的名称。
  • Tiller: Helm的服务端,部署在Kubernetes集群中,用于处理Helm的相关命令。
  • Chart: Helm的打包格式,内部包含了一组相关的kubernetes资源。
  • Repoistory: Helm的软件仓库,repository本质上是一个web服务器,该服务器保存了chart软件包以供下载,并有提供一个该repository的chart包的清单文件以供查询。在使用时,Helm可以对接多个不同的Repository。
  • Release: 使用Helm install命令在Kubernetes集群中安装的Chart称为Release。

下图展示这个概念之间的联系:

华为云上安装

Helm安装

从Github的发布页或者GoogleCloud下载

helm v2.11版本在K8s v1.11.7测试通过

上传到客户端节点后, 解压并将文件拷贝到系统路径之中

1
2
tar -xzvf helm-v2.11.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

Helm初始化

创建一个tiller的service_account: tiller_service_account.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system

创建角色

1
kubectl create -f tiller_service_account.yaml

Helm初始化

1
2
3
helm init --service-account tiller --skip-refresh
## 更新镜像地址, 最好你从官网下载到tiller镜像, 再将镜像传入到华为云的SWR, 此处填写SWR地址
helm init --tiller-image swr.cn-north-1.myhuaweicloud.com/hzw/tiller:v2.11.0 --upgrade

docker tag registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.11.0 swr.cn-north-1.myhuaweicloud.com/hzw/tiller:v2.11.0

执行helm version查看结果, 发现Error: could not find a ready tiller pod错误

查找原因

1
2
3
kubectl get pod --all-namespaces|grep tiller
# 如果没找到pod, 说明前面的步骤还有问题
kubectl describe pod $Pod_Name -n kube-system

发现问题还是Error: ImagePullBackOff

问题和之前一样, 华为云的k8s拉取镜像需要imagePullSecret

编辑tiller-deploy

1
kubectl edit deploy tiller-deploy -n kube-system

将以下内容加入到对应的模块之中

1
2
3
4
5
spec:
template:
spec:
imagePullSecrets:
- name: default-secret

过段时间之后,发现tiller已经正常

1
2
[root@/home]# kubectl get pod -n kube-system|grep tiller
tiller-deploy-759d874f-4dgmv 1/1 Running 0 56m

Helm安装和初始化工作已经完成

1
2
3
[root@gpu-01-client volcano]# helm version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

参考说明

安装指南

华为云官网指南

Helm介绍