@TOC
前言
感兴趣的可以先看
链接: k8s学习--helm的详细解释及安装和常用命令
应用
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
192.168.10.17 | nfs | 1cpu一核 | 2G | 40G |
版本 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状态