• k8s学习--利用helm部署应用mysql,加深helm的理解



    前言

    感兴趣的可以先看
    链接: k8s学习–helm的详细解释及安装和常用命令

    应用

    环境

    虚拟机

    Ip主机名cpu内存硬盘
    192.168.10.11master012cpu双核4G100G
    192.168.10.12worker012cpu双核4G100G
    192.168.10.13worker022cpu双核4G100G
    192.168.10.17nfs1cpu一核2G40G

    版本 centos7.9
    已部署k8s-1.27

    一、一键部署helm

    具体命令解释请看,这里不再过多描述
    链接: k8s学习–helm的详细解释及安装和常用命令

    wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
    tar xf helm-v3.13.2-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/bin/
    helm version
    helm repo add stable http://mirror.azure.cn/kubernetes/charts/
    helm repo add bitnami https://charts.bitnami.com/bitnami
    helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    helm repo update
    helm repo list
    

    二、部署storageclass

    (1)配置NFS(主机IP:192.168.10.17)

    如果nfs服务器已经配置好,只需在各节点上安装nfs-utils,rpcbind即可

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
    yum -y install nfs-utils rpcbind       #各主机都安装
    mkdir /nfsdata
    cat /etc/exports
    /nfsdata *(rw,sync,no_root_squash)
    systemctl start rpcbind
    systemctl start nfs-server
    systemctl enable rpcbind
    systemctl enable nfs-server
    showmount -e
    
    (2)创建配置storageclass

    详细解释请看
    链接: StorageClass详细解释与应用

    master节点

    mkdir sc
    cd sc
    

    创建账号、创建权限、给账号关联权限
    注:需要vpn

    wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/rbac.yaml
    kubectl apply -f rbac.yaml
    

    通过中间件将访问账号与共享存储关联

    vim nfs-deployment.yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nfs-client-provisioner
    spec:
      replicas: 1
      strategy:
        type: Recreate
      selector:
        matchLabels:
          app: nfs-client-provisioner
      template:
        metadata:
          labels:
            app: nfs-client-provisioner
        spec:
          serviceAccount: nfs-client-provisioner
          containers:
            - name: nfs-client-provisioner
              image: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0
              volumeMounts:
                - name: nfs-client-root
                  mountPath: /persistentvolumes
              env:
                - name: PROVISIONER_NAME
                  value: k8s-sigs.io/nfs-subdir-external-provisioner
                - name: NFS_SERVER
                  value: 192.168.10.17
                - name: NFS_PATH
                  value: /nfsdata
          volumes:
            - name: nfs-client-root
              nfs:
                server: 192.168.10.17
                path: /nfsdata
    
    kubectl apply -f nfs-deployment.yaml
    

    配置storageclass与中间件关联

    wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/class.yaml
    kubectl apply -f class.yaml
    

    三、安装mysql 应用:

    helm search repo mysql
    

    在这里插入图片描述

    helm install stable/mysql --generate-name --set persistence.storageClass=nfs-client --set mysqlRootPassword=test123
    

    解释
    1.my-release 是你的发布名称,你可以随意更改。
    2.bitnami/mysql 是 Chart 的名称和仓库路径。
    3.–set persistence.storageClass=nfs-client 指定了存储类为 nfs-client。
    4.–set auth.rootPassword=test123 设置了 MySQL 的 root 用户密码。
    在这里插入图片描述

    查看chart有没有被创建出来

    helm list
    

    在这里插入图片描述

    可以看到chart自动创建了pod,pvc,pv

    kubectl get pod
    

    在这里插入图片描述

    kubectl get pvc
    

    在这里插入图片描述

    kubectl get pv
    

    在这里插入图片描述
    一个 chart 包是可以多次安装到同一个集群中的,每次安装都会产生一个release, 每个release都可以独立管理和升级。
    我们可以试着再创建一个

    helm install stable/mysql --generate-name --set persistence.storageClass=nfs-client --set mysqlRootPassword=root
    helm ls
    

    在这里插入图片描述
    查看有没有创建出第二个pod

    kubectl get pods
    

    可以看到第二个pod
    在这里插入图片描述
    可以进去查看数据库是否正常运行

    [root@master01 sc]# kubectl exec -it mysql-1718516470-579958995c-k7hlb -- bash 
    root@mysql-1718516470-579958995c-k7hlb:/# mysql -uroot -ptest123
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    nfs服务器上查看/nfsdata目录内容

    ls /nfsdata
    

    在这里插入图片描述

    查看chart资源
    helm ls
    

    在这里插入图片描述
    查看资源

    kubectl get all -l release=mysql-1718516470
    

    在这里插入图片描述

    kubectl get all | grep mysql-1718516470
    

    在这里插入图片描述
    我们也可以 helm show chart 命令来了解 MySQL 这个 chart 包的一些特性:

    helm show chart stable/mysql
    

    在这里插入图片描述
    如果想要了解更多信息,可以用 helm show all 命令:

    helm show all stable/mysql
    

    数据过多,就不展示了,可以自己看看

    删除Release

    如果需要删除这个 release,也很简单,只需要使用 helm uninstall或helm delete 命令即可:

    helm uninstall mysql-1718516470
    

    nfs服务器上查看/nfsdata目录内容

    ls /nfsdata
    

    在这里插入图片描述
    uninstall 命令会从 Kubernetes 中删除 release,也会删除与 release 相关的所有 Kubernetes 资源以及 release 历史记录。

    helm ls
    

    在这里插入图片描述
    在删除的时候使用 --keep-history 参数,则会保留 release 的历史记录,该 release 的状态就是 UNINSTALLED,

    helm uninstall mysql-1718516710 --keep-history
    
    helm ls
    

    可以看到已经全部删除了
    在这里插入图片描述
    查看所有(包括已删除)的Helm发行版

    helm ls -a
    

    在这里插入图片描述
    回滚版本

    helm rollback mysql-1718516710 1
    
    helm ls
    

    可以看到已经恢复了
    在这里插入图片描述
    rollback后,又回到deployed状态

  • 相关阅读:
    gitlab与github 密钥冲突
    重读经典《操作系统:设计与实现》
    技术干货 | 基于MindSpore的图算融合探索和实践
    迅为iTOP-RK3588开发板多屏同显多屏异显异触
    tensor维度变换
    Netty深入浅出(无处不在的IO)
    Webmin远程命令执行漏洞复现
    Jenkins :添加node权限获取凭据、执行命令
    SpringBoot + EasyExcel 实现表格数据导入
    常用算法(四)——KMP算法
  • 原文地址:https://blog.csdn.net/lwxvgdv/article/details/139718800