K8s數據持久化
數據持久化 Volume介紹
Volume介紹:Volume是Pad中能夠被多個容器訪問的共享目錄Kubernetes中的Volume不Pad生命周期相同,但不容器的生命周期丌相關Kubernetes支持多種類型的Volume,并且一個Pod可以同時使用任意多個VolumeVolume類型包括:- EmptyDir:Pod分配時創建, K8S自動分配,當Pod被移除數據被清空。用于臨時空間等。- hostPath:為Pod上掛載宿主機目錄。用于持久化數據。- nfs:掛載相應磁盤資源。
1.EmptyDir實驗
EmptyDir實驗cat >emptyDir.yaml <> /data/busybox/index.html;sleep 3;done"] volumes: - name: cache-volume emptyDir: {}EOF
2.hostPath實驗
hostPath實驗1.發現的問題:- 目錄必須存在才能創建- POD不固定會創建在哪個Node上,數據不統一2.type類型說明https://kubernetes.io/docs/concepts/storage/volumes/#hostpathDirectoryOrCreate 目錄不存在就自動創建Directory 目錄必須存在FileOrCreate 文件不存在則創建File 文件必須存在3.根據Node標簽選擇POD創建在指定的Node上方法1: 直接選擇Node節點名稱apiVersion: v1kind: Podmetadata: name: busybox-nodenamespec: nodeName: node2 containers: - name: busybox-pod image: busybox volumeMounts: - mountPath: /data/pod/ name: hostpath-volume command: ["/bin/sh","-c","while true;do echo $(date) >> /data/pod/index.html;sleep 3;done"] volumes: - name: hostpath-volume hostPath: path: /data/node/ type: DirectoryOrCreate 方法2: 根據Node標簽選擇Node節點kubectl label nodes node3 disktype=SSDapiVersion: v1kind: Podmetadata: name: busybox-nodenamespec: nodeSelector: disktype: SSD containers: - name: busybox-pod image: busybox volumeMounts: - mountPath: /data/pod/ name: hostpath-volume command: ["/bin/sh","-c","while true;do echo $(date) >> /data/pod/index.html;sleep 3;done"] volumes: - name: hostpath-volume hostPath: path: /data/node/ type: DirectoryOrCreate 4.實驗-編寫mysql的持久化deploymentapiVersion: apps/v1kind: Deploymentmetadata: name: mysql-dp namespace: defaultspec: selector: matchLabels: app: mysql replicas: 1 template: metadata: name: mysql-pod namespace: default labels: app: mysql spec: containers: - name: mysql-pod image: mysql:5.7 ports: - name: mysql-port containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456" volumeMounts: - mountPath: /var/lib/mysql name: mysql-volume volumes: - name: mysql-volume hostPath: path: /data/mysql type: DirectoryOrCreate nodeSelector: disktype: SSD
3.PV和PVC
PV和PVC1.master節點安裝nfsyum install nfs-utils -ymkdir /data/nfs-volume -pvim /etc/exports/data/nfs-volume 10.0.0.0/24(rw,async,no_root_squash,no_all_squash)systemctl start rpcbindsystemctl start nfsshowmount -e 127.0.0.12.所有node節點安裝nfsyum install nfs-utils.x86_64 -yshowmount -e 10.0.0.113.編寫并創建nfs-pv資源cat >nfs-pv.yaml <mysql-pvc.yaml <mysql-dp.yaml <