k8s Helm

Helm工具介绍

  1. 了解Helm
    Helm是kubernetes中查找、分享、构建应用的最佳方式。
    Helm是一个Kubernetes应用的包管理工具,用来管理chart(一种预先配置好的安装包资源),有点类似于Ubuntu 的APT和CentOS/Rocky中的YUM。因此,helm的出现解决了k8s应用管理能力缺失的问题。
    另外Helm也是dev和ops的桥梁,运维人员在使用Helm的时候,一方面不需要理解大量在Chart中的各种k8s元素,只需要配置少量的环境变量即可安装;另一方面,Helm也给初级运维人员提供了学习的机会,他们可以在Chart中学习并理解各种K8s元素,从而能够更快的掌握K8s。

官网地址:https://helm.sh/
github地址: https://github.com/helm/helm/releases

  1. Helm核心概念
  • Chart:Chart就是helm package,包含了一个k8s app应用运行起来的所有要素,比如service, deployment, configmap, serviceaccount, rbac, 等,这些要素都是以template文件的形式存在,再结合values文件,最终渲染出能够被k8s执行的yaml文件。
  • Repository:仓库是charts的集合,方便进行分享和分发。我们可以将这个仓库添加到本地,然后从这些仓库里查找chart,并使用。
  • Hub: 不同的个人和组织提供的公共仓库(Repository)形成了分散和分布的Helm仓库,不利于查找,所以官方提供了Helm Hub,各公共仓库可以注册到Helm Hub中以方便集中查找,Helm Hub只是分布的仓库的集中展示中心。仓库注册到Helm Hub时,会将Chart清单文件向Helm Hub同步一份,这样可以在Helm Hub集中展示仓库列表和各仓库中的Chart列表。Chart包也就是tgz文件实际上存储在各仓库中。Helm Hub并不实际存储Chart包。Helm只是在查询Chart时和Helm Hub有交互,其它操作都是和仓库直接交互的。
  • Release:Release是Helm Chart在kubernetes的一个运行实例,这个release名字会体现在K8s里,其中service和deploy的名字跟这个release名字一致。
  1. Helm版本和Kubernetes版本要求
    ![[Pasted image 20240907173202.png]]
    参考:https://helm.sh/zh/docs/topics/version_skew/

Helm工具用法

1)安装Helm
说明:我用的Kubernetes版本为1.25.4,考虑到后期会升级Kubernetes版本,所以helm版本为3.11
获取集群版本号:kubectl get node

下载二进制包

wget https://get.helm.sh/helm-v3.11.3-linux-amd64.tar.gz

解压并做软链

tar zxf helm-v3.11.3-linux-amd64.tar.gz -C /opt/
mv /opt/linux-amd64/ /opt/helm
ln -s /opt/helm/helm /bin/

2)Helm常用命令
添加仓库,这样会把该仓库添加到本地

helm repo add bitnami https://charts.bitnami.com/bitnami  
helm repo add helm_sh https://charts.helm.sh/stable
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

更新仓库列表到本地

helm repo update

查看仓库列表

helm repo list

在本地添加的仓库里搜索所有chart

helm search repo

在本地的仓库里搜索mysql

helm search repo mysql

还可以从公共的hub里搜索chart,目的是找到合适的repo

helm search hub mysql
helm search hub mysql --list-repo-url ##查看对应repo的url
helm search hub mysql --max-col-width 100 #可以设置每一列的宽度,这样可以显示所有的描述信息

查看某个chart详细信息

helm show chart bitnami/mysql

查看某个chart values(这个values相当于是该cahrt的配置文件)

helm show values helm_sh/redis

安装chart (示例,安装nginx)

helm search repo nginx ##先搜一下
helm install nginx-test  bitnami/nginx   #这个nginx-test就是release名字,同时也是service和deployment/statefulset以及pod前缀,当然你也可以不去定义release name,让Helm帮忙定义,那么命令就要改为
helm install   bitnami/nginx --generate-nameinstall过程中会自动生成缓存目录: ~/.cache/helm/repository/

安装完后,查看用helm安装过的chart

helm list -A #-A会列出所有namespace里的release,不加-A只列default namespace里的release

卸载

helm uninstall nginx-test

下载一个chart包

helm pull bitnami/mysql #会下载一个tgz的压缩包

利用本地的chart包,直接安装

tar zxf mysql-9.4.4.tgz
cd  mysql
helm install test-mysql .

Helm工具实践

1)安装redis-cluster
先搭建一个NFS的SC(只需要SC,不需要pvc),具体步骤此文档不再提供,请参考前面相关章节。
下载redis-cluster的chart包

helm pull bitnami/redis-cluster --untar #会下载一个目录下来

修改values.yaml

cd redis-cluster
vi values.yaml # 定义sc和密码storageClass: "nfs-client"redis:password: "http://rocky_k8s.com/"

安装

helm install redis-cluster . ##注意,这是在chart的目录里,该目录下有values.yaml,后面的. 表示使用当前目录下的values.yaml

查看状态

helm status redis-cluster
kubectl get po
kubectl get statefulset
kubectl get pvc

测试

To get your password run:export REDIS_PASSWORD=$(kubectl get secret --namespace "default" redis-cluster -o jsonpath="{.data.redis-password}" | base64 -d)You have deployed a Redis® Cluster accessible only from within you Kubernetes Cluster.INFO: The Job to create the cluster will be created.To connect to your Redis® cluster:1. Run a Redis® pod that you can use as a client:
kubectl run --namespace default redis-cluster-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis-cluster:7.0.5-debian-11-r19 -- bash2. Connect using the Redis® CLI:redis-cli -c -h redis-cluster -a $REDIS_PASSWORD

2)应用的升级和回滚
安装好的应用,如果再次修改values.yaml(比如修改密码为http://rocky_k8s.com1/),则需要做升级处理

helm upgrade redis-cluster . ##注意,这是在chart的目录里,该目录下有values.yaml

查看升级历史

helm history redis-cluster

回滚

helm rollback redis-cluster 1

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

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

相关文章

网络安全知识科普:什么是网络准入控制系统?有哪些?

在当今数字化时代,网络安全已成为企业和组织不可忽视的重要议题。随着远程工作模式的普及和物联网设备的增加,网络边界越来越模糊,传统防火墙已经不足以应对日益复杂的威胁环境。在这种背景下,网络准入控制系统(Network Access Co…

Redis持久化机制—RDB与AOF

Redis持久化机制 RDB(默认) **思想:**保存整个数据库的快照,也就是RDB文件,有两种保存方式,前台保存save和后台保存bgsave,前者会阻塞主进程程,后者则是fork一个子进程去完成备份操…

C++入门9——list的使用

目录 1.什么是list? 2.list的构造 3.list迭代器的使用(list iterator) 4.list capacity 5.list modifiers 6.list的其他操作 1.什么是list? 在官网中,对list有这样的介绍: Lists are sequence co…

SLM561A​​系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力

SLM561A系列选型参考: SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …

【软件文档】软件系统需求管理规程(项目管理word原件)

软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明书,概要设计说明书,技术解…

解决Pynput不能在Ubuntu22.04上正常使用问题

pynput 是一个 Python 库,它提供了一套简单的接口来控制和监控输入设备,包括鼠标和键盘。这个库允许开发者编写跨平台的代码来处理输入事件,无需担心底层操作系统的差异。 下面是pynput的测试程序: from pynput.keyboard import …

中秋之美——html5+css+js制作中秋网页

中秋之美——html5cssjs制作中秋网页 一、前言二、功能展示三、系统实现四、其它五、源码下载 一、前言 八月十五,秋已过半,是为中秋。 “但愿人长久,千里共婵娟”,中秋时节,气温已凉未寒,天高气爽&#x…

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置: // launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.…

分布式项目中使用雪花算法提前获取对象主键ID

hello,大家好,我是灰小猿! 在做分布式项目开发进行数据表结构设计时,有时候为了提高查询性能,在进行数据库表设计时,会使用自增ID来代替UUID作为数据的主键ID,但是这样就会有一个问题&#xff…

改写二进制文件

以下是一些常见的方法和工具: 1. 使用十六进制编辑器 十六进制编辑器 是最直接的工具之一,用于查看和编辑二进制文件中的数据。它允许你以十六进制格式查看和修改文件内容。 常见十六进制编辑器: HxD(Windows)Hex F…

JavaScript 根据关键字匹配数组项

要在JavaScript数组中根据关键字匹配项,可以使用filter方法结合一个测试函数。以下是一个示例代码,定义了一个函数findByKeyword,该函数接受一个数组和一个关键字,然后返回一个新数组,其中包含与关键字匹配的所有项。 …

【LabVIEW学习篇 - 16】:文件操作

文章目录 CSV文件CSV写入CSV读取 TXT文件txt写入txt读取 INI文件INI文件写入INI文件读取 CSV文件 .csv (Comma-Separated Values)是逗号分隔值文件格式,有时也称之为字符分隔值,因为分隔符也可以不是逗号(最常见的是逗号和制表符)&#xff0…

(一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别

🍂1、不说废话,现象展示 🍃图片识别 🍃视频识别 自己训练样本 十分简易快速 opencv级联ha

springboot启动时替换配置参数

SpringBoot启动时配置参数替换 一.背景 SpringBoot项目启动的时候,在不使用配置中心等的前提下或者有公司强制使用指定的“密码箱”情况下,需要远程获取关键配置信息,比如数据库密码,则需要在项目启动前获取配置并且进行本地配置…

小皮面板webman ai项目本地启动教程

1.前置条件 下载小皮面板 下载后,双击安装,一路next(下一步),无需更改配置。 2.安装必须软件 在小皮面板的软件管理页,安装编号①②③④下面四个软件。 3.启动本地服务 进入到小皮面板的首页&#x…

Java Stream API

Java Stream API 在现代软件开发中,处理集合(如列表、集合等)中的数据是一项常见且至关重要的任务。Java 自 JDK 8 引入的 Stream API 极大地简化了这一过程,使得数据处理变得更加直观、灵活且易于理解。本文将带你深入了解 Java…

mysql学习教程,从入门到精通,MySQL 删除数据表与选择数据库(7)

1、MySQL 删除数据表 MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 语法 以下为删除MySQL数据表的通用语法:MySQL 删除数据表 MySQL中删除数据表是非常容易操作的&#xff…

空指针异常 (NullPointerException)怎么办

在 Java 编程中,空指针异常(NullPointerException,简称 NPE)是最常见且困扰开发人员的异常之一。尽管 Java 是一种强类型语言,设计上提供了类型安全的特性,但空指针问题依然是开发过程中最常见的运行时异常…

把Django字典格式的数据库配置转成tortoise-orm的URL格式

Django版的数据库配置如下: DATABASES {"default": {"ENGINE": "django.db.backends.mysql","NAME": "test_1","USER": "root","PASSWORD": "123456","HOST&quo…

MES系统如何支持企业进行数字化转型

MES系统(Manufacturing Execution System,制造执行系统)在企业数字化转型中扮演着至关重要的角色,它通过提供实时的生产数据、优化生产流程、提升质量管理水平、实现设备智能化管理以及促进企业内部协同和沟通等多种方式&#xff…