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…

PostgreSQL 流复制搭建与维护

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…

一个基本的BERT模型框架

构建一个完整的BERT模型并进行训练是一个复杂且耗时的任务。BERT模型由多个组件组成&#xff0c;包括嵌入层、Transformer编码器和分类器等。编写这些组件的完整代码超出了文本的范围。然而&#xff0c;一个基本的BERT模型框架以便了解其结构和主要组件的设置。 import torch …

shell循环和函数

目录 1.for循环2.while循环3.until循环4.函数 1.for循环 for循环是固定循环&#xff0c;也就是在循环时就已经知道需要进行几次的循环&#xff0c;有事也把for循环成为计数循环。for的语法如下两种&#xff1a; 语法一 for 变量 in 值1 值2 值3 …(可以是一个文件等)do程序do…

【深度学习】 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. 等…

RabbitMQ超详细安装教程(Linux)

RabbitMQ超详细安装教程&#xff08;Linux&#xff09; RabbitMq介绍

Go 工具链详解(五):竞态条件检测神器 Race Detector

并发编程可以提高程序的性能和稳定性&#xff0c;但也带来了一些挑战&#xff0c;如竞态条件。竞态条件是指并发程序中的多个线程同时访问共享资源&#xff0c;导致程序行为不确定的问题。为了避免竞态条件的产生&#xff0c;需要使用同步机制&#xff08;如互斥锁、条件变量等…

consul 备份还原导入导出

正文 工作中要保证生产环境部署的consul的集群能够安全稳定地对外提供服务&#xff0c;即使出现系统故障也能快速恢复&#xff0c;这里将讲述部分的备份还原操作及KV的导入导出操作。 备份与还原 配置文件、服务器状态 需要备份的主要有两类数据&#xff1a;consul相关的配置文…

淘客商品动态字符商品id转数字id

{ "code": 200, "data": { "itemId": "700407841432", "itemName": "安踏花苞短裤女五分裤夏季新款速干冰丝高腰宽松裤子透气工装短裤", "itemVideo": { "itemVideoThum…

Layui快速入门之第八节 表格渲染与属性的使用

目录 一&#xff1a;表格的渲染 API 方法配置渲染 模板配置渲染 静态表格渲染 二&#xff1a;表格的属性 基础属性 异步属性 返回数据中的特定字段 表头属性 重载 完整重载 仅数据重载 2.7 获取选中行 设置行选中状态 2.8 获取当前页接口数据 获取表格缓存数…

腾讯云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…

LINQ的内部联接、分组联接和左外部联接

最近在优化定时任务相关的代码&#xff0c;建议是把总查询放到内存中去坐&#xff0c;尽量减少打开的数据库连接 1. 内连接 指的是结果生成两张表可以连接的部分 private void button1_Click_1(object sender, EventArgs e){//初始化Student数组Student[] arrStu new Stude…

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

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

STM32H7 Azure RTOS

STM32H7 是意法半导体&#xff08;STMicroelectronics&#xff09;推出的一款高性能微控制器系列&#xff0c;基于 Arm Cortex-M7 内核。它具有丰富的外设和高性能计算能力&#xff0c;适用于各种应用领域。 Azure RTOS&#xff08;原名 ThreadX&#xff09;是一款实时操作系统…

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

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

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/decode-xored-array/ 解题思路&#xff1a; 异或有如下性质&#xff1a; a ^ a 0a ^ 0 aa ^ b b ^ a 根据题意&#xff0c;已知encoded[i - 1] arr[i - 1] ^ arr[i]&#xff0c;可以做如下转换&#xff1a; encoded[i…