Kubernetes入门 十七、Helm 包管理器

目录

  • 概述
  • Helm 的三大概念
  • Helm 的安装
  • 仓库管理
  • Helm 的常用命令
  • chart详解
    • 目录结构
    • Redis chart 实践
    • 升级回滚

概述

Kubernetes 上的应用对象,都是由特定的资源描述组成,包括 Deployment、Service 等,都保存在各自的文件中或者集中写在一个配置文件,然后通过 kubectl apply -f 部署。

如果应用只由一个或几个这样的服务组成,上面的部署方式就足够了。

但是对于一个复杂的应用,会有很多类似上面的资源描述文件,如:微服务架构应用,组成应用的服务可能多达几十、上百个,如果有更新或回滚应用的需求,可能要修改和维护所涉及到大量的资源文件,而这种组织和管理应用的方式就显得力不从心了。并且由于缺少对发布过的应用进行版本管理和控制,使得 Kubernetes 上的应用维护和更新面临诸多的挑战,主要面临以下的问题:

    • ① 如何将这些服务作为一个整体管理?
    • ② 这些资源文件如何高效复用?
    • ③ 应用级别的版本如何管理?

Helm 是 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如:yum、apt 等,可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。

Helm 可以做以下的事情:

  • 从头开始创建新的 chart
  • 将 chart 打包成归档(tgz)文件
  • 与存储 chart 的仓库进行交互
  • 在现有的 Kubernetes 集群中安装和卸载 chart
  • 管理与 Helm 一起安装的 chart 的发布周期

Helm 的三大概念

  • Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在Kubernetes 中的等价物。
  • Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
  • Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release 。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该 chart 两次。每一个数据库都会拥有它自己的 release 和 release name 。

Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。

可以类比 Docker 来理解,Chart 就类似于 Docker 中的镜像(Docker 中的镜像就是一系列文件的集合,Chart 也是一系列文件的集合),Repository(仓库)就类似于 Docker Hub,Release 就类似于 Docker 中的容器(可以根据镜像 run 多个容器)。

Helm 的安装

使用 Helm ,需要一个 Kubernetes 集群。对于 Helm 的最新版本,我们建议使用 Kubernetes 的最新稳定版, 在大多数情况下,它是倒数第二个次版本。

查看 Helm 和对应支持的 Kubernetes 版本:

在这里插入图片描述

下载额二进制文件:

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

解压文件:

tar -zxvf helm-v3.10.2-linux-amd64.tar.gz

将解压目录下的 helm 程序移动到 usr/local/bin/helm:

mv linux-amd64/helm /usr/local/bin/helm

helm 命令补全:

helm completion bash | sudo tee /etc/bash_completion.d/helm > /dev/null
source /usr/share/bash-completion/bash_completion

添加阿里云 helm 仓库:

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

仓库管理

常用仓库:

  • 微软仓库:http://mirror.azure.cn/kubernetes/charts,推荐。

  • 阿里云仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts。

添加 chart 仓库:

helm repo add 仓库名 仓库URL地址
# 如下
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

查看 chart 仓库列表:

helm repo list
# 如下
NAME         	URL
stable       	http://mirror.azure.cn/kubernetes/charts
aliyun       	https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
ingress-nginx	https://kubernetes.github.io/ingress-nginx

从 chart 仓库中更新本地可用 chart 的信息:

helm repo update
# 更新从各自chart仓库中获取的有关 chart 的最新信息。信息会缓存在本地,被诸如 'helm search' 等命令使用。

删除 Chart 仓库:

helm repo remove 仓库名
# 如下
helm repo remove aliyun

Helm 的常用命令

命令描述
create创建一个chart并指定名字
dependency管理chart依赖
get下载一个release。可用的子命令:all、hooks、manifest、notes、values。
history获取release历史。
install安装一个chart。
list列出release。
package将chart目录打包到chart存档文件中。
pull从远程仓库中下载chart并解压到本地。比如:helm install stable/mysql --untar。
repo添加、列出、移除、更新和索引chart仓库。可用的子命令:add、index、list、remove、update。
rollback从之前的版本回退。
search根据关键字搜索chart。可用的子命令:all、chart、readme、values。
show查看chart的详细信息。可用的子命令:all、chart、readme、values。
status显示已命名版本的状态。
template本地呈现模板。
uninstall卸载一个release。
upgrade更新一个release。
version查看Helm客户端版本。

chart详解

目录结构

mychart
├── Chart.yaml
├── charts # 该目录保存其他依赖的 chart(子 chart)
├── templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
│   ├── NOTES.txt # 用户运行 helm install 时候的提示信息
│   ├── _helpers.tpl # 用于创建模板时的帮助类
│   ├── deployment.yaml # Kubernetes deployment 配置
│   ├── ingress.yaml # Kubernetes ingress 配置
│   ├── service.yaml # Kubernetes service 配置
│   ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│   └── tests
│       └── test-connection.yaml
└── values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的时候覆盖

