K8S.Helm包管理工具

一.认识Helm

每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样。部署一套新的环境成本是真的很高。如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了。Helm就相当于kubernetes环境下的yum包管理工具。

1.1 Helm重要概念

  • chart:是helm的一个程序包。包含了创建Kubernetes的一个应用实例的必要信息

  • repository: charts仓库,http/https服务

  • config:包含了应用发布配置信息

  • release:是一个 chart 及其配置的一个运行实例

1.2 Helm组件

Helm Client 是用户命令行工具,其主要负责如下:

  • 本地 chart 开发

  • 仓库管理

  • 与 Tiller sever 交互

  • 发送预安装的 chart

  • 查询 release 信息

  • 要求升级或卸载已存在的 release

Tiller Server是一个部署在Kubernetes集群内部的 server,其与 Helm client、Kubernetes API server 进行交互。

1.3 Tiller server 主要负责如下:

  • 监听来自 Helm client 的请求

  • 通过 chart 及其配置构建一次发布

  • 安装 chart 到Kubernetes集群,并跟踪随后的发布

  • 通过与Kubernetes交互升级或卸载 chart

  • 简单的说,client 管理 charts,而 server 管理发布 release

1.4架构图如下

二.部署Helm

2.1 安装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

2.2. 安装 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

[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

2.3配置helm仓库

[root@master ~]# helm repo list //查看其仓库信息

NAME URL

stablehttps://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

stablehttps://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"}

2.4测试 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值