今天我们继续学习kubernetes内容Helm

一、Helm概述


helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理。

Helm本质就是让k8s的应用管理(Deployment、Service等)可配置,能动态生成。通过动态生成K8S资源清单文(deployment.yaml、service.yaml)。然后kubectl自动调用K8S资源部署。

对于K8s来说,应用资源配置可以定义为K8s API对象,包括Deployment,Namespace,Service, PV(Persistent Volumes)和PVC(PersistentVolumeClaims)等等。通常一个应用的部署会涉及很多资源的共同协作,用户会定义这些API对象到一系列Yaml文件中,然后通过kubectl来逐一进行部署。

Helm 组件及相关术语

Helm是官方提供类似于YUM的包管理,是部署环境的流程封装,Helm有三个重要的概念:chart、release和Repository

  • Helm:Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。

  • Tiller:Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。

  • Chart:Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。Chart有特定的文件目录结构,如果开发者想自定义一个新的 Chart,只需要使用Helm create命令生成一个目录结构即可进行开发。

  • Repoistory:Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository, 官方仓库的地址是https://hub.helm.sh。

  • Release:使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。

二、Helm部署


安装

[root@k8s-master01 ~]# mkdir helm [root@k8s-master01 helm]# wget https://get.helm.sh/helm-v3.14.0-linux-amd64.tar.gz [root@k8s-master01 helm]# tar -zxvf helm-v3.14.0-linux-amd64.tar.gz [root@k8s-master01 helm]# cd linux-amd64/ [root@k8s-master01 linux-amd64]# cp helm /usr/local/bin/ [root@k8s-master01 linux-amd64]# echo "source <(helm completion bash)" >> ~/.bashrc [root@k8s-master01 linux-amd64]# source ~/.bashrc

chart库配置

使用helm search搜索官方helm hub chart库

helm search hub nginx

添加第三方Chart库

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

查看Chart库

helm repo list

从仓库中查找指定chart的名字

helm search repo nginx

Helm命令

命令字中文释义作用
completion完成生成特定Shell的自动补全脚本
create创建使用给定的名称创建新图表
dependency依赖管理图表的依赖关系
env环境Helm客户端环境信息
get获取下载已命名发布的扩展信息
help帮助关于任何命令的帮助
history历史获取发布历史记录
install安装安装图表
lint检查检查图表可能存在的问题
list列表列出发布
package打包将图表目录打包成图表存档
plugin插件安装、列出或卸载Helm插件
pull拉取从存储库下载图表,并可选在本地目录中解包
push推送将图表推送到远程存储库
registry注册表登录或注销注册表
repo仓库添加、列出、删除、更新和索引图表存储库
rollback回滚将发布回滚到先前版本
search搜索在图表中搜索关键字
show显示显示图表的信息
status状态显示指定发布的状态
template模板本地渲染模板
test测试运行发布的测试
uninstall卸载卸载发布
upgrade升级升级发布
verify验证验证给定路径的图表已签名并且有效
version版本打印客户端版本信息

三、Helm Chart 详解


chart目录结构

# 通过helm create命令创建一个新的chart包 [root@k8s-master01 helm]# helm create nginx Creating nginx [root@k8s-master01 nginx]# tree . ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── hpa.yaml │ ├── ingress.yaml │ ├── NOTES.txt │ ├── serviceaccount.yaml │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml 3 directories, 10 files ####目录结构解析#### nginx/ ├── charts #依赖其他包的charts文件 ├── Chart.yaml # 该chart的描述文件,包括ico地址,版本信息等 ├── templates # #存放k8s模板文件目录 │ ├── deployment.yaml # 创建k8s资源的yaml 模板 │ ├── _helpers.tpl # 下划线开头的文件,可以被其他模板引用 │ ├── hpa.yaml # 弹性扩缩容,配置服务资源CPU 内存 │ ├── ingress.yaml # ingress 配合service域名访问的配置 │ ├── NOTES.txt # 说明文件,helm install之后展示给用户看的内容 │ ├── serviceaccount.yaml # 服务账号配置 │ ├── service.yaml # kubernetes Serivce yaml 模板 │ └── tests # 测试模块 │ └── test-connection.yaml └── values.yaml # 给模板文件使用的变量

部署Nginx应用

[root@k8s-master01 nginx-helm]# helm pull bitnami/nginx --version 15.3.5 [root@k8s-master01 nginx-helm]# ls nginx-15.3.5.tgz [root@k8s-master01 nginx-helm]# tar xf nginx-15.3.5.tgz [root@k8s-master01 nginx-helm]# ls nginx nginx-15.3.5.tgz [root@k8s-master01 nginx-helm]# cd nginx [root@k8s-master01 nginx]# vim values.yaml 532 service: 533 ## @param service.type Service type 534 ## 535 type: ClusterIP 536 ## @param service.ports.http Service HTTP port 537 ## @param service.ports.https Service HTTPS port 538 ## 539 ports: 540 http: 80 541 https: 443 ###安装chart### [root@k8s-master01 nginx]# helm install nginx-server . NAME: nginx-server LAST DEPLOYED: Sat Feb 3 15:57:33 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: nginx CHART VERSION: 15.3.5 APP VERSION: 1.25.3 ** Please be patient while the chart is being deployed ** NGINX can be accessed through the following DNS name from within your cluster: nginx-server.default.svc.cluster.local (port 80) To access NGINX from outside the cluster, follow the steps below: 1. Get the NGINX URL by running these commands: export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services nginx-server) kubectl port-forward --namespace default svc/nginx-server ${SERVICE_PORT}:${SERVICE_PORT} & echo "http://127.0.0.1:${SERVICE_PORT}" ####查看pod和service### [root@k8s-master01 nginx]# kubectl get deployments.apps NAME READY UP-TO-DATE AVAILABLE AGE nginx-deploy 3/3 3 3 23h nginx-deploy1 3/3 3 3 22h nginx-deploy2 3/3 3 3 22h nginx-server 1/1 1 1 56s [root@k8s-master01 nginx]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deploy-5f87d95c-7ph78 1/1 Running 1 (151m ago) 23h nginx-deploy-5f87d95c-dswvq 1/1 Running 1 (151m ago) 23h nginx-deploy-5f87d95c-vk9vg 1/1 Running 1 (151m ago) 23h nginx-deploy1-c8d58b5c7-7dfrd 1/1 Running 1 (151m ago) 22h nginx-deploy1-c8d58b5c7-d2hd7 1/1 Running 1 (151m ago) 22h nginx-deploy1-c8d58b5c7-pfvhn 1/1 Running 1 (151m ago) 22h nginx-deploy2-db98bd9d9-2jl74 1/1 Running 1 (151m ago) 22h nginx-deploy2-db98bd9d9-h67n6 1/1 Running 1 (151m ago) 22h nginx-deploy2-db98bd9d9-wfcmw 1/1 Running 1 (151m ago) 22h nginx-server-ff5765f8-4wbms 1/1 Running 0 2m5s pod-controller-qk5jl 1/1 Running 1 (151m ago) 19h pod-controller-scsxt 1/1 Running 1 (151m ago) 19h [root@k8s-master01 nginx]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.10.0.1 <none> 443/TCP 14d nginx-server ClusterIP 10.10.127.16 <none> 80/TCP 2m32s nginx-svc ClusterIP 10.10.83.76 <none> 80/TCP 23h nginx-svc1 LoadBalancer 10.10.168.131 192.168.115.167 80:31261/TCP 22h nginx-svc2 NodePort 10.10.14.245 <none> 80:31110/TCP 22h ####测试访问### [root@k8s-master01 nginx]# curl 10.10.127.16 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>

四、升级与回滚


修改配置文件

[root@k8s-master01 nginx]# vim values.yaml 123 replicaCount: 3 124 ## @param revisionHistoryLimit The number of old history to retain to allow rollback 125 ##

升级

[root@k8s-master01 nginx]# helm upgrade nginx-server

查看升级结果

[root@k8s-master01 nginx]# kubectl get pod [root@k8s-master01 nginx]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deploy-5f87d95c-7ph78 1/1 Running 1 (166m ago) 23h nginx-deploy-5f87d95c-dswvq 1/1 Running 1 (166m ago) 23h nginx-deploy-5f87d95c-vk9vg 1/1 Running 1 (166m ago) 23h nginx-deploy1-c8d58b5c7-7dfrd 1/1 Running 1 (166m ago) 23h nginx-deploy1-c8d58b5c7-d2hd7 1/1 Running 1 (166m ago) 23h nginx-deploy1-c8d58b5c7-pfvhn 1/1 Running 1 (166m ago) 23h nginx-deploy2-db98bd9d9-2jl74 1/1 Running 1 (166m ago) 22h nginx-deploy2-db98bd9d9-h67n6 1/1 Running 1 (166m ago) 22h nginx-deploy2-db98bd9d9-wfcmw 1/1 Running 1 (166m ago) 22h nginx-server-ff5765f8-4p6sh 1/1 Running 0 31s nginx-server-ff5765f8-4wbms 1/1 Running 0 16m nginx-server-ff5765f8-lnkkg 1/1 Running 0 31s

