Helm 工具安装
一、helm 简介
在 Kubernetes 中部署容器云的应用也是一项有挑战性的工作,Helm 就是为了简化在 Kubernetes 中安装部署容器云应用的一个客户端工具。通过 helm 能够帮助开发者定义、安装和升级 Kubernetes 中的容器云应用,同时也可以通过 helm 进行容器云应用的分享。在 Kubeapps Hub 中提供了包括 Redis、MySQL 和 Jenkins 等常见的应用,通过 helm 可以使用一条命令就能够将其部署安装在自己的 Kubernetes 集群中。
Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:
- 创建新的 charts
- 将 charts 打包成 tgz 文件
- 与 chart 仓库交互
- 安装和卸载 Kubernetes 的应用
- 管理使用 Helm 安装的 charts 的生命周期
二、安装helm
安装 helm 客户端
#wget https://get.helm.sh/helm-v2.14.3-linux-amd64.tar.gz [root@master ~]# wget http://101.34.22.188/k8s/helm-v2.14.3-linux-amd64.tar.gz [root@master ~]# tar zxvf helm-v2.14.3-linux-amd64.tar.gz [root@master ~]# mv linux-amd64/helm /usr/local/bin/ [root@master ~]# chmod +x /usr/local/bin/helm [root@master ~]# echo 'source <(helm completion bash)' >> /etc/profile [root@master ~]# . /etc/profile
安装 Tiller server(需要创建授权用户)
#创建授权用户 [root@master ~]# vim tiller-rbac.yaml 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
[root@master ~]# kubectl apply -f tiller-rbac.yaml [root@master ~]# helm init --service-account=tiller(不成功) [root@master ~]# kubectl get pod -n kube-system | grep tiller 如果没有pod则执行 helm init -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 --stable-repo-url http://mirror.azure.cn/kubernetes/charts/ --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f - [root@master ~]# kubectl edit pod tiller-deploy-8557598fbc-tvfsj -n kube-system //编辑 pod 的 yaml 文件,将其使用的镜像改为国内阿里云的,默认是 Google 的镜像,下载不下来 //修改 spec 字段的 image 指定的镜像如下: image: gcr.io/kubernetes-helm/tiller:v2.14.3 //修改如下: image: registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 //修改后,保存退出即可,它会去自动下载新镜像(如果没有自动下载,就想办法吧,比如说在 tiller 容器所在的节点手动下载下来镜像,然后重启该节点的 kubelet,或重启该容器) 如果还是不成功根据报错解决措施:创建丢失文件,再次执行helm init 即可 [root@master ~]#echo "" > /root/.helm/repository/repositories.yaml [root@master ~]# helm init --service-account=tiller [root@master ~]# kubectl get pod -n kube-system | grep tiller //只要保证 tiller 的 pod 正常运行即可 tiller-deploy-8557598fbc-m986t 1/1 Running 0 7m54s
配置 helm 仓库
[root@master ~]# helm repo list //查看其仓库信息 NAME URL stable https://kubernetes-charts.storage.googleapis.com //如上,默认是 Google,在国外,速度特别慢 local http://127.0.0.1:8879/charts //执行下面命令,更改为国内阿里云的仓库 [root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts [root@master ~]# helm repo list //再次查看,可以发现更改生效了 NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts local http://127.0.0.1:8879/charts [root@master ~]# helm repo update //更新一下 helm 仓库 [root@master ~]# helm version //查看 helm 版本信息,必须保证可以查看出来 client 和 server,才可正常使用 helm Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
测试 helm 是否可以正常使用
[root@master ~]# helm search mysql //搜索 MySQL //查看到的是 charts 包文件,查出来的版本是 helm 的 Charts 包的版本 [root@master ~]# helm inspect stable/mysql //查看其详细信息 [root@master ~]# helm fetch stable/mysql //下载搜索到的包到本地 [root@master templates]# helm install stable/mysql //在线安装这个 MySQL

浙公网安备 33010602011771号