本节演示如何为 MySQL 数据库提供持久化存储,步骤为:
创建 PV 和 PVC。
部署 MySQL。
向 MySQL 添加数据。
模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点。
验证数据一致性。
首先创建 PV 和 PVC,配置如下:
mysql-pv.yml
mysql-pvc.yml
创建 <code>mysql-pv</code> 和 <code>mysql-pvc</code>:
接下来部署 MySQL,配置文件如下:
PVC <code>mysql-pvc</code> Bound 的 PV <code>mysql-pv</code> 将被 mount 到 MySQL 的数据目录 <code>var/lib/mysql</code>。
MySQL 被部署到 <code>k8s-node2</code>,下面通过客户端访问 Service <code>mysql</code>:
更新数据库:
① 切换到数据库 mysql。
② 创建数据库表 my_id。
③ 插入一条数据。
④ 确认数据已经写入。
关闭 <code>k8s-node2</code>,模拟节点宕机故障。
一段时间后,Kubernetes 将 MySQL 迁移到 <code>k8s-node1</code>。
验证数据的一致性:
MySQL 服务恢复,数据也完好无损。
本章我们讨论了 Kubernetes 如何管理存储资源。
emptyDir 和 hostPath 类型的 Volume 很方便,但可持久性不强,Kubernetes 支持多种外部存储系统的 Volume。
PV 和 PVC 分离了管理员和普通用户的职责,更适合生产环境。我们还学习了如何通过 StorageClass 实现更高效的动态供给。
最后,我们演示了如何在 MySQL 中使用 PersistentVolume 实现数据持久性。
书籍:
1.《每天5分钟玩转Kubernetes》
<a href="https://item.jd.com/26225745440.html">https://item.jd.com/26225745440.html</a>
2.《每天5分钟玩转Docker容器技术》
<a href="https://item.jd.com/16936307278.html">https://item.jd.com/16936307278.html</a>
3.《每天5分钟玩转OpenStack》
<a href="https://item.jd.com/12086376.html">https://item.jd.com/12086376.html</a>