Young Kbt blog Young Kbt blog
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)

Shp Liu

朝圣的使徒,正在走向编程的至高殿堂!
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)
  • 版本管理 - Maven

  • 开发管理 - Git

  • 操作系统 - Linux

  • 容器部署 - Docker

  • 持续集成 - Jenkins

  • 容器管理 - kubernetes

    • Kubernetes - 介绍
    • Kubernetes - 集群架构与组件
    • Kubernetes - 核心概念与专业术语
    • Kubernetes - 安装
    • Kubernetes - 深入 Pod
    • Kubernetes - 资源调度
    • Kubernetes - 服务发布
    • Kubernetes - 配置与存储
    • Kubernetes - 高级调度
    • Kubernetes - 认证与权限
    • Kubernetes - Helm
      • 什么是 Helm?
      • Helm 架构
        • 重要概念
        • 组件
      • 安装 Helm
      • Helm 的常用命令
      • chart 详解
        • 目录结构
        • Redis chart 实践
    • Kubernetes - 集群监控
    • Kubernetes - ELK 日志管理
    • Kubernetes - 可视化界面
    • Kubernetes - DevOps
  • 工具
  • 容器管理 - kubernetes
Young Kbt
2023-06-23
目录

Kubernetes - Helm

  • 什么是 Helm?
  • Helm 架构
    • 重要概念
    • 组件
  • 安装 Helm
  • Helm 的常用命令
  • chart 详解
    • 目录结构
    • Redis chart 实践

# 什么是 Helm?

Kubernetes 包管理器

Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。

Helm 管理名为 chart 的 Kubernetes 包的工具。Helm 可以做以下的事情:

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

对于Helm,有三个重要的概念:

  • chart 创建Kubernetes应用程序所必需的一组信息
  • config 包含了可以合并到打包的chart中的配置信息,用于创建一个可发布的对象
  • release 是一个与特定配置相结合的chart的运行实例

# Helm 架构

# 重要概念

  • chart:chart 创建 Kubernetes 应用程序所必需的一组信息
  • config:config 包含了可以合并到打包的 chart 中的配置信息,用于创建一个可发布的对象
  • release:release 是一个与特定配置相结合的 chart 的运行实例

# 组件

Helm 客户端

Helm 客户端 是终端用户的命令行客户端。负责以下内容:

  • 本地 chart 开发
  • 管理仓库
  • 管理发布
  • 与 Helm 库建立接口
    • 发送安装的 chart
    • 发送升级或卸载现有发布的请求

Helm 库

Helm 库 提供执行所有 Helm 操作的逻辑。与 Kubernetes API 服务交互并提供以下功能:

  • 结合 chart 和配置来构建版本
  • 将 chart 安装到 Kubernetes 中,并提供后续发布对象
  • 与 Kubernetes 交互升级和卸载 chart

独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。

# 安装 Helm

安装文档:https://helm.sh/docs/intro/install。

下载二进制文件

下载 Helm:

cd /opt/k8s

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

解压

tar -zxvf helm-v3.2.3-linux-amd64.tar.gz
1

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

mv helm usr/local/bin
1

添加 Helm 仓库

# 添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx # ingress-nginx 源
# 仓库源,任选或者都添加
helm repo add bitnami https://charts.bitnami.com/bitnami # 微软镜像
helm repo add aliyun https://apphub.aliyuncs.com/stable # 阿里镜像
helm repo add azure http://mirror.azure.cn/kubernetes/charts

# 查看仓库列表
helm repo list 

# 搜索 ingress-nginx
helm search repo ingress-nginx
1
2
3
4
5
6
7
8
9
10
11
12

# Helm 的常用命令

命令 功能
helm repo 列出、增加、更新、删除 chart 仓库
helm search 使用关键词搜索 chart
helm pull 拉取远程仓库中的 chart 到本地
helm create 在本地创建新的 chart
helm dependency 管理 chart 依赖
helm install 安装 chart
helm list 列出所有 release
helm lint 检查 chart 配置是否有误
helm package 打包本地 chart
helm rollback 回滚 release 到历史版本
helm uninstall 卸载 release
helm upgrade 升级 release

# 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 的时候覆盖
1
2
3
4
5
6
7
8
9
10
11
12
13

# Redis chart 实践

修改 helm 源

# 查看默认仓库
helm repo list

# 添加仓库源,任选或者都添加
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://apphub.aliyuncs.com/stable
helm repo add azure http://mirror.azure.cn/kubernetes/charts
1
2
3
4
5
6
7

搜索 redis chart

# 搜索 redis chart
helm search repo redis

# 查看安装说明
helm show readme bitnami/redis
1
2
3
4
5

修改配置安装

# 先将 chart 拉到本地
helm pull bitnami/redis

# 解压后,修改 values.yaml 中的参数
tar -xvf redis-17.11.6.tgz

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

# 安装操作
# 创建命名空间
kubectl create namespace redis

# 安装
cd ../
helm install redis ./redis -n redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

查看安装情况

# 查看 helm 安装列表
helm list -n redis

# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis
1
2
3
4
5

升级与回滚

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

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

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

helm rollback <RELEASE> [REVISION] [flags]
1
# 查看历史
helm history redis

# 回退到上一版本
helm rollback redis

# 回退到指定版本
helm rollback redis 3
1
2
3
4
5
6
7
8

helm 卸载 redis

helm delete redis -n redis
1

顺便记得把 PVC 也删除,它们不是级联删除。

编辑此页 (opens new window)
#Kubernetes
更新时间: 2023/09/18, 16:34:13
Kubernetes - 认证与权限
Kubernetes - 集群监控

← Kubernetes - 认证与权限 Kubernetes - 集群监控→

最近更新
01
技术随笔 - Element Plus 修改包名 原创
11-02
02
Reactor - 扩展性
11-02
03
Reactor - 最佳实践
11-02
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Young Kbt | blog
桂ICP备2021009994号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式