k8s之helm管理工具


1.简介

helm是k8s中的一个包管理工具,通过charts(一组yaml文件),来安装,升级,k8s中的程序。类似于Centos中的yum包管理工具

2.三大概念

2.1 charts

charts是一个helm的包,包含k8s集群中运行的应用程序,工具,或者服务所需的所有资源定义

2.2 Repository

存放charts的仓库,类似于Centos中的yum源,不过这个是适用于k8s的软件包

2.3 release

在k8s集群中运行的chart的实例被称为release。

同一个Chart可以安装成多个Release,但是对同一个Release也有可能需要进行多次更新,这是就可以使用到RELEASE NUMBER(也被称为RELEASE VERSION)的概念了。无论是更新还是回滚,每次Release的变化都会导致RELEASE NUMBER的递增。

操作 Release Number
install release 1
upgrade release 2
upgrade release 3
rollback 1 release 4 (虽然是release 4,但是运行的配置和release 1等同)

3. 组成

helm由两个部分组成

3.1 helm client

命令行工具

3.1.1 作用

  • 本地chart的开发
  • 仓库管理
  • 与 Tiller sever 交互
  • 部署、升级、卸载 release

3.2 Tiller server

部署在集群中的一个服务,与helm client 和api-server交互

3.2.1作用

  • 接收helm client 请求
  • 安装chart到集群

4 安装helm

4.1 下载helm client 并解压

下载release版本

wget https://get.helm.sh/helm-v2.16.9-linux-amd64.tar.gz
tar -zxvf helm-v2.16.9-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

4.2 创建tiller,并授权

cat > helm-rabc.yaml <<EOF
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
EOF
kubectl apply -f  helm-rabc.yaml

4.3 安装helm server

helm init --service-account tiller   --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.6 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

4.4 检查是否安装成功

4.4.1报错信息
helm version
Client: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"}
E0701 09:36:25.975087   24523 portforward.go:400] an error occurred forwarding 37857 -> 44134: error forwarding port 44134 to pod 2ebd3e540d81a8fca8e8a5693c42b9c8d5e974b00b7dd663b1339269975a68c1, uid : unable to do port forwarding: socat not found
E0701 09:36:26.977954   24523 portforward.go:400] an error occurred forwarding 37857 -> 44134: error forwarding port 44134 to pod 2ebd3e540d81a8fca8e8a5693c42b9c8d5e974b00b7dd663b1339269975a68c1, uid : unable to do port forwarding: socat not found
E0701 09:36:28.456773   24523 portforward.go:400] an error occurred forwarding 37857 -> 44134: error forwarding port 44134 to pod 2ebd3e540d81a8fca8e8a5693c42b9c8d5e974b00b7dd663b1339269975a68c1, uid : unable to do port forwarding: socat not found
E0701 09:37:01.165354   24523 portforward.go:340] error creating error stream for port 37857 -> 44134: Timeout occured
E0701 09:37:24.867441   24523 portforward.go:362] error creating forwarding stream for port 37857 -> 44134: Timeout occured
E0701 09:37:51.981064   24523 portforward.go:362] error creating forwarding stream for port 37857 -> 44134: Timeout occured

E0701 09:38:24.446395   24523 portforward.go:340] error creating error stream for port 37857 -> 44134: Timeout occured

4.4.2解决

在所有node节点安装socat

yum  -y install socat

helm version
Client: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad7037828e5a0fca1009dabe290130da6368e39", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.16.6", GitCommit:"dd2e5695da88625b190e6b22e9542550ab503a47", GitTreeState:"clean"}

5 参考文献

https://helm.sh/docs/
https://blog.csdn.net/kozazyh/article/details/79537996


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM