当前位置: 首页 > news >正文

helm使用

前言

类似于 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。

Helm, 一个二进制工具,用来安装、升级、卸载 K8S 中的应用程序。

Helm Chart,一个 tgz 包,类似安卓的 APK。

K8S 应用打包成 Chart,通过 Helm 安装到 K8S 集群中。

一、安装Helm

用二进制版本安装

每个Helm 版本都提供了各种操作系统的二进制版本,这些版本可以手动下载和安装。

下载 需要的版本

wget https://repo.huaweicloud.com/helm/v3.5.4/helm-v3.5.4-linux-amd64.tar.gz

解压

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

在解压目录中找到helm程序,移动到需要的目录中

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

然后就可以执行客户端程序并 添加稳定仓库: helm help

二、配置helm

微软仓库(http://mirror.azure.cn/kubernetes/charts/)

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

推荐仓库(https://charts.bitnami.com/bitnami  )

添加仓库  :helm repo add 自定义仓库名 仓库地址  (仓库地址就是上面几个网站地址)

[root@k8s-master-136 samve]# helm repo add apphub https://charts.bitnami.com/bitnami

删除仓库 : helm repo remove 仓库名    

更新仓库 : helm repo update   

查看仓库 : helm repo list

搜索仓库的chart: helm  search repo chart名称

三、使用helm快速部署一个应用

使用搜索命令搜索应用

helm search repo 应用名称

[root@k8s-master-136 samve]# helm search repo nginx
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
apphub/nginx                    15.3.3          1.25.2          NGINX Open Source is a web server that can be a...
apphub/nginx-ingress-controller 9.9.0           1.9.0           NGINX Ingress Controller is an Ingress controll...
apphub/nginx-intel              2.1.15          0.4.9           DEPRECATED NGINX Open Source for Intel is a lig...

根据搜索内容选择安装

helm install 安装后应用的名称 搜索之后应用的名称

[root@k8s-master-136 samve]# helm install my-nginx apphub/nginx
NAME: my-nginx
LAST DEPLOYED: Thu Oct 12 22:16:31 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 15.3.3
APP VERSION: 1.25.2** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:my-nginx.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:NOTE: It may take a few minutes for the LoadBalancer IP to be available.Watch the status with: 'kubectl get svc --namespace default -w my-nginx'export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-nginx)export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')echo "http://${SERVICE_IP}:${SERVICE_PORT}"

查看安装之后的状态

helm list

[root@k8s-master-136 samve]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
my-nginx        default         1               2023-10-12 22:16:31.191334159 +0800 CST deployed        nginx-15.3.3            1.25.2     
nginx           default         1               2023-10-12 21:52:49.36634682 +0800 CST  deployed        nginx-intel-2.1.15      0.4.9   

helm status 安装之后应用的名称

[root@k8s-master-136 samve]# helm status my-nginx
NAME: my-nginx
LAST DEPLOYED: Thu Oct 12 22:16:31 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 15.3.3
APP VERSION: 1.25.2** Please be patient while the chart is being deployed **
NGINX can be accessed through the following DNS name from within your cluster:my-nginx.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:NOTE: It may take a few minutes for the LoadBalancer IP to be available.Watch the status with: 'kubectl get svc --namespace default -w my-nginx'export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-nginx)export SERVICE_IP=$(kubectl get svc --namespace default my-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}')echo "http://${SERVICE_IP}:${SERVICE_PORT}"

当然我们也可以通过kubectl命令查看相关的pod是否创建成功

[root@k8s-master-136 samve]# kubectl get svc,pod
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
service/kubernetes          ClusterIP      10.10.0.1       <none>        443/TCP                      258d
service/my-nginx            LoadBalancer   10.10.200.7     <pending>     80:32374/TCP                 9m37s
service/nginx               NodePort       10.10.183.194   <none>        80:30111/TCP                 258d
service/nginx-nginx-intel   LoadBalancer   10.10.72.168    <pending>     80:32756/TCP,443:30799/TCP   33mNAME                                     READY   STATUS             RESTARTS   AGE
pod/my-nginx-8568bb4694-gn5b7            1/1     Running            0          9m37s
pod/nginx-2-69947fd9df-plct2             1/1     Running            2          47h
pod/nginx-6799fc88d8-2jh5z               1/1     Running            2          47h
pod/nginx-nginx-intel-668b58fb4b-8cm6z   0/1     ImagePullBackOff   0          33m
pod/nginx1-b7fb675cb-rhtvn               0/1     CrashLoopBackOff   50         47h
pod/nginx2-74ff6c9fbc-2gb7r              0/1     CrashLoopBackOff   50         47h

四、自定义chart