查看记录

[root@k8s-master01 nginx]# helm history nginx-server REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Sat Feb 3 15:57:33 2024 superseded nginx-15.3.5 1.25.3 Install complete 2 Sat Feb 3 16:13:44 2024 deployed nginx-15.3.5 1.25.3 Upgrade complete

回滚

[root@k8s-master01 nginx]# helm rollback nginx-server 1

验证回滚

[root@k8s-master01 nginx]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deploy-5f87d95c-7ph78 1/1 Running 1 (170m ago) 23h nginx-deploy-5f87d95c-dswvq 1/1 Running 1 (170m ago) 23h nginx-deploy-5f87d95c-vk9vg 1/1 Running 1 (170m ago) 23h nginx-deploy1-c8d58b5c7-7dfrd 1/1 Running 1 (170m ago) 23h nginx-deploy1-c8d58b5c7-d2hd7 1/1 Running 1 (170m ago) 23h nginx-deploy1-c8d58b5c7-pfvhn 1/1 Running 1 (170m ago) 23h nginx-deploy2-db98bd9d9-2jl74 1/1 Running 1 (170m ago) 22h nginx-deploy2-db98bd9d9-h67n6 1/1 Running 1 (170m ago) 22h nginx-deploy2-db98bd9d9-wfcmw 1/1 Running 1 (170m ago) 22h nginx-server-ff5765f8-lnkkg 1/1 Running 0 4m44s

卸载

[root@k8s-master01 nginx]# helm uninstall nginx-server

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

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

相关文章

CANFD 总线多节点扩展技术:节点数量限制与突破方案

在工业控制、汽车电子等 CANFD 总线应用场景中&#xff0c;节点数量直接影响系统覆盖范围与数据交互效率。节点数量并非无限制扩展&#xff0c;其受总线特性、硬件设计、协议配置等多重因素约束。本文将深入解析 CANFD 总线节点数量限制的核心原因&#xff0c;提供切实可行的扩…

REAPER数字音频工作站:轻量高效的专业音频制作解决方案

REAPER作为一款功能全面的数字音频工作站&#xff08;DAW&#xff09;&#xff0c;以其卓越的性能和高度可定制性在音频制作领域广受好评。这款由Cockos开发的软件在保持轻量级设计的同时&#xff0c;提供了完整的专业音频处理能力&#xff0c;适合从初学者到专业工程师的各类用…

配电网可靠性评估—序贯蒙特卡洛模拟法研究附Matlab代码

作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询内…

托福培训机构深度测评:从师资到服务,哪家用数据征服了90%的考生? - 品牌测评鉴赏家

托福培训机构深度测评:从师资到服务,哪家用数据征服了90%的考生?一、2025 托福备考新趋势:三大核心需求升级 (一)机考改革倒逼机构适配性升级 在 2025 年,托福机考改革的浪潮汹涌来袭,其中 “听力加试随机化”…

光伏储能虚拟同步发电机Simulink仿真模型探究

光伏储能虚拟同步发电机simulink仿真模型 主电路&#xff1a;三相全桥逆变 直流侧电压800V 光伏模块&#xff1a;光伏板结合Boost电路应用MPPT 储能模块&#xff1a;采用双闭环控制&#xff0c;外环直流母线电容稳压&#xff0c;内环为电池电流环控制 Matlab/simulink 2021b及以…

机器学习资源合集

Python数据分析与机器学习实战课程 文件大小: 15.6GB内容特色: 15.6GB Python数据机器学习全流程项目源码适用人群: 想转岗AI/数据岗的大学生与程序员核心价值: 代码即用&#xff0c;快速复现Kaggle级建模与调优下载链接: https://pan.quark.cn/s/e349f01253fa 【数据技术课堂…

linux中的一些配置

