1、搭建nfs實現mysql數據持久化
1 在master執行 2 yum -y install nfs-utils rpcbind 3 mkdir /nfsdata/mysql -p 4 echo /nfsdata *(rw,no_root_squash,sync) > /etc/exports 5 systemctl restart nfs-server rpcbind 6 systemctl enable rpcbind && systemctl enable nfs-server 7 showmount -e 8 Export list for master: 9 /nfsdata * 10 在node節點執行 11 yum -y install nfs-utils rpcbind 12 systemctl restart nfs-server rpcbind
2、創建pv
server: IP為master的Ip
vim mysql-pv-yaml
1 apiVersion: v1 2 kind: PersistentVolume 3 metadata: 4 name: mypv1 5 spec: 6 capacity: 7 storage: 5Gi 8 accessModes: 9 - ReadWriteMany 10 persistentVolumeReclaimPolicy: Recycle #Retain 手動刪除 11 storageClassName: nfs 12 nfs: 13 path: /nfsdata/mysql 14 server: 192.168.3.36
#kubectl apply -f mysql-pv-yaml
3、創建pvc
vim mysql-pvc-yaml
1 apiVersion: v1 2 kind: PersistentVolumeClaim 3 metadata: 4 name: mypvc1 5 spec: 6 accessModes: 7 - ReadWriteMany 8 resources: 9 requests: 10 storage: 4Gi 11 storageClassName: nfs
#kubectl apply -f mysql-pv-yaml
查看pv、pvc的狀態。
4、創建mysql-pod+svc
vim mysql-deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: mysql spec: selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: #配置變量,設置mysql的密碼 - name: MYSQL_ROOT_PASSWORD value: 123.com ports: - containerPort: 3306 volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql #MySQL容器的數據都是存在這個目錄的,要對這個目錄做數據持久化 volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mypvc1 #指定pvc名稱 --- apiVersion: v1 kind: Service metadata: name: mysql spec: selector: app: mysql type: NodePort ports: - port: 3306 targetPort: 33333
#kubectl apply -f mysql-deploy.yaml
查看pod狀態
kubectl get pod -o wide -w
5、進入數據庫,添加數據
kubectl exec -it mysql-74b7b6d8cc-r5kq5 -- /bin/bash
6、手動刪除節點,驗證容器中的數據是否存在。
在node1上的刪除容器,由於deployment保證副本數量。所以會重新調度到node2上。
可以看到數據存在