【Helm 及 Chart 快速入门】02、Helm 基本使用

目录

一、Helm 基本使⽤

1.1 搜索 chart 应⽤ 

1.2 部署 chart 应⽤ 

1.3 删除 chart 应⽤

1.4 定制参数部署应⽤

1.5 chart 应⽤升级 

1.6 chart 应⽤回滚 


一、Helm 基本使⽤

1.1 搜索 chart 应⽤ 

使⽤ helm search repo 关键字可以查看相关 charts:

[root@k8s-master1 ~]# helm search repo nginx
[root@k8s-master1 ~]# helm search repo mariadb

1.2 部署 chart 应⽤ 

        部署⼀个 MySQL 5.7 的应⽤(需要提前部署动态存储, nfs-provisionerstorage,参考文章 【云原生 | Kubernetes 实战】13、K8s 常见的存储方案及具体应用场景分析(下)-CSDN博客):

helm install stable/mysql --generate-name \
--set persistence.storageClass="nfs" \
--set mysqlRootPassword=Qwe123456 \
--set livenessProbe.initialDelaySeconds=150 \
--set readinessProbe.initialDelaySeconds=150 \
--namespace default

        由于我们的 Kubernetes 节点硬件配置较差,MySQL 数据库启动的时间相对较 。为了防⽌在数据库还未完全启动成功,探针就开始进⾏健康检查,从⽽造成数据库检测失败⽽导致重启,我们将 initialDelaySeconds 设置为 150 秒。这 样可以确保数据库有⾜够的时间来完成启动过程,从⽽确保数据库能够正常运⾏。

  • livenessProbe:⽤来检查容器是否还在运⾏,如果 livenessProbe 失败, Kubernetes 会杀死容器。

  • readinessProbe:⽤来检查容器是否准备好对外提供服务。只有当 Pod 中所有容器的readinessProbe 都成功时 。

检查部署的应⽤:

[root@k8s-master1 ~]# kubectl get pod -o wide 
NAME                               READY   STATUS    RESTARTS       AGE     IP               NODE        NOMINATED NODE   READINESS GATES
busybox                            1/1     Running   24 (56m ago)   24h     10.244.169.130   k8s-node2   <none>           <none>
mysql-1704769258-b9db9dcd9-hv9gs   1/1     Running   0              3m23s   10.244.169.131   k8s-node2   <none>           <none>
nfs-provisioner-564c9cfbf6-j8dwn   1/1     Running   0              20m     10.244.36.65     k8s-node1   <none>           <none>

访问数据库验证是否部署成功(提前准备好 mysql 客户端):

[root@k8s-master1 ~]# mysql -h 10.244.169.131 -uroot -pQwe123456

1.3 删除 chart 应⽤

        如果需要删除刚才部署的 mysql release ,可以通过 helm uninstall 命令,也可以在卸载时指定 --keep-history 参数,这样后期还可以回滚:

[root@k8s-master1 ~]# helm ls
NAME            	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
mysql-1704769258	default  	1       	2024-01-09 11:01:01.805963829 +0800 CST	deployed	mysql-1.6.9	5.7.30     

# 使⽤ --keep-history 记录 REVISON
[root@k8s-master1 ~]# helm uninstall mysql-1704769258 --keep-history 
release "mysql-1704769258" uninstalled

# 查看历史记录
[root@k8s-master1 ~]# helm history mysql-1704769258 
REVISION	UPDATED                 	STATUS     	CHART      	APP VERSION	DESCRIPTION            
1       	Tue Jan  9 11:01:01 2024	uninstalled	mysql-1.6.9	5.7.30     	Uninstallation complete

[root@k8s-master1 ~]# helm ls
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

# 使⽤ rollback 撤销删除操作(回滚)
[root@k8s-master1 ~]# helm rollback mysql-1704769258 1 
Rollback was a success! Happy Helming!

[root@k8s-master1 ~]# helm ls
NAME            	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
mysql-1704769258	default  	2       	2024-01-09 11:10:02.471047838 +0800 CST	deployed	mysql-1.6.9	5.7.30     

1.4 定制参数部署应⽤

        前⾯我们直接使⽤ helm install 命令安装的 chart 包,通过 --set 进⾏参数传递。但我们如果有很多参数需要调整,使⽤ --set 参数可能会变得⽐较复杂和不易管理。这时,我们可以选择通过⼀个特定的 values.yaml 配置⽂件来传递参数。

准备 values.yaml 值参数⽂件:

# 使用 helm show values 查看可以用到哪些参数
[root@k8s-master1 ~]# helm show values stable/mysql

[root@k8s-master1 ~]# vim values-mysql.yaml
mysqlDatabase: helm
mysqlRootPassword: Qwe123456
persistence:
  enabled: true          # 没有存储卷情况下,改为false
  storageClass: nfs
