• 【云原生】K8S包管理(helm)


    安装 helm

    贡献者:幻灰龙
    Linux系统上有包管理软件:

    • 例如 centos 上有 yum
    • 例如 ubuntu 上有 apt-get

    Mac系统上有包管理软件:

    • 例如 brew

    Windows 上也有可用的包管理软件:

    • 例如 scoop
    • 例如 choco

    云原生的事实标准平台 k8s 上也可以安装各种组件和服务。而 helm 就是 k8s 的包管理软件,用来给 k8s 平台安装各种组件包或者服务包。
    在不同平台上,通过对应平台的包管理软件,可以快速安装 helm 客户端命令
    例如 Windows 上(注:choco 是Windows上的一个包管理命令chocolatey)

    choco install kubernetes-helm
    
    • 1

    例如 Mac 上,直接使用 brew 安装:

    brew install helm
    
    • 1

    helm三大概念(Chart、Repository、Release)

    helm 通过三大概念来管理 k8s 上的包:

    • Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。
    • Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami
    • Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。

    使用helm安装mysql

    贡献者:幻灰龙
    首先,初始化下 helm 的仓库,命名为 bitnami

    helm repo add bitnami https://charts.bitnami.com/bitnami
    
    • 1

    其次,查看下仓库 bitnami 里有哪些包

    helm search repo bitnami
    
    • 1

    在这里插入图片描述

    接着,通过 grep 命令过滤下 mysql 包相关的信息
    helm serach repo|grep mysql

    然后,安装 mysql 包到 k8s,可以看到安装的

    helm repo update # 确定我们可以拿到最新的charts列表 
    helm install bitnami/mysql --generate-name
    
    • 1
    • 2

    在这里插入图片描述

    查看已经安装的 chart 列表,可以看到mysql已经装上了:
    helm list

    现在,使用helm status xxx命令查看已安装mysql的状态
    在这里插入图片描述
    安装后的 mysql 可以通过 kubectl run 命令在pod上启动 mysql服务。

    使用 helm 部署 Python 应用

    贡献者:幻灰龙
    回归下示例Python应用 cloud_native_hello_py 的目录结构:

    .
    ├── Dockerfile
    ├── README.md
    ├── k8s.deployment.yaml
    ├── k8s.service.yaml
    └── src
        ├── main.py
        └── requirements.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    我们使用 kubectl 命令部署过该 Python 服务,现在,我们用 helm 来部署。
    首先,在项目命令下通过 helm 命令创建一个chart 配置文件夹
    makedir chart cd chart helm create hello-py
    此时,目录结构如下:

    .
    ├── Dockerfile
    ├── README.md
    ├── chart
    │   └── hello-py
    │       ├── Chart.yaml
    │       ├── charts
    │       ├── templates
    │       │   ├── NOTES.txt
    │       │   ├── _helpers.tpl
    │       │   ├── deployment.yaml
    │       │   ├── hpa.yaml
    │       │   ├── ingress.yaml
    │       │   ├── service.yaml
    │       │   ├── serviceaccount.yaml
    │       │   └── tests
    │       │       └── test-connection.yaml
    │       └── values.yaml
    ├── k8s.deployment.yaml
    ├── k8s.service.yaml
    └── src
        ├── main.py
        └── requirements.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    其中:

    • Chart.yaml: 基本描述
    • values.yaml: 配置镜像名称等
    • charts: 用于存放依赖的其他 chart
    • templates: 用于存放需要的配置模板

    修改 values.yaml:

    replicaCount: 1
    images: 
      image: fanfeilong/cloud_native_hello_py 
    pullPolicy: IfNotPresent
    
    • 1
    • 2
    • 3
    • 4

    现在,使用 heml 安装
    helm install ./chart/hello-py/ --generate-name
    检测下 k8s 的 deployment 和 sevice:

    端口转发:

    访问服务:

    helm 可以规范化k8s应用的配置和部署。helm 通过chart依赖来解决所部署的k8s应用之间的依赖。

    本文内容到此结束了,
    如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
    如有错误❌疑问💬欢迎各位大佬指出。
    主页共饮一杯无的博客汇总👨‍💻

    保持热爱,奔赴下一场山海。🏃🏃🏃

    在这里插入图片描述

  • 相关阅读:
    Godot 脚本外置参数设置
    集成了这个分布式任务调度平台,真的很爽~~
    LeetCode算法导航
    【Spring内容介绍 | 第一篇】什么是事务管理
    速览默默发展的Web3邮箱赛道
    WPF 入门笔记 - 01 - 入门基础以及常用布局
    【高级语法篇】Java必备基础(思维导图+代码)
    编程常见题目2
    【微搭低代码】小程序中获取当前城市信息
    Schillace 定律 背后的 Sam Schillace
  • 原文地址:https://blog.csdn.net/qq_35427589/article/details/125818879