目录
2.2 安装 Tiller server(需要创建授权用户)
在 Kubernetes 中部署容器云的应用也是一项有挑战性的工作,Helm 就是为了简化在 Kubernetes 中安装部署容器云应用的一个客户端工具。通过 helm 能够帮助开发者定义、安装和升级 Kubernetes 中的容器云应用,同时也可以通过 helm 进行容器云应用的分享。在 Kubeapps Hub 中提供了包括 Redis、MySQL 和 Jenkins 等常见的应用,通过 helm 可以使用一条命令就能够将其部署安装在自己的 Kubernetes 集群中。
Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:
Helm 架构由 Helm 客户端、Tiller 服务器端和 Chart 仓库所组成;Tiller 部署在 Kubernetes 中,Helm 客户端从 Chart 仓库中获取 Chart 安装包,并将其安装部署到 Kubernetes 集群中。
在 Helm 中有两个主要的组件,即 Helm 客户端和 Tiller 服务器
是一个供终端用户使用的命令行工具
客户端负责如下的工作:
Tiller 是 helm 的服务器端,一般运行于 kubernetes 集群之上,定义 tiller 的 ServiceAccount,并通过 ClusterRoleBinding 将其绑定至集群管理员角色 cluster-admin,从而使得它拥有集群级别所有的最高权限
Tiller 服务器负责如下的工作:
- #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
- #创建授权用户
- [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
- [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,或重启该容器)
- [root@master ~]# kubectl get pod -n kube-system | grep tiller
- //只要保证 tiller 的 pod 正常运行即可
- tiller-deploy-8557598fbc-m986t 1/1 Running 0 7m54s
- [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"}
- [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