前言

感兴趣的可以先看
链接: 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状态

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