K8s MySQL實現數據持久化


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上。

 

 

 

 可以看到數據存在

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM