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

Helm学习笔记

文章目录

  • 概念
    • 定义
    • helm组件
    • helm的工作流程
  • helm安装
  • helm仓库
  • helm部署应用
  • helm应用的更新或回退或卸载

概念

定义

学习helm首先得了解helm是什么,我们先来看一下helm的定义:helm是将kubernetes的各种资源对象打包,类似于Linux中的yum工具,来完成复杂软件的安装和部署,并且支持部署实例的版本管理,简化了在kubernetes上部署和管理应用的复杂度。helm使用的包格式被称为chart,chart就是一个描述所有kubernetes资源的文件集合,一个chart用于部署一个完整的应用。

helm组件

helm的相关组件有以下几种:
1.helm:一个命令行工具,用于本地开发以及管理chart还有进行chart仓库管理等等
2.Tiller:helm的服务端,tiller负责接受helm的请求,与k8s的apiserver交互,根据chart来生成一个release并管理release。这个在helm V2版本中使用,Helm V3中已经不再依赖tiller,而是helm客户端程序自己与apiserver交互
3.chart:helm软件包,helm的打包格式叫做chart,它包含一个应用所需资源对象的yaml文件,通常以.tgz的方式提供,也可以是文件夹的方式
4.config:部署时设置到chart中的配置数据
5.release:基于chart和config部署到kubernetes集群中运行的一个实例,一个chart可以被部署多次,每次的release都不相同
6.repository:用于存放和共享chart的仓库
helm中非常重要的一个概念就是chart,所以请认真的理解chart的概念,这对于我们学习helm非常重要

helm的工作流程

1.开发人员将开发好的chart上传到chart仓库
2.运维人员基于chart的定义,设置必要的配置数据(config),使用helm命令行工具将应用一键部署到kubernetes集群中,以release概念管理后续的更新、回滚等
3.chart仓库中的chart可以用于共享和分发

helm安装

helm的安装方式有多种,建议参考官方文档,我采用的是二进制安装方式,从官方网站上获取到helm的二进制文件,然后将其传输到Kubernetes的master节点上,解压缩后放到/usr/local/bin下面,并改名为helm,然后授予可执行权限即可
通过helm version命令可以查看helm的安装是否成功

helm仓库

helm中的一个非常重要的概念是chart仓库,就像我们使用Linux下载软件也需要添加正确的源,docker下载镜像需要添加正确的镜像仓库一样,helm部署应用也需要使用正确的helm仓库,也称为chart仓库。chart仓库你可以自己构建,然后上传你自己构建的chart包,也可以添加一些官方或者别人提供的仓库。下面通过一些实际操作来展示helm仓库的操作
添加chart仓库,例如添加一个官方提供的稳定仓库:

helm repo add stable https://charts.helm.sh/stable

查询添加的stable仓库中可部署的chart列表:

helm search repo stable

除了我们添加的stable仓库外,我们还可以通过helm官方提供的Artifact Hub(Artiface Hub)来查询可部署的应用,Artifact Hub会提供来自不同仓库的大量的chart列表,并且提供给你相应的部署方式,感兴趣的可以去它的官网看看:

helm search hub

之前的查询是不过滤查询,会显示所有可用的chart,也可以添加关键字过滤查询,如查询包含mysql的chart列表:

helm search hub mysql

总结一下,关于chart仓库常用的操作命令有以下:

helm repo list			#查看添加的仓库列表
helm repo add stable https://charts.helm.sh/stable	#添加仓库
helm repo update		#更新仓库中chart列表
hlm repo remove stable	#删除一个仓库

helm部署应用

我们使用helm最重要的就是希望通过helm来简化我们在Kubernetes中部署应用的流程,所以究竟如何通过helm部署应用呢?
首先学习helm部署应用的命令:helm install,它最少需要两个仓库,分别是release的名称(自定义)以及chart名称(可以通过helm search查询得到),如果不想要自定义release的名称,希望helm自动生成release名称,可以在后面添加-- generate- name参数
例如部署一个mariadb的应用:

helm install mariadb-1 stable/mariadb

查询helm是否部署成功:

helm list -A			#可以查询到所有helm部署的应用
helm status mariadb-1		#可以查询到mariadb-1这个release的部署状态

