helm简介
Helm is the best way to find, share, and use software built forKubernetes.
Helm之于Kubernetes好比yum之于RHEL,或者apt-get之于Ubuntu。Helm使用Chart帮助我们管理应用,Chart就好像RPM一样,里面描述了应用及其依赖关系。
主要概念:
Chart:Helm管理的应用部署包,一个结构相对固定的目录或者tgz压缩文件,Chart之间可相互依赖
Release:Chart部署之后的事例,每一次helm install就会生成一个新的release
HELM安装流程
1. 安装客户端工具helm
下载 Helm 2.6.1(注意需要翻墙):
[root@node01 ~]# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.0-linux-amd64.tar.gz
我csdn资源也有,
网址:https://download.youkuaiyun.com/download/u013289746/10462621
[root@node01 ~]# tar -zxvf helm-v2.7.0-linux-amd64.tgz
[root@node01 ~]# mv linux-amd64/helm /usr/local/bin/helm
[root@node01 ~]# helm version
Client:&version.Version{SemVer:"v2.7.0",GitCommit:"8478fb4fc723885b155c924d1c8c410b7a9444e6",GitTreeState:"clean"}
Error: cannot connect to Tiller
报错为没有tiller server,我们接下来安装tiller;
2. Helm TILLER安装
Helm Tiller是Helm的server,Tiller有多种安装方式,比如本地安装或以pod形式部署到Kubernetes集群中。本文以pod安装为例,安装Tiller的最简单方式是helm init, 该命令会检查helm本地环境设置是否正确,helm init会连接kubectl默认连接的kubernetes集群(可以通过kubectl config view查看),一旦连接集群成功,tiller会被安装到kube-system namespace中
[root@node01 ~]# yum install socat #注意必须在授权之前安装
[root@node01 ~]#helm init --service-account tiller--skip-refresh
注意由于某些原因需要网络可以访问gcr.io和kubernetes-charts.storage.googleapis.com,如果无法访问可以通过helm init –service-accounttiller –tiller-image <your-docker-registry>/tiller:2.7.2 –skip-refresh使用私有镜像仓库中的tiller镜像
也可以使用阿里的服务端tiller,并创建阿里的repo(--upgrade能够保证已经装上tiller server端的情况下进行安装)
[root@node01 ~]# 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
[root@node01 ~]# kubectl get pod -n kube-system -l app=helm
NAME READY STATUS RESTARTS AGE
tiller-deploy-587df449fb-c6tzp 1/1Running09m
3. 权限配置
按照上述方法安装之后执行helm version,会报权限的错误
解决办法:
权限方法1:
创建tiller的serviceaccount
和clusterrolebinding
[root@node01 ~]# kubectl create serviceaccount --namespace kube-system tiller
[root@node01 ~]# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
[root@node01 ~]# kubectl patch deploy --namespace kube-system tiller-deploy -p
'{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
权限方法2Kubernetes RBAC配置
因为我们将tiller部署在Kubernetes 1.8上,Kubernetes APIServer开启了RBAC访问控制,所以我们需要创建tiller使用的service account: tiller并分配合适的角色给它。详细内容可以查看helm文档中的Role-basedAccess Control。这里简单起见直接分配cluster-admin这个集群内置的ClusterRole给它。
创建rbac-config.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
kubectl create -f rbac-config.yaml
serviceaccount "tiller" created
clusterrolebinding "tiller" created
[root@node01 ~]# kubectl -n kube-system get pods|grep tiller
tiller-deploy-2372561459
-f6p0z 1/1 Running 0 1h
[root@node01 ~]# helm version
Client: &version.Version{SemVer:
"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}
Server: &version.Version{SemVer:
"v2.3.1", GitCommit:"32562a3040bb5ca690339b9840b6f60f8ce25da4", GitTreeState:"clean"}
[root@node01 ~]# helm create helm-test
[root@node01 ~]# helm install --dry-run --debug helm-test
[root@node01 ~]# cd helm-test
[root@node01 ~]# helm install .
[root@node01 ~]# $ helm list
常见错误:
1.an error occurred forwarding 41746 -> 44134: error forwarding port44134 to pod a2976f378ae41750ce35ac9b42d2bd0b2cade3c7c7f8b102a5e2ebf7624be5ef,uid : unable to do port forwarding: socat not found.
解决方案:
yum intall socat
2.helm版本的问题
解决方案:
尽量使用较新的版本
具体helm的用法,可以直接输入helm –help来进行查看;
参考网址:
Kubernetes:https://jimmysong.io/kubernetes-handbook/
中文社区:https://www.kubernetes.org.cn/
https://jimmysong.io/kubernetes-handbook/practice/helm.html
https://www.kubernetes.org.cn/tags/helm
http://blog.youkuaiyun.com/weiguang1017/article/details/78045013
https://www.kubernetes.org.cn/3435.html