• 【kubernetes】使用helm部署redis


    1 什么是helm

    在学习使用k8s进行应用的部署时,或者从github上下载一些组件进行部署时,通常是直接用yaml的方式部署,用这种方式部署时,有个比较大的问题是,当参数需要调整时,就需要阅读整个yaml文件,找到对应的配置进行修改,而且,这种方式不方便进行版本管理,当其他人进行部署时,就需要知道修改了哪些参数以及对应的值,也就是说,无法保证两次部署的环境一致。如果有一个仓库保存了应用的yaml模板、模板中的参数以及版本号,每次选择版本进行部署时,可以用默认参数替换掉yaml模板中的变量,并且可以设置某些参数的值,用一条命令就可以进行环境的部署,而且能够保证环境的一致,另外,使用包管理器还可以解决另一个大问题:依赖,有些应用可能还依赖其他的组件,包管理器的配置中可以声明依赖,在包安装时,会先去下载依赖。

    helm被称为k8s的包管理器,类似于centos的yum和ubuntu的apt,只是yum仓库中保存的是rpm包,apt仓库中保存的是dpkg包,而helm仓库中保存的是Chart。

    关键术语:

    • Helm:包管理器,可以指代Helm整个机制,也可以指代客户端,就类似于yum客户端
    • Chart:yaml模板文件和模板参数文件的集合,类似于yum中的rpm包
    • Release:Chart在k8s集群中运行起来的实例,一个Chart可以在集群中多次安装,每次安装都会生成一个Release
    • Repository:仓库,保存Chart的地方,类似于yum中的源

    2 helm v2 vs v3

    在提到helm时,都会将v2和v3版本进行对比,它们的主要区别就是集群中的Tiller组件:v2版本会在集群中部署一个Tiller组件,helm客户端在进行操作时,会将请求发送给Tiller,Tiller调用k8s apiserver的接口实现功能,而v3版本的helm没有Tiller组件,helm客户端直接与k8s apiserver进行通信。

    详细的变化可以参考:Helm v2 迁移到 v3

    3 helm的安装和使用(以安装redis为例)

    wget https://get.helm.sh/helm-v3.13.0-linux-amd64.tar.gz
    tar -xf helm-v3.13.0-linux-amd64.tar.gz
    cp linux-amd64/helm /usr/local/bin/
    
    # 查看helm的版本和帮助文档
    helm version
    helm help
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在helm安装完成后,可以用helm repo add命令添加仓库,当然也可以直接用官方的hub。因此,第一步,添加仓库:

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

    添加完仓库后可以使用helm repo list命令查看仓库列表。

    添加完仓库后,就可以在仓库中搜索应用,类似于yum search

    # 在仓库中搜索redis
    helm search repo redis
    
    • 1
    • 2

    当搜索到想要安装的Chart时,可以进行安装:

    helm install luo-redis bitnami/redis --kubeconfig /root/.kube/config
    
    • 1

    然后就可以用helm list查看Release:

    请添加图片描述
    查看Pod和Service,这是默认创建的一主三从的redis集群:

    请添加图片描述

    然后就可以对集群进行测试。

    首先,需要获取集群的密码:REDIS_PASSWORD=$(kubectl get secret --namespace default luo-redis -o jsonpath="{.data.redis-password}" | base64 -d)

    然后可以选择一个从redis登陆进行测试验证:

    请添加图片描述

    首先以服务的方式访问master节点,将数据写入到redis集群的master节点,然后用无头服务的方式访问replicas-0的redis,可以看到数据已经同步了,然后对从节点进行写入失败了。

    上述测试说明这个一主三从的redis集群可以正常工作。

    这里使用helm创建redis集群全部用的都是默认参数,例如有三个从节点,如果要用4个从节点呢?此时就需要修改参数。

    4 helm的参数设置

    设置helm部署时的参数通常有两种方式:

    • 执行helm install时,在命令行中设置模板参数
    • 直接下载Chart,然后修改里面的values.yaml

    这里以修改从redis的数量为例。

    4.1 修改Chart的values.yaml

    使用helm pull bitnami/redis命令从仓库中下载redis的Chart,就会在当前目录下出现一个redis的压缩包,进行解压:

    请添加图片描述

    其中比较重要的有三个部分:

    • Chart.yaml:Chart的描述文件,描述Chart的版本、应用的版本、依赖等信息
    • templates/:使用golang的template语法实现的yaml模板文件
    • values.yaml:将模板文件中的变量提取为参数放在此处统一保存,可以对该文件进行修改

    在values.yaml中搜索replica会发现这里的replicaCount就是从redis的数量:

    请添加图片描述

    因此,可以直接将values.yaml中的replicaCount修改为4,然后用helm upgrade luo-redis bitnami/redis -f values.yaml进行更新,第一个参数是Release的名称,第二个参数是Chart的名称。

    当然,也可以在安装的时候设置-f values.yaml参数。

    4.2 命令行中设置模板参数

    在命令行中设置参数时,就需要知道参数的名字是什么,从上面下载的values.yaml中可以知道要修改从redis的数量只需要修改replica.replicaCount即可,因此,可以用下列命令修改从redis的数量。

    helm upgrade luo-redis bitnami/redis --set replica.replicaCount=2
    
    • 1
  • 相关阅读:
    list大坑请注意
    JavaScript:实现 jugglerSequence杂耍者序列算法 (附完整源码)
    [RK3568 Android11] Binder驱动结构体
    ReID的各种Loss的pytorch实现
    MySQL嵌套,别名,分组查询
    asp.net文档管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    Flutter旋转平移缩放动画实例 -- 手动实现底部FloatingActionButton弹入弹出动画
    校验 GPT-4 真实性的三个经典问题:快速区分 GPT-3.5 与 GPT-4,并提供免费测试网站
    python+django中小学课外知识在线学习网站pycharm
    VSCode修改主题为Eclipse 绿色护眼模式
  • 原文地址:https://blog.csdn.net/ILOVEYOUXIAOWANGZI/article/details/133590568