以上这种部署方式是最简单粗暴的,但是这里面所有的东西多是官方提供的固定的,包括创建的副本数,名称,mariadb中root用户的密码等,都是这个helm中提前定义好的,这显然是不符合我们的实际使用的,我们希望这个helm部署的应用能够更加符合我们的实际需求,这就需要修改其中的很多参数,那么如何使用helm部署一个符合自己使用习惯的mariadb呢?
假如我的需求是部署一个mariadb,不想要一主一从,只需要一个master就可以了,然后root用户的密码设置为abc123,这应该如何实现呢?
首先chart它是有提供一个values.yaml文件供我们修改的,通过这个yaml文件我们可以定义自己想要的参数,但是我们如何知道一个应用有哪些参数可以修改呢,通过helm show values stable/mariadb这个命令可以查看到chart可以配置的选项,然后修改配置项的方式也有两种,可以写一个yaml文件进行覆盖,也可以使用-- set的方式直接在创建时候的命令行中进行修改,这里我选择第一种方式

  1. mariadb的chart中定义了PVC,所以我们首先需要在我们的Kubernetes集群中创建PV
    在这里插入图片描述
    2.自定义配置文件进行覆盖
    在这里插入图片描述
    3.部署应用:helm install -f mariadb.yaml mariadb-1 stable/mariadb,此时pod是正常运行的状态,如果没有提前准备PV,那么pod将是pending状态

helm应用的更新或回退或卸载

当一个chart有新版本发布或者需要修改已部署的release的配置时,可以使用helm upgrade命令完成应用的更新
更新release的配置信息

helm upgrade -f user1.yaml mariadb-1 stable/mariadb      	#user1.yaml是你需要修改的配置信息的yaml文件
helm get values mariadb-1	#可以查看自定义的配置信息

更新mariadb的密码

helm upgrade --set rootUser.password="abc123",replication.password="rep123456" mariadb-1 stable/mariadb

更新后release的revision会被更新为2,可以通过helm list查看
helm回滚可以使用helm rollback命令完成
上述更新中如果想回退为版本1:helm rollback mariadb-1 1
release的revision号是持续增加的,每次安装更新或者回滚,修订号都会加1,所以上面回退为版本1后,现在helm list查看版本会为3,helm history mariadb-1可以查看release的修订历史记录(mariadb-1是release名称)
如果想卸载一个release,可以使用helm uninstall命令,后面跟release名称
卸载一个release的同时会删除历史记录,如果想要保留历史记录,需要在卸载时添加参数–keep-history,helm uninstall mariadb-1 --keey-history
helm list --uninstalled命令可以查看–keep-history保留的卸载记录,但是由于这个release已经删除了,所以不能再回滚已卸载的release的某个版本了

如果你对helm感兴趣,还可以去学习如何自己构建一个chart包,这个过程也很有趣,就是将自己的Kubernetes中的yaml文件规整,然后抽取出一个values.yaml文件供人修改,然后使用helm package打包

相关文章:

Helm学习笔记

文章目录概念定义helm组件helm的工作流程helm安装helm仓库helm部署应用helm应用的更新或回退或卸载概念 定义 学习helm首先得了解helm是什么,我们先来看一下helm的定义:helm是将kubernetes的各种资源对象打包,类似于Linux中的yum工具&#…...

深入学习JavaScript系列(二)——作用域和作用域链

本篇为第二篇,本系列文章会在后续学习后持续更新。 第一篇:#深入学习JavaScript系列(一)—— ES6中的JS执行上下文 第二篇:# 深入学习JavaScript系列(二)——作用域和作用域链 第三篇&#x…...

【计算机视觉 | 目标检测】DETR风格的目标检测框架解读

文章目录一、前言二、理解2.1 DETR的理解2.2 DETR的细致理解2.2.1 Backbone2.2.2 Transformer encoder2.2.3 Transformer decoder2.2.4 Prediction feed-forward networks (FFNs)2.2.5 Auxiliary decoding losses2.3 更具体的结构2.4 编码器的原理和作用2.5 解码器的原理和作用…...

【LeetCode】剑指 Offer 41. 数据流中的中位数 p214 -- Java Version

题目链接:https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof 1. 题目介绍(41. 数据流中的中位数) 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位…...

CSS3 知识总结

1,什么是CSS 用于定义网页的样式,包括不同设备和屏幕尺寸的设计、布局和显示变化。 2,CSS的作用优点 CSS 描述 HTML 元素如何在屏幕、纸张或其他媒体上显示 CSS 节省了大量工作。它可以一次控制多个网页的布局 3,css构成 CSS 规…...

回溯算法37:解数独

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:37. 解数独 题目: 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则…...

【蓝桥杯-筑基篇】动态规划

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 1.最大连续子段和 2.LCS 最大公共子序列 3.LIS 最长上升子序列 4.数塔 5.最大子矩阵和 6.背包问题 ①01背包问题 ②完全背包 1.最大连续子段和 这段代码是一个求最大子数组和的算法,使用…...

