【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博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构之二叉搜索树(Binary Search Tree)

数据结构可视化演示链接&#xff0c;也就是图片演示的网址 系列文章目录 数据结构之AVL Tree 数据结构之B树和B树 数据结构之Radix和Trie 文章目录 系列文章目录示例图定义二叉搜索树满足的条件应用场景 示例图 二叉 线形(顺序插入就变成了线性树&#xff0c;例如插入顺序为&…

安卓逆向某脚本-autojs逆向

引言 上次讲到,为了静态分析,逆向了所有加密字符串。来看下今天我们看下他的流程。 分析app 启动之后会出现一个更新按钮,如图:我们先看下一般autojs 项目是怎么打包的,打包的时候可以选择加密类型,选择dex 类型,然后就是把js 文件变成dex 。 我们先看下一般autojs 项目是…

用html和css实现一个加载页面【究极简单】

要创建一个简单的加载页面&#xff0c;你可以使用 HTML 和 CSS 来设计。以下是一个基本的加载页面示例&#xff1a; HTML 文件 (index.html): <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…

scVI与MultiVI

scVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/scvi.html MultiVI&#xff1a;https://docs.scvi-tools.org/en/stable/user_guide/models/multivi.html 目录 scVI生成推理任务 MultiVI生成推理 scVI single cell variational inference提出了一个…

JVM工作原理与实战(十一):双亲委派机制

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、双亲委派机制 1.双亲委派机制详解 2.父类加载器 3.双亲委派机制的主要作用 二、双亲委派机制常见问题 总结 前言 ​JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字…

【漏洞复现】ActiveMQ文件上传漏洞(CVE-2016-3088)

Nx01 产品简介 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件。ActiveMQ是消息队列服务&#xff0c;是面向消息中间件&#xff08;MOM&#xff09;的最终实现&#xff0c;它为企业消息传递提供高可用、出色性能、可扩展、稳定和安全保障。 Nx02 漏洞描述 Ap…

Mars3D与mars3d-cesium版本间兼容造成3dtiles和gltf数据处理相关记录

说明&#xff1a; 1.在引入Mars3D SDK后正常可以在F12打印的信息中可以看到Mars3D和Cesium版本信息。 2.在项目的package.json文件中同样可以看到安装后的版本号。 Mars3D对Cesium版本对应关系&#xff1a; 1.正常情况下mars3d依赖的cesium均是最新版本&#xff0c;并且对cesi…

如何将Redis、Zookeeper、Nacos配置为Windows系统的一个服务

说明&#xff1a;当我们在Windows上开发时&#xff0c;不可避免的会用到一些中间件&#xff0c;如Redis、Zookeeper、Nacos等等&#xff0c;当在项目中使用到本地的这些服务器时&#xff0c;我们需要把本地的服务器启动&#xff0c;会开启下面这样的一个窗口。 Redis服务器&am…

npm i sass -D的含义

命令 npm i sass -D 是一个在Node.js项目中使用npm&#xff08;Node Package Manager&#xff09;安装Sass预处理器的命令。这个命令的各个部分含义如下&#xff1a; npm: 这是Node Package Manager的缩写&#xff0c;一个用于Node.js的包管理和分发工具&#xff0c;允许开发者…

78.乐理基础-非常见拍号如何打拍子

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;76.乐理基础-打拍子-二连音、四连音-CSDN博客 非常见的拍子就是下图中除了红圈里的五个拍号的拍号 最大优先级的规则&#xff1a; 规则一&#xff1a;所有的拍号绝对&#xff0c;永远都可以以一拍为单位&#xff0…

[论文精读]Brain Network Transformer

论文网址&#xff1a;[2210.06681] Brain Network Transformer (arxiv.org) 论文代码&#xff1a;GitHub - Wayfear/BrainNetworkTransformer: The open-source implementation of the NeurIPS 2022 paper Brain Network Transformer. 英文是纯手打的&#xff01;论文原文的s…

001 Golang-channel-practice

最近在练习并发编程。加上最近也在用Golang写代码&#xff0c;所以记录一下练习的题目。 第一道题目是用10个协程打印100条信息&#xff0c;创建10个协程。每个协程都会有自己的编号。每个协程都会被打印10次。 package mainimport ("fmt""strconv" )func …

如何在iOS手机上查看应用日志

引言 在开发iOS应用过程中&#xff0c;查看应用日志是非常重要的一项工作。通过查看日志&#xff0c;我们可以了解应用程序运行时的状态和错误信息&#xff0c;帮助我们进行调试和排查问题。本文将介绍两种方法来查看iOS手机上的应用日志&#xff0c;并提供相应的操作步骤。 …

Hyperledger Fabric 消息协议

Fabric 中大量采用了 gRPC 消息在不同组件之间进行通信交互&#xff0c;主要包括如下几种情况&#xff1a;客户端访问 Peer 节点&#xff0c;客户端和 Peer 节点访问排序节点&#xff0c;链码容器与 Peer 节点交互&#xff0c;以及多个 Peer 节点之间的 Gossip 交互。 消息结构…

工业企业-专利引用、被引用数据(1985-2019年)

工业企业的专利引用和被引用数据提供了关于这些企业创新活动和技术影响力的信息。专利引用数据指的是工业企业在申请专利时引用的既有专利数量&#xff0c;这反映了企业在研发过程中对现有技术的依赖和融合。被引用数据则指其他后续专利对这些企业专利的引用次数&#xff0c;这…

控制el-table的列显示隐藏

控制el-table的列显示隐藏&#xff0c;一般的话可以通过循环来实现&#xff0c;但是假如业务及页面比较复杂的话&#xff0c;list数组循环并不好用。 在我们的页面中el-table-column是固定的&#xff0c;因为现在是对现有的进行维护和迭代更新。 对需要控制列显示隐藏的页面进…

SpringBoot 集成WebSocket详解

一、WebSocket概述 1、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2、为什么需要WebSocket HTTP 是基于请求响应式的&#xff0c;即通信只能由客户端发起&#xff0c;服…

mybatis(动态sql及分页)

mybatis-动态sql及分页 1. 动态sql简述2. 动态sql示例2.1 if2.2 choose2.3 foreach2.4 sql 及 include2.5 sql中的特殊字符 3. 后台分页实现4. 数据版本号处理并发问题 1. 动态sql简述 mybatis的动态sql语句是基于OGNL表达式的。可以方便的在sql语句中实现某些逻辑. 总体说来m…

Vue 封装的 axios 类的使用(小bug 改进)

http类 import { baseUrl } from "./config"; //引入config.js中的配置 import axios from "axios"; //引入axios import qs from "querystringify"; //form-Data请求时的工具类class Http{axios null;lastRequestIntercept null…

Android BUG 之 Error: Activity class {} does not exist

项目场景&#xff1a; 更换包名&#xff0c;运行报错 问题描述 原因分析&#xff1a; 在替换包名的时候要确认&#xff0c;配置文件跟build中的保持一致&#xff0c;在更换后还要将旧包的缓存数据清理掉 解决方案&#xff1a; 1 替换后删除 app 下的build 文件夹 2 Rebuild Pr…