【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          # 没有存储卷情况下,改为falsestorageClass: 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          # 没有存储卷情况下,改为falsestorageClass: 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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的在线电影票购买系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的在线电影票购买系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

mysql基础-常用函数汇总

目录 1. 查询技巧 2. 时间函数 2.1 now() 2.2 current_date() 2.3 时间差timestampdiff&#xff08;&#xff09;与datediff&#xff08;&#xff09; 2.4 其他时间函数 3. 字符函数 3.1 截取函数 3.2 分割函数 3.3 left与right函数 3.4 其他函数 4. 数字函数 5. …

Java web设计:在线微友圈网站

项目背景 微友圈是一个基于Java Web开发的社交网络平台&#xff0c;旨在为用户提供一个轻松互动、分享生活和交流观点的在线社区。随着社交网络的普及&#xff0c;人们更加渴望与朋友、家人以及其他志同道合的人保持联系并分享彼此的生活点滴。微友圈的目标是打造一个简洁、高…

string的模拟实现

string的模拟实现 msvc和g下的string内存比较成员变量构造函数与析构函数拷贝构造函数赋值拷贝c_str、size和capacity函数以及重载[]、clear、expand_capacity迭代器与遍历reservepush_back、append、insert字符串比较运算符erase<<流提取 >>流插入resizefindsubst…

RabbitMQ发布确认

1.单个确认 单个确认发布是一种同步确认发布方式&#xff0c;也就是发布一个消息后只有它被确认发布&#xff0c;后续的消息才能继续发布。 缺点:发布速度特别慢,因为若是没有确认发布的消息会阻塞所有后续消息的发布 package com.hong.rabbitmq5;import com.hong.utils.Rabb…

mac怎么拼图?Mac拼图技巧分享

mac怎么拼图&#xff1f;在Mac上拼图是一种令人愉悦的创意表达方式&#xff0c;可以让你将多张图片巧妙地融合在一起&#xff0c;创造出令人惊叹的艺术品。本文将向你介绍在Mac上进行拼图的几种方法&#xff0c;帮助你轻松实现这一目标。 一、使用Mac内置的预览功能进行拼图 M…

freeRTOS总结(三)任务挂起和恢复

1&#xff0c;任务的挂起与恢复的API函数&#xff08;熟悉&#xff09; 任务挂起和恢复的区别 挂起还能被恢复&#xff0c;删除任务后无法恢复。 带FromISR后缀是在中断函数中专用的API函数 1.1任务挂起函数介绍 void vTaskSuspend(TaskHandle_t xTaskToSuspend) xTaskToSusp…

在黑马程序员大学的2023年终总结

起笔 时间真快&#xff0c;转眼又是年末。是时候给2023做个年终总结了&#xff0c;为这一年的学习、生活以及成长画上一个圆满的句号。 这一年相比去年经历了很多事情&#xff0c;接下来我会一一说起 全文大概4000字&#xff0c;可能会占用你15分钟左右的时间 经历 先来给大…

Excel中快速隐藏中间四位手机号或者身份证号等

注意&#xff1a;以下方式必须再新增一列&#xff0c;配合旧的一列用来对比操作&#xff0c;即根据旧的一列的数据源&#xff0c;通过新的一列的操作逻辑来生成新的隐藏数据 1、快捷方式是使用CtrlE 新建一列&#xff1a;手动输入第一个手机号隐藏后的号码&#xff0c;即在N2单…

k8s的集群调度:

k8s的集群调度&#xff1a; Scheduler:负责调度资源&#xff0c;把pod调度到node节点 预算策略 优先策略 list-watch k8s集群当中&#xff0c;通过list-watch的机制进行每个组件的协作&#xff0c;保持数据同步&#xff0c;每个组件之间的解耦 Kubectl配置文件&#xff0c…

关于burpsuite对app(移动端)进行抓包的配置

可以使用手机模拟器&#xff0c;我这里以自己手机&#xff08;物理机&#xff09;演示配置过程 如果是使用的模拟器那么肯定和电脑是在同一局域网 如果使用物理机&#xff0c;那么可以通过连接同一WiFi确保在同一局域网环境下 查看电脑内网ip&#xff1a;192.168.1.105 &am…

人工智能会造成人类失业吗?

科技革命的目的是为了提高人们生活水平和质量&#xff0c;而人工智能却取代了越来越多的职业&#xff0c;造成了人们的失业&#xff0c;这和科技革命的宗旨不是相矛盾了吗&#xff1f;&#xff01;&#xff01; 人工智能通过融合“数据、算力和算法”的力量&#xff0c;对人类…

1879_什么是丝印

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1873_什么是丝印 丝印这个词…

基于springboot在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通过互…

ChatGPT:让产品经理工作更高效的AI助手

近年来&#xff0c;人工智能技术在各个领域得到了广泛应用&#xff0c;其中包括产品经理日常工作中的自然语言处理&#xff08;NLP&#xff09;。而ChatGPT是一款最新的NLP模型&#xff0c;它已经成为产品经理在日常工作中的得力助手。本文将详细介绍ChatGPT在产品经理日常工作…

归并排序-排序算法

前言 如果一个数组的左右区间都有序&#xff0c;我们可以使用一种方法&#xff08;归并&#xff09;&#xff0c;使这个数组变得有序。 如下图&#xff1a; 过程也很简单&#xff0c;分别取左右区间中的最小元素&#xff0c;再把其中较小的元素放到临时数组中&#xff0c;例如…

Python书籍推荐,建议收藏

学习Python的书籍可太多了&#xff0c;从入门到放弃&#xff0c;应有尽有啊 入门书籍 根据豆瓣评分的高低&#xff0c;这里介绍了一些经典入门书籍&#xff0c;大家根据自身情况选择尝试 《Python编程&#xff1a;从入门到实践&#xff08;第二版&#xff09;》 非常经典且非…

14 简约登录页

效果演示 实现了一个简单的登录表单的样式&#xff0c;包括背景颜色、边框、字体颜色、字体大小、字体粗细、输入框样式、提交按钮样式等。当用户在输入框中输入内容时&#xff0c;输入框下方的提示文字会动态地变化&#xff0c;以提示用户输入正确的信息。当用户点击提交按钮时…

使用SpirngBoot时部分编译报错解决方案:

1. 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图&#xff1a; 解决方案&#xff1a; 找到springboot的java版本看是多少版本&#xff0c;springboot 3.0以上的版本需要最低JDK17的版本&#xff0c;所以查看你自己…

Vue3插件开发教程:步步指导如何编写Vue3插件

关注⬆️⬆️⬆️⬆️ 专栏后期更新更多前端内容 文章目录 Vue3 插件插件注册形式插件主要的场景使用插件Vue3 插件 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 插件注册形式 一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。 i…