Unity利用Photon PUN2框架快速实现多人在线游戏实例分享

简介 Photon 是一个泛用性的 ScoketServer 套装软件,可用于多人在线游戏、聊天室、大厅游戏,并同时支持 Windows、Unity3D、iOS、Android、Flash 等平台。Photon 包含两个部分,一部分是 Socket 服务器,另一部分是其针对各个平台编写的 SDK,Unity3D 平台对应的 SDK 为 Pho…...

ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现

文章目录ChatGPT直出1.5w字论文查重率才30% - 基于物联网技术的智能家居控制系统设计与实现一、绪论1.1 研究背景与意义1.2 国内外研究现状分析1.3 研究内容与目标1.4 研究方向和思路二、物联网技术与智能家居概述2.1 物联网技术原理与应用2.2 智能家居的概念与发展历程2.3 智能…...

特斯拉的操作系统是用什么语言编写的?

总目录链接>> AutoSAR入门和实战系列总目录 文章目录特斯拉车辆操作系统特斯拉GitHub中使用的语言Ruby和GoPythonSwift 和 Objective CQt我们知道操作系统至少需要一些非常低级的代码,这些代码在系统首次启动时运行,必须使用接近硬件的语言编写。…...

C++学习8-C++提高编程

文章目录前言一、模板1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.2.2 函数模板注意事项1.2.3 函数模板案例复习:计算数组长度1.2.4 普通函数与函数模板的区别1.2.5 普通函数与函数模板的调用规则1.2.6 模板的局限性1.3 类模板1.3.1 类模板语法1.3.2 类模板与函…...

ubuntu安装git server

一安装 要在Ubuntu上安装Git服务器,需要按照以下步骤进行操作: 安装Git: sudo apt-get update sudo apt-get install git 创建一个Git用户和一个Git仓库目录: sudo adduser git sudo mkdir /home/git/repo.git sudo chown git:git /home/git/repo.git 初始化Git仓库: c…...

物流云数据分析平台

物流云数据分析服务平台 http://project.webcats.cn/bx/36569/2455/index.html 本次系统模拟的是湖南省数据,解释权归杭氏集团所有! 1、系统简介: 物流大数据集成展示系统旨在通过大屏幕全面显示指定地区的物流运营车辆、物流公司和货主的相关信息和…...

配置OBS存储功能、新搭建obs

通过应用开发环境与OBS(Object-based Storage Service)对接,实现对象或者Widget资产存储功能。 背景信息 对象存储服务(Object-based Storage Service,OBS)是一个基于对象的海量存储服务,为客…...

基于DPDK收包的suricata的安装和运行

操作系统版本:Ubuntu 20.04.5 suricata版本: suricata-7.0.0-rc1 suricata是一个基于规则的入侵检测和防御引擎,功能强大,但性能可能 差强人意,不过目前最新的7版本已经支持DPDK收包了,DPDK是Intel提供的高…...

浅谈23种设计模式

创建型模式 有5种设计模式 抽象工厂(Abstract Factory):多套方案 抽象工厂模式是对创建不同的产品类型的抽象。对应到工作中,我们的确应该具备提供多套方案的能力,这也是我们常说的,要提供选择题。当你有这…...

JetBrains Rider 2022.3.3 Crack

具有 ReSharper 强大功能的令人难以置信的 .NET IDE!Rider 在我们使用 Windows 和 macOS 的整个开发团队中使用。 什么是骑士? JetBrains Rider 是一个基于 IntelliJ 平台和 ReSharper 的跨平台 .NET IDE。 支持许多 .NET 项目类型 JetBrains Rider 支持…...

浅理解扁平数据结构转Tree(树形结构)

文章目录📋前言🎯扁平数据结构🎯树形数据结构🎯使用递归将扁平数据转换为树形数据📝最后📋前言 在前端开发中,我们经常需要将扁平数据结构转换为树形结构(Tree)。比如在…...

前端开发——JavaScript的条件语句

世界不仅有黑,又或者白 世界而是一道精致的灰 ——Lungcen 目录 条件判断语句 if 语句 if else 语句 if else if else 语句 switch语句 break 关键字 case 子句 default语句 while循环语句 do while循环语句 for循环语句 for 循环中的三个表达式 for 循环嵌套 for …...

2.11 循环赛日程表

博主简介:一个爱打游戏的计算机专业学生博主主页: 夏驰和徐策所属专栏:算法设计与分析 目录 书本内容: 我的理解: 更优化的算法: 总结 1.注意实现问题 2.当用C语言和C实现循环赛日程表算法时&#xff…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...