Redis chart 实践

  1. 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
  1. 搜索 redis chart
helm search repo redis
# 结果如下
NAME                            	CHART VERSION	APP VERSION	DESCRIPTION
aliyun/redis                    	1.1.15       	4.0.8      	Open source, advanced key-value store. It is of...
aliyun/redis-ha                 	2.0.1        	           	Highly available Redis cluster with multiple se...
bitnami/redis                   	18.0.1       	7.2.0      	Redis(R) is an open source, advanced key-value ...
bitnami/redis-cluster           	9.0.1        	7.2.0      	Redis(R) is an open source, scalable, distribut...
stable/prometheus-redis-exporter	3.5.1        	1.3.4      	DEPRECATED 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...
aliyun/sensu                    	0.2.0        	           	Sensu monitoring framework backed by the Redis ...
stable/sensu                    	0.2.5        	0.28       	DEPRECATED Sensu monitoring framework backed by...

DEPRECATED版本的一般是废弃的,不使用。

查看安装说明

helm show readme bitnami/redis
  1. 拉取chart并解压
helm pull bitnami/redis
tar -xvf redis-17.4.3.tgz
  1. 修改配置

修改 storageClass 为 managed-nfs-storage
设置 redis 密码 password
修改集群架构 architecture,默认是主从(replication,3个节点),可以修改为 standalone 单机模式
修改实例存储大小 persistence.size 为需要的大小
修改 service.nodePorts.redis 向外暴露端口,范围 <30000-32767>

  1. 创建命名空间

给他一个单独命名空间(方便管理,实际生产看情况):

kubectl create namespace redis
  1. 安装
cd ../
helm install redis ./redis -n redis
  1. 查看安装情况
# 查看 helm 安装列表
helm list# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis
  1. 卸载
helm delete redis -n redis

升级回滚

要想升级 chart 可以修改本地的 chart 配置并执行:

helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis

使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:

helm rollback <RELEASE> [REVISION] [flags]

查看历史

helm history redis

回退到上一版本

helm rollback redis

回退到指定版本

helm rollback redis 3

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

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

相关文章

通过Git Bash将本地文件上传到本地github

1. 新建一个仓库&#xff08; Repository&#xff09; 1.1登录Github&#xff0c;点击个人头像&#xff0c;点击Your repositories&#xff0c;点击New。 1.2 填写信息 Repository name: 仓库名称 Description(可选): 仓库描述介绍,不是必填项目。~~建议填写上哦&#xff01;…

计算机专业毕业设计项目推荐02-个人医疗系统(Java+原生Js+Mysql)

个人医疗系统&#xff08;Java原生JsMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设计流程以…

华三路由交换技术基础——计算机网络基础

计算机网络&#xff1a; 定义&#xff1a;一组具有自治权的计算机互联的集合 作用&#xff1a; 1.共享信息资源 2.分解式处理信息 4.负载均衡 5.综合信息服务 它是计算机技术与通信技术的两个领域的结合 一&#xff0c;计算机网络中的基本概念&#xff1a; 局域网&#xff…

web端动效 PAG

之前写过一篇lottie动效的文章&#xff1a;web端动效 lottie-web 使用&#xff0c;本篇写一下PAG-web的基础使用。 PAG是腾讯开发&#xff0c;支持移动端、桌面端以及Web端的动效工作流解决方案。目标是降低或消除动效相关的研发成本&#xff0c;能够一键将设计师在 AE&#x…

【深度学习】 Python 和 NumPy 系列教程(十四):Matplotlib详解:1、2d绘图(下):箱线图、热力图、面积图、等高线图、极坐标图

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 0. 设置中文字体 1-5. 折线图、散点图、柱状图、直方图、饼图 6. 箱线图&#xff08;Box Plot&#xff09; 7. 热力图&#xff08;Heatmap&#xff09; 8. 面积图&#xff08;Area Plot&#xff09; 9. 等…

腾讯云2023年云服务器优惠活动价格表

腾讯云经常推出各种云产品优惠活动&#xff0c;为了帮助大家更好地了解腾讯云服务器的价格和优惠政策&#xff0c;下面给大家分享腾讯云最新云服务器优惠活动价格表&#xff0c;助力大家轻松上云&#xff01; 一、轻量应用服务器优惠活动价格表 1、轻量应用服务器&#xff1a;…

【JAVA - List】差集removeAll() 四种方法实现与优化

一、场景&#xff1a; 二、结论&#xff1a; 1. 四种方法耗时 三、代码&#xff1a; 一、场景&#xff1a; 求差集 List1 - Lsit2 二、结论&#xff1a; 1. 四种方法耗时 初始条件方法名方法思路耗时 List1.size319418 List2.size284900 List..removeAll(Lsit2)1036987ms…

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程

群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程 一、群晖套件中下载Cloud Sync 二、同步到百度云盘 打开Cloud Sync&#xff0c;点击左上角的号&#xff0c;云供应商选择百度云。 这里可以选择双向备份&#xff0c;也可以只上穿到百度云的仅上传本地更改。因为百…

第36章_瑞萨MCU零基础入门系列教程之步进电机控制实验

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

python爬虫经典实例(二)

在前一篇博客中&#xff0c;我们介绍了五个实用的爬虫示例&#xff0c;分别用于新闻文章、图片、电影信息、社交媒体和股票数据的采集。本文将继续探索爬虫的奇妙世界&#xff0c;为你带来五个全新的示例&#xff0c;每个示例都有其独特的用途和功能。 1. Wikipedia数据采集 爬…

Redis 7 第九讲 微服务集成Redis 应用篇

Jedis 理论 Jedis是redis的java版本的客户端实现&#xff0c;使用Jedis提供的Java API对Redis进行操作&#xff0c;是Redis官方推崇的方式&#xff1b;并且&#xff0c;使用Jedis提供的对Redis的支持也最为灵活、全面&#xff1b;不足之处&#xff0c;就是编码复杂度较高。 …

易基因: MeRIP-seq等揭示组蛋白乙酰化和m6A修饰在眼部黑色素瘤发生中的互作调控|肿瘤研究

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 组蛋白去乙酰化抑制剂(HDACis)在多种恶性肿瘤中显示出令人鼓舞的结果。N6-甲基腺嘌呤(m6A)是最普遍的mRNA修饰&#xff0c;在肿瘤发生调控中起重要作用。然而&#xff0c;对组蛋白乙酰化…

HDMI 直通 ILA 调试实验

FPGA教程学习 第十四章 HDMI 直通 ILA 调试实验 文章目录 FPGA教程学习前言实验原理程序设计实验过程实验尝试总结TODO 前言 HDMI 输入直通到 HDMI 输出的显示&#xff0c;完成一个简单的 HDMI 输入输出检测。 实验原理 开发板 HDMI 输出接口芯片使用 ADV7511&#xff0c;HD…

穿山甲报错 splashAdLoadFail data analysis error

使用swift接入穿山甲&#xff0c;未接入GroMore&#xff0c;这个时候如果代码位配置错误会导致如下错误&#xff1a; splashAdLoadFail(_:error:) Optional(“Error Domaincom.buadsdk Code98764 “data analysis error” UserInfo{NSLocalizedDescriptiondata analysis error,…

HP惠普暗影精灵8P笔记本OMEN 17.3 英寸游戏本 17-ck1000(509V8AV)原厂Win11系统22H2

适用型号&#xff1a; 17-ck1000TX、17-ck1001TX、17-ck1002TX、17-ck1003TX、17-ck1004TX、17-ck1006TX、17-ck1007TX、17-ck1008TX 原装出厂系统自带所有驱动、出厂主题壁纸、Office办公软件、MyHP、惠普电脑管家、OMEN Command Center等预装程序 链接&#xff1a;https:/…

Kernel for SQL Database Recovery 21.1 Crack

SQL Server恢复工具 Kernel for SQL Database Recovery 21.1 具有针对不同 SQL Server 版本的全面恢复选项。它具有预览和选择功能来恢复精确的数据库对象。 好处 SQL 数据库恢复可为您带来多种好处。 完全恢复所有数据库组件 将损坏的 MDF/NDF 文件有效恢复到 Live SQL Serve…

DC/DC开关电源学习笔记(五)开关电源的主要技术指标

(五)开关电源的主要技术指标 1.输入参数2.输出参数3.效率4.电压调整率和负载调整率5.动态特性:负载突变时输出电压的变化6.电源启动时间(Set-Up Time)与保持时间(Hold-Up Time)1.输入参数 输入电压大小,交流还是直流,相数,频率等。 2.输出参数 输出功率,输出电压,输出…

SVN 索引版本与打包版本号不匹配

今天突然遇到了一个问题&#xff0c;SVN上传不了&#xff0c;错误提示如下&#xff1a; 解决方法&#xff1a; 1.其实&#xff0c;这是SVN库不小心搞坏了&#xff0c;只能重新再创建一个SVN仓库了。

WPS或EXCEL表格单元格下拉快捷选择项修改及设置方法

WPS或新版本EXCEL的设置下拉选项的方法是.点击一个单元格,菜单上选择数据,下拉列表即可设置,双击文字可编辑 EXCEL 旧的版本不同,可能有不同方法 方法一, 1.在空白区域里面&#xff0c;准备好需要填入下拉菜单里面的内容。 2.选中一个需要添加下拉菜单的单元格&#xff0c;然后…

pcl--第三节 关键点

简介 关键点也称为兴趣点&#xff0c;它是 2D 图像或 3D 点云或曲面模型上,可以通过检测标准来获取的具有稳定性、区别性的点集。从技术上来说,关键点的数量比原始点云或图像的数据量少很多&#xff0c;其与局部特征描述子结合组成关键点描述子。常用来构成原始数据的紧凑表示…