我正在尝试使用 Microk8s Kubernetes 设置 MySQL HA 数据库。
目标是让 MySQL 在所有 3 个节点上运行,并在它们之间设置 1 个浮动 IP,并且如果任何一个节点发生故障,数据库仍可继续运行。
我已经安装了 3 个节点https://microk8s.io/high-availability,我把它们组合在一起,如果我跑的话,microk8s kubectl get no
我就会得到
NAME STATUS ROLES AGE VERSION
node3 Ready <none> 4m28s v1.19.3-34+a56971609ff35a
node2 Ready <none> 25m v1.19.3-34+a56971609ff35a
node1 Ready <none> 37m v1.19.3-34+a56971609ff35a
我启用了仪表板,它可以在所有 3 个单独的 IP 上运行。
现在我想安装 MySQL 并让其使用浮动 IP,并将数据保存在这 3 个 IP 上。
我的问题是:
- 如何在 microk8s 上安装 MySQL?
- 如何保证数据随时可复制,且具有高可用性。
- 如何获得浮动IP?
谁能给我指出正确的教程或者帮助我实现这个目标?
谢谢
答案1
对于 Kubernetes 中的数据库操作,你需要一个 statefullset
此处描述了 kubernetes 项目使用的 mysql 示例设置:https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/
还有一个可能有趣的云原生毕业项目:https://vitess.io/
在 kubernetes 集群中拥有数据库(具有 HA 等)非常复杂,并且将数据库放在 kubernetes 之外也可能是一个想法:https://cloud.google.com/blog/products/databases/to-run-or-not-to-run-a-database-on-kubernetes-what-to-consider