Kubernetes K8S之Helm部署、使用、常见操作与示例
主机配置规划
服务器名称(hostname) | 系统版本 | 配置 | 内网IP | 外网IP(模拟) |
---|---|---|---|---|
k8s-master | CentOS7.7 | 2C/4G/20G | 172.16.1.110 | 10.0.0.110 |
k8s-node01 | CentOS7.7 | 2C/4G/20G | 172.16.1.111 | 10.0.0.111 |
k8s-node02 | CentOS7.7 | 2C/4G/20G | 172.16.1.112 | 10.0.0.112 |
Helm是什么
没有使用Helm之前,在Kubernetes部署应用,我们要依次部署deployment、service等,步骤比较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂。
helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理。
Helm本质就是让k8s的应用管理(Deployment、Service等)可配置,能动态生成。通过动态生成K8S资源清单文件(deployment.yaml、service.yaml)。然后kubectl自动调用K8S资源部署。
Helm是官方提供类似于YUM的包管理,是部署环境的流程封装,Helm有三个重要的概念:chart、release和Repository
- chart是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等。可以将chart想象成apt、yum中的软件安装包。
- release是chart的运行实例,代表一个正在运行的应用。当chart被安装到Kubernetes集群,就生成一个release。chart能多次安装到同一个集群,每次安装都是一个release【根据chart赋值不同,完全可以部署出多个release出来】。
- Repository用于发布和存储 Chart 的存储库。
Helm包含两个组件:Helm客户端和Tiller服务端,如下图所示:
Helm 客户端负责 chart 和 release 的创建和管理以及和 Tiller 的交互。Tiller 服务端运行在 Kubernetes 集群中,它会处理Helm客户端的请求,与 Kubernetes API Server 交互。
Helm部署
现在越来越多的公司和团队开始使用Helm这个Kubernetes的包管理器,我们也会使用Helm安装Kubernetes的常用组件。Helm由客户端命令helm工具和服务端tiller组成。
helm的GitHub地址
1 | https://github.com/helm/helm |
本次部署版本
Helm安装部署
1 | [root@k8s-master software]# pwd |
因为Kubernetes API Server开启了RBAC访问控制,所以需要创建tiller的service account:tiller并分配合适的角色给它。这里为了简单起见我们直接分配cluster-admin这个集群内置的ClusterRole给它。
1 | [root@k8s-master helm]# pwd |
初始化Helm的client 和 server
1 | [root@k8s-master helm]# helm init --service-account tiller |
由上可见,镜像下载失败。原因是镜像在国外,因此这里需要修改镜像地址
1 | [root@k8s-master helm]# helm init --upgrade --tiller-image registry.cn-beijing.aliyuncs.com/google_registry/tiller:v2.16.9 |
由上可见,Helm服务端tiller部署成功
helm版本信息查看
1 | [root@k8s-master helm]# helm version |
Helm使用
helm源地址
helm默认使用的charts源地址
1 | [root@k8s-master helm]# helm repo list |
改变helm源【是否改变helm源,根据实际情况而定,一般不需要修改】
1 | helm repo remove stable |
helm安装包下载存放位置
1 | /root/.helm/cache/archive |
helm常见应用操作
1 | # 列出charts仓库中所有可用的应用 |
helm常用命令
chart管理
1 | create:根据给定的name创建一个新chart |
release管理
1 | get:下载一个release |
helm常见操作
1 | # 添加仓库 |
上述操作可结合下文示例,这样能看到更多细节。
helm示例
chart文件信息
1 | [root@k8s-master helm]# pwd |
生成release
1 | [root@k8s-master my-test-app]# pwd |
curl访问
1 | [root@k8s-master ~]# kubectl get pod -o wide |
chart更新
values.yaml文件修改
1 | [root@k8s-master my-test-app]# pwd |
重新release发布
1 | [root@k8s-master my-test-app]# helm list |
curl访问,可参见上面。可见app version已从v2改为了v3。
相关阅读
1、Helm官网地址
完毕!