自定义选项是因为并不是所有的 chart 都能按照默认配置运行成功,可能会需要一些环境 依赖,例如 PV。 所以我们需要自定义 chart 配置选项,安装过程中有两种方法可以传递配置数据:

  • --values(或-f):指定带有覆盖的 YAML 文件。这可以多次指定,最右边的文件 优先
  • --set:在命令行上指定替代。如果两者都用,--set 优先级高

第一步:使用命令创建chart

helm create chart名称

[root@k8s-master-136 samve]# helm create mychart
Creating mychart
[root@k8s-master-136 samve]# ls mychart/
charts  Chart.yaml  templates  values.yaml
[root@k8s-master-136 samve]# cd mychart/
[root@k8s-master-136 mychart]# ls -al
总用量 16
drwxr-xr-x   4 root  root    93 10月 12 22:33 .
drwx------. 17 samve samve 4096 10月 12 22:33 ..
drwxr-xr-x   2 root  root     6 10月 12 22:33 charts
-rw-r--r--   1 root  root  1143 10月 12 22:33 Chart.yaml
-rw-r--r--   1 root  root   349 10月 12 22:33 .helmignore
drwxr-xr-x   3 root  root   162 10月 12 22:33 templates
-rw-r--r--   1 root  root  1899 10月 12 22:33 values.yaml
  • charts:普通文件夹,刚开始创建为空;
  • Chart.yaml:用于配置当前chart的属性信息,可以作为全局变量提供给模板文件使用;
  • templates:目标信息文件,里面有很多的yaml模板文件,我们使用helm创建应用相当于helm帮我去执行这些yaml文件了;
  • values.yaml:全局变量文件,提供给templates里面的yaml文件用。

因为我们需要自己自定义chart,因此我们可以修改这些yaml文件,也可以删除这些默认生成的yaml文件,然后自己重新写。 

相关文章:

helm使用

前言 类似于 Linux 的 YUM、APT&#xff0c;Helm 是 K8S 的包管理工具。 Helm&#xff0c; 一个二进制工具&#xff0c;用来安装、升级、卸载 K8S 中的应用程序。 Helm Chart&#xff0c;一个 tgz 包&#xff0c;类似安卓的 APK。 K8S 应用打包成 Chart&#xff0c;通过 He…...

Python in Visual Studio Code 2023年10月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展于 2023 年 10 月发布&#xff01; 此版本包括以下公告&#xff1a; Python 调试器扩展更新弃用 Python 3.7 支持Pylint 扩展更换时的 Lint 选项Mypy 扩展报告的范围和守护程序模式G…...

Webmin远程命令执行漏洞复现报告

漏洞编号 CVE-2019-15107 漏洞描述 Webmin是一个基于Web的系统配置工具&#xff0c;用于类Unix系统。密码重置页面中存在此漏洞&#xff0c;允许未经身份验证的用户通过简单的 POST 请求执行任意命令。 影响版本 Webmin<1.920 漏洞评级 严重 利用方法&#xff08;利…...

webstorm自定义文件模板(Vue + Scss)

最终效果如下&#xff1a; 具体配置如下&#xff1a; 新增文件代码如下&#xff1a; <!--* Description: ${COMPONENT_NAME} 页面* Author: mhf* Date: ${DATE} --> <template><div>${COMPONENT_NAME} </div> </template><script&g…...

楔子-写在之前

最近一年都在忙着一个项目&#xff0c;并且需要学习另一个领域的知识&#xff0c;从单片机过渡到了LINUX嵌入式&#xff0c;倒静不下心去写点东西。看了下之前写的东西&#xff0c;感觉已经过去了很久很久。现在项目快忙完了&#xff0c;准备把最近的心得给大家分享下。 前言 …...

第 5 章 数组和广义表(稀疏矩阵的三元组顺序表存储实现)

1. 背景说明 为了节省存储空间&#xff0c;可以对这类矩阵进行压缩存储。所谓压缩存储是指&#xff1a;为多个值相同的元只分配一个存储空间&#xff0c;对零元不分配空间。 2. 示例代码 1)status.h /* DataStructure 预定义常量和类型头文件 */ #include <string.h>#i…...

【RabbitMQ 实战】11 队列的结构和惰性队列

一、 队列的结构 队列的组成&#xff1a; 队列由 rabbit_amgqueue_process 和 backing_queue两部分组成。rabbit_amqqueue_process负责协议相关的消息处理&#xff0c;即接收生产者发布的消息、向消费者交付消息、处理消息的确认 (包括生产端的 confirm 和消费端的 ack) 等。…...

Python3-批量重命名指定目录中的一组文件,更改其扩展名

