helm的主要功能是封装kubernetes应用,并对应用进行版本管理、依赖管理、升级回滚,方便部署kubernetes应用。通过helm部署kubernetes应用时,实际是将templates渲染成kubernetes能识别的yaml格式的资源描述文件。helm采用c/s架构,由helm cli(客户端)和tiller(服务端,在最新版已经移除)组成,helm cl就是一个可执行文件,方便对应用进行配置、部署、升级和回滚。
核心概念如下:
chart文件结构:
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── pvc.yaml
│ ├── secrets.yaml
│ └── svc.yaml
└── values.yaml
提前安装kubernetes集群后,helm的安装步骤如下:
# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh
# chmod 700 get_helm.sh
# ./get_helm.sh
# kubectl create serviceaccount --namespace kube-system tiller
# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
# helm init --upgrade
# kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
# kubectl -n kube-system get pods|grep tiller
常用命令如下:
release管理:
chart管理:
卸载tiller:
kubectl delete deployment tiller-deploy --namespace kube-system
或者
helm reset
Error: context deadline exceeded
卸载再次安装tiller一般可以解决。
如果安装过程中出现该错误:
Error: no available release name found
一般是tiller没有正确的角色权限导致,执行以下命令解决:
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
若由于某些不能描述的原因导致镜像下载失败,更换国内镜像源就可以了。
LEo at 00:12