livenessProbe:
  initialDelaySeconds: 150
readinessProbe:
  initialDelaySeconds: 150

使⽤ -f values.yaml 安装应⽤并覆盖参数:

[root@k8s-master1 ~]# helm install mysql-02 -f values-mysql.yaml stable/mysql

[root@k8s-master1 ~]# helm ls
NAME            	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART      	APP VERSION
mysql-02        	default  	1       	2024-01-09 15:11:36.612666187 +0800 CST	deployed	mysql-1.6.9	5.7.30     
mysql-1704769258	default  	2       	2024-01-09 11:10:02.471047838 +0800 CST	deployed	mysql-1.6.9	5.7.30

查看该 release 传递的参数:

[root@k8s-master1 ~]# helm get values mysql-02 

查看部署的相关资源:

[root@k8s-master1 ~]# kubectl get all -l release=mysql-02

1.5 chart 应⽤升级 

Helm 可以使⽤ helm upgrade 命令来进⾏操作。更新的情况通常包括两种:

  1. 当需要更新或修改已有的 release 的配置时;

  2. 当应⽤的 chart 包有新的版本需要更新时。

        Helm 升级,会尽量将应⽤的影响降到最低。它只会对发⽣改动的部分进⾏更新,⽽不是完全替换整个应⽤,这就是我们所说的 "最⼩侵⼊性" 升级。 

1、升级前先查看当前版本 

查看当前使⽤的镜像版本:mysql:5.7.30

[root@k8s-master1 ~]# kubectl get deployments -o wide -l release=mysql-02
NAME       READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
mysql-02   1/1     1            1           10m   mysql-02     mysql:5.7.30   app=mysql-02,release=mysql-02

2、修改 value.yaml 值⽂件(更新镜像的 tag),然后进⾏升级 

[root@k8s-master1 ~]# cat values-mysql.yaml 
imageTag: "5.7.31"
mysqlDatabase: helm
mysqlRootPassword: Qwe123456
persistence:
  enabled: true          # 没有存储卷情况下,改为false
  storageClass: nfs
livenessProbe:
  initialDelaySeconds: 150
readinessProbe:
  initialDelaySeconds: 150

3、执⾏升级操作

[root@k8s-master1 ~]# helm upgrade mysql-02 -f values-mysql.yaml stable/mysql

4、确认镜像版本是否升级成功

[root@k8s-master1 ~]# kubectl get deployments -o wide -l release=mysql-02
NAME       READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
mysql-02   1/1     1            1           19m   mysql-02     mysql:5.7.31   app=mysql-02,release=mysql-02

5、查看数据库版本进⾏验证

[root@k8s-master1 ~]# kubectl get pods -o wide -l release=mysql-02
NAME                        READY   STATUS    RESTARTS   AGE     IP             NODE        NOMINATED NODE   READINESS GATES
mysql-02-64675c8b68-lhjp9   1/1     Running   0          6m33s   10.244.36.67   k8s-node1   <none>           <none>

[root@k8s-master1 ~]# mysql -h 10.244.36.67 -uroot -pQwe123456 -e "select version();"

1.6 chart 应⽤回滚 

1、查看此前 mysql 的 charts 部署记录 

[root@k8s-master1 ~]# helm history mysql-02 
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Tue Jan  9 15:11:36 2024	superseded	mysql-1.6.9	5.7.30     	Install complete
2       	Tue Jan  9 15:27:14 2024	deployed  	mysql-1.6.9	5.7.30     	Upgrade complete

2、将 mysql 的 chart 回退到 REVISON 版本 1 

[root@k8s-master1 ~]# helm rollback mysql-02 1 

3、验证回滚结果

[root@k8s-master1 ~]# helm history mysql-02 
REVISION	UPDATED                 	STATUS    	CHART      	APP VERSION	DESCRIPTION     
1       	Tue Jan  9 15:11:36 2024	superseded	mysql-1.6.9	5.7.30     	Install complete
2       	Tue Jan  9 15:27:14 2024	superseded	mysql-1.6.9	5.7.30     	Upgrade complete
3       	Tue Jan  9 15:39:00 2024	deployed  	mysql-1.6.9	5.7.30     	Rollback to 1 

 4、查看应⽤的镜像是否回退

[root@k8s-master1 ~]# kubectl get deployments -o wide -l release=mysql-02
NAME       READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR
mysql-02   1/1     1            1           35m   mysql-02     mysql:5.7.30   app=mysql-02,release=mysql-02

上一篇文章:【Helm 及 Chart 快速入门】01、Helm 基本概念及仓库管理-CSDN博客

下一篇文章:【Helm 及 Chart 快速入门】03、Chart 基本介绍-CSDN博客

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stars.Sky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值