Python3-批量重命名指定目录中的一组文件&#xff0c;更改其扩展名 1.argparse模块2.vars内置函数3.os.listdir(path)4.os.path.splitext(filepath)5.os.path.join6.os.rename7.os.path.isfile8.批量重命名指定目录中的一组文件&#xff0c;更改其扩展名 1.argparse模块 argpa…...

渗透测试KAILI系统的安装环境(第八课)

KAILI系统的安装环境(第八课) Kaili是一款基于PHP7的高性能微服务框架&#xff0c;其核心思想是面向服务的架构&#xff08;SOA&#xff09;&#xff0c;支持http、websocket、tcp等多种通信协议&#xff0c;同时还提供了RPC、Service Mesh、OAuth2等功能。Kaili框架非常适合构…...

如何正确方便的理解双指针?力扣102 (二叉树的层序遍历)

双指针&#xff0c;顾名思义就是指针的指针。 在此之前我们需要先理解单指针 &#xff08;简称为指针&#xff09;。指针很简单&#xff0c;直接上例子&#xff1a;例&#xff1a;现有两个变量&#xff0c;a10,b20. 要求&#xff1a;交换他们的值&#xff0c;输出的结果应为a20…...

Vue或uniapp引入自定义字体

一、为什么引入字体 对于大部分APP或网站而言&#xff0c;字体是很重要的一部分。在前端开发中&#xff0c;选用合适的字体往往会极大地提升网站的视觉体验。然而&#xff0c;网页中默认字体的种类和风格有限&#xff0c;且在不同的设备、浏览器上渲染效果不尽相同。因此&…...

​力扣:LCR 122. 路径加密​ 题目:剑指Offer 05.替换空格(c++)

本文章代码以c为例&#xff01; 力扣&#xff1a;LCR 122. 路径加密 题目&#xff1a; 代码&#xff1a; class Solution { public:string pathEncryption(string path) {for(int i0;i<path.size();i){if(path[i].){path[i] ;}}return path;} }; 难度升级&#xff08;原…...

cJson堆内存释放问题

cJSON_Delete()&#xff0c;是用来释放json对象的&#xff0c;释放父JSON对象后&#xff0c;子JSON对象也会被释放。 CJSON_free()&#xff0c;是用来释放其他对象的。 int main(void) {cJSON* cjson_test NULL;cJSON* cjson_address NULL;cJSON* cjson_skill NULL;char* s…...

论文阅读/写作扫盲

第一节&#xff1a;期刊科普 JCR分区和中科院分区是用于对期刊进行分类和评估的两种常见方法。它们的存在是为了帮助学术界和研究人员更好地了解期刊的学术质量、影响力和地位。 JCR分区&#xff08;Journal Citation Reports&#xff09;&#xff1a;JCR分区是由Clarivate Ana…...

一文拿捏对象内存布局及JMM(JAVA内存模型)

1 JMM(Java Memory Model) 1 概述 Java内存模型(Java Memory Model简称JMM)是一种抽象的概念&#xff0c;并不真实存在&#xff0c;它描述的一组规则或者规范。通过这些规则、规范定义了程序中各个变量的访问方式。jvm运行的程序的实体是线程&#xff0c;而每个线程运行时&am…...

Android组件通信——ActivityGroup(二十五)

1. ActivityGroup 1.1 知识点 &#xff08;1&#xff09;了解ActivityGroup的作用&#xff1b; &#xff08;2&#xff09;使用ActivityGroup进行复杂标签菜单的实现&#xff1b; &#xff08;3&#xff09;使用PopupWindow组件实现弹出菜单组件开发&#xff1b; 1.2 具体…...

js的继承的方式

1.对象冒充继承 使用 bind,call,apply 解决构造函数属性的继承 缺点:不能继承原型上的属性和方法 //-------------父类-------------function Person(name, age, sex) {this.name name;this.age age;this.sex sex;}Person.prototype.run function () {console.log(我${this…...

聊聊HttpClient的重试机制

序 本文主要研究一下HttpClient的重试机制 HttpRequestRetryHandler org/apache/http/client/HttpRequestRetryHandler.java public interface HttpRequestRetryHandler {/*** Determines if a method should be retried after an IOException* occurs during execution.**…...

北邮22级信通院数电:Verilog-FPGA(4)第三周实验:按键消抖、呼吸灯、流水灯 操作流程注意事项

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.注意事项 二.按键消抖 2.1 LED_deboun…...

Ghidra101再入门(上?)-Ghidra架构介绍

Ghidra101再入门(上&#xff1f;)-Ghidra架构介绍 最近有群友问我&#xff0c;说&#xff1a;“用了很多年的IDA&#xff0c;最近想看看Ghidra&#xff0c;这应该怎么进行入门&#xff1f;“这可难到我了。。 我发现&#xff0c;市面上虽然介绍Ghidra怎么用的文章和书籍很多&…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...