Kubernetes之Helm及其它功能性组件
1、Helm简介
在没使用
Helm之前,向K8S部署应用,我们要依次部署deployment、svc等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,Helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了K8S应用的部署和管理。Helm本质就是让K8S的应用管理(Deployment、Service等 ) 可配置,能动态生成。通过动态生成K8S资源清单文件(deployment.yaml,service.yaml)。然后调用Kubectl自动执行K8S资源部署。Helm是官方提供的类似于YUM的包管理器,是部署环境的流程封装。Helm有两个重要的概念:chart和release:chart是创建一个应用的信息集合,包括各种Kubernetes对象的配置模板、参数定义、依赖关系、文档说明等。chart是应用部署的自包含逻辑单元。可以将chart想象成apt、yum中的软件安装包。release是chart的运行实例,代表了一个正在运行的应用。当chart被安装到Kubernetes集群,就生成一个release。chart能够多次安装到同一个集群,每次安装都是一个release。
Helm包含两个组件:Helm客户端和Tiller服务器,如下图所示:
Helm客户端负责chart和release的创建和管理以及和Tiller的交互。Tiller服务器运行在K8S集群中,它会处理Helm客户端的请求,与Kubernetes API Server交互。
2、Helm部署
①下载
helm客户端:1
2
3
4
5
6
7
8
9[root@master helm]# wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz
[root@master helm]# tar -zxvf helm-v3.3.4-linux-amd64.tar.gz && cp linux-amd64/helm /usr/local/bin/
linux-amd64/
linux-amd64/README.md
linux-amd64/LICENSE
linux-amd64/helm
[root@master helm]# chmod a+x /usr/local/bin/helm
[root@master helm]# helm version
version.BuildInfo{Version:"v3.3.4", GitCommit:"a61ce5633af99708171414353ed49547cf05013d", GitTreeState:"clean", GoVersion:"go1.14.9"}②添加helm存储库。
1
2
3
4
5
6
7
8
9
10[root@master helm]# helm repo add stable https://apphub.aliyuncs.com/stable
"stable" has been added to your repositories
[root@master helm]# helm repo list
NAME URL
stable https://apphub.aliyuncs.com/stable
[root@master helm]# helm search repo redis
NAME CHART VERSION APP VERSION DESCRIPTION
stable/prometheus-redis-exporter 3.5.0 1.3.4 Prometheus exporter for Redis metrics
stable/redis 10.5.7 5.0.7 DEPRECATED Open source, advanced key-value stor...
stable/redis-ha 4.4.6 5.0.6 DEPRECATED - Highly available Kubernetes implem...
3、Helm自定义模板
1 | [root@master helm]# mkdir test |
4、使用Helm部署dashboard
1 | # 使用代理服务器下载dashboard镜像并上传到工作节点 |
5、使用dashboard部署应用
浏览器访问
https://192.168.200.20:32212/#!/login即可进入dashboard操作界面,并登录。
查询令牌命令为:
1
2
3[root@master kubernetes-dashboard]# kubectl get secret | grep kubernetes-dashboard-token
kubernetes-dashboard-token-mb8g7 kubernetes.io/service-account-token 3 11m
[root@master kubernetes-dashboard]# kubectl describe secret kubernetes-dashboard-token-mb8g7
创建应用。
![]()
