Kubernetes 之 MySQL 持久存储和故障转移

一、规划

我们接着之前的文档的架构规划进行下面的操作。

IP

角色

192.168.1.200

k8s-master

192.168.1.201

k8s-node01

192.168.1.202

k8s-node02

192.168.1.203

k8s-store

我们演示如何为 MySQL 数据库提供持久化存储,主要分为下面几个步骤:

  1. 创建 PV 和 PVC。

  2. 部署 MySQL。

  3. 向 MySQL 添加数据。

  4. 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到其他节点。

  5. 验证数据一致性。

二、部署

1、创建 PV 和 PVC

我们 PV 的配置文件mysql-pv.yaml如下:

创建 PV。

PVC 的配置文件mysql-pvc.yaml内容如下:

创建 PVC。

2、部署 MySQL

MySQL 的配置文件mysql.yaml如下:

PVC mysql-pvc Bound 的 PV mysql-pv 将被 mount 到 MySQL 的数据目录 /var/lib/mysql

3、更新 MySQL 数据

MySQL 被部署到 k8s-node02,下面通过客户端访问 Service mysql:

我们在mysql库中创建一个表myid,然后在表里新增几条数据。

4、故障转移

我们现在把 node02 机器关机,模拟节点宕机故障。

一段时间之后,Kubernetes 将 MySQL 迁移到 k8s-node01

验证数据的一致性。

MySQL 服务恢复,数据也完好无损,我们可以可以在存储节点上面查看一下生成的数据库文件。

Last updated