考虑采用NFS结合PV PVC实现持久化存储
配置nfs
k8s-master nfs-server
k8s-node1 k8s-node2 nfs-client
所有节点安装nfs
yum install -y nfs-common nfs-utils
在master节点创建共享目录
[root@k8s-master k8s]# mkdir nfsdata
授权共享目录
[root@k8s-master k8s]# chmod 666 nfsdata
编辑exports文件
[root@k8s-master k8s]# vi etc/exports
输入如下内容
/root/k8s/nfsdata *(rw,no_root_squash,no_all_squash,sync)
启动rpc和nfs(注意顺序)
[root@k8s-master k8s]# systemctl start rpcbind
[root@k8s-master k8s]# systemctl start nfs
查看 某个节点上的 NFS服务器
showmount -e ip
在三台服务器上新键: mkdir /nfs/data
.创建Deployment资源对象,镜像为mysql:8.0
节点提前下载镜像:
Node1和node2 拉取mysql8.0镜像
[root@node2 ~]# docker pull mysql:8.0.22
[root@node1 ~]# docker pull mysql:8.0.22
创建pv
[root@master ~]# more nfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfs/data
server: 192.168.240.57
[root@master ~]# kubectl apply -f nfs-pv.yaml
persistentvolume/mysql created
创建pvc
[root@master ~]# more nfs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: nfs
[root@master ~]# kubectl apply -f nfs-pvc.yaml
persistentvolumeclaim/mysql created
创建mysql初始化
[root@master ~]# kubectl apply -f mysql.yaml
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-6b8564f498-wd4m4 1/1 Running 0 44s
nginx-offi 1/1 Running 0 2d23h
[root@master ]# mkdir -p /nfs/data
Deployment资源创建成功。
进入MySQL数据库,创建测试数据
[root@master ~]# kubectl exec -it mysql-6b8564f498-wd4m4 -- mysql -uroot -p123.com
查看Pod运行在哪个节点,关闭对应的节点上的kubelet,查看是否重新创建Pod,创建后的Pod数据是否还存在。
如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢🙏🏻