本節演示如何爲 MySQL 數據庫提供持久化存儲,步驟爲:html
建立 PV 和 PVC。node
部署 MySQL。mysql
向 MySQL 添加數據。sql
模擬節點宕機故障,Kubernetes 將 MySQL 自動遷移到其餘節點。數據庫
驗證數據一致性。學習
首先建立 PV 和 PVC,配置以下:spa
mysql-pv.yml3d
mysql-pvc.ymlrest
建立 mysql-pv
和 mysql-pvc
:code
接下來部署 MySQL,配置文件以下:
PVC mysql-pvc
Bound 的 PV mysql-pv
將被 mount 到 MySQL 的數據目錄 var/lib/mysql
。
MySQL 被部署到 k8s-node2
,下面經過客戶端訪問 Service mysql
:
kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql -ppassword
更新數據庫:
① 切換到數據庫 mysql。
② 建立數據庫表 my_id。
③ 插入一條數據。
④ 確認數據已經寫入。
關閉 k8s-node2
,模擬節點宕機故障。
一段時間後,Kubernetes 將 MySQL 遷移到 k8s-node1
。
驗證數據的一致性:
MySQL 服務恢復,數據也無缺無損。
本章咱們討論了 Kubernetes 如何管理存儲資源。
emptyDir 和 hostPath 類型的 Volume 很方便,但可持久性不強,Kubernetes 支持多種外部存儲系統的 Volume。
PV 和 PVC 分離了管理員和普通用戶的職責,更適合生產環境。咱們還學習瞭如何經過 StorageClass 實現更高效的動態供給。
最後,咱們演示瞭如何在 MySQL 中使用 PersistentVolume 實現數據持久性。
書籍:
1.《天天5分鐘玩轉Kubernetes》
https://item.jd.com/26225745440.html
2.《天天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html
3.《天天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html