文章目录Tabby配置Tabby配置 配置文件&#xff08;2025.12.14&#xff09;如下&#xff0c;直接复制粘贴即可&#xff1a;&#xff08;需要额外安装一些拓展&#xff1a; altair&#xff08;配色&#xff09;&#xff0c; save-output &#xff09; version: 7 profiles: [] …

数据结构==B-树==

一、B 树基础概念&#xff08;铺垫层&#xff09; 知识点梳理 名称定义&#xff1a;B 树&#xff08;B-tree&#xff09;是多叉平衡查找树&#xff0c;正确名称为 “B 树”&#xff0c;非 “B 阶树”&#xff08;“阶” 是 B 树的属性&#xff0c;如 m 阶 B 树&#xff09;。…

OBS Studio:开源免费的屏幕录制与直播推流一体化解决方案

OBS Studio作为一款功能全面的开源视频录制与直播软件&#xff0c;在内容创作和实时推流领域发挥着重要作用。这款跨平台工具以其专业的录制能力和灵活的直播配置&#xff0c;成为视频创作者和直播主播的首选工具。 获取地址&#xff1a;https://pan.quark.cn/s/fd2a86d8d920 …

数字电路模拟程序复盘分析

一、前言:对阶段学习内容的整体认知 (一)知识点覆盖与考察核心 本阶段的题目集4~5及课堂测验,聚焦“面向对象编程(OOP)核心思想落地”与“复杂业务逻辑的代码实现”两大核心目标,知识点覆盖可分为四大模块,形成…

Python GIL 的前世今生

概述 随着 Python 3.14 的发布,CPython 开始提供实验性的自由线程构建,用户无需再手动编译源码以关闭 GIL。这意味着社区会推出两套完全不同的 Python 构建模式,用以同时支持 GIL 和自由线程。 虽然自由线程版本要完…

ansible事实详解

Ansible 事实是 Ansible 在执行任务前&#xff0c;自动从受控节点收集的系统信息集合&#xff0c;这些信息会以变量形式存储&#xff0c;能直接用于区分不同节点的配置逻辑&#xff0c;实现自动化任务的差异化执行。1. 核心收集的信息类型• 基础主机信息&#xff1a;包含主机…

Nlp教程资源合集

085852_NLP&#xff08;自然语言处理&#xff09;训练营 – 01期 – 带源码课件 文件大小: 32.9GB内容特色: 32.9GB源码课件&#xff0c;覆盖NLP全栈实战适用人群: 想入门或进阶自然语言处理的开发者核心价值: 提供可跑通代码与数据&#xff0c;快速搭建NLP项目下载链接: http…

COMSOL助力煤层注气热力流THM耦合下增强甲烷开采探索

一、COMSOL实现煤层注气热力流THM耦合下增强甲烷开采。 本案例采用热力流三场耦合&#xff0c;分析煤层注入CO2增强甲烷开采效果&#xff0c;涉及热-流-固数学模型、多气相介质作用&#xff0c;全部为PDE模块。 二、可以出煤层温度、瓦斯含量、渗透率等许多云图及数据&#xff…

.NET 10 网络堆栈深度架构解析:HTTP/3、性能优化与后量子加密的融合演进

1. 摘要:迈向现代、高效与开发者友好的新纪元 随着.NET 10 的发布,微软不仅是在更新一个开发框架,更是在重新定义云原生时代的网络通信标准。本次更新的核心理念紧扣“更现代、更高效、更开发者友好”的三大支柱,标…

2025雅思报班攻略:5大高性价比机构测评! - 品牌测评鉴赏家

2025雅思报班攻略:5大高性价比机构测评!2025雅思报班攻略:5大高性价比机构测评! 一、2025 雅思培训市场现状:为什么报班成刚需? (一)留学竞争白热化,高分成为名校敲门砖 在 2025 年 QS 世界大学排名更新后,全…

东莞奶茶原料公司推荐——圣旺水吧(东莞总公司)冠绝群雄 - 老百姓的口碑

随着新茶饮市场竞争的白热化,原料品质和供应链服务已成为茶饮创业成功的核心要素。创业者面临着“原料品控难”“设备选型难”“技术迭代慢”等多重困境,迫切需要一位能够提供“全周期、定制化”解决方案的专业供应链…

无线传感器网络覆盖及路由关键技术研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿…

【干扰】基于稀疏重构的空域-极化域联合抗主瓣干扰方法附Matlab复现

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿…

【GRNN回归预测】基于广义回归神经网络的矿石等级预测的研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿…