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
创建应用。