本节演示如何为 MySQL 数据库提供持久化存储,步骤为:node
建立 PV 和 PVC。mysql
部署 MySQL。sql
向 MySQL 添加数据。数据库
模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其余节点。学习
验证数据一致性。spa
首先建立 PV 和 PVC,配置以下:3d
mysql-pv.ymlrest
mysql-pvc.ymlcode
建立 mysql-pv
和 mysql-pvc
:blog
接下来部署 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 实现数据持久性。