0

所以想在k8s中部署一个主从的MySQL集群。我发现了 2 种看起来很流行的方法:

  1. 第一种是直接使用k8s官方文档中的statefulsets:https ://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/
  2. 第二种是使用运算符,即https://github.com/oracle/mysql-operator

哪种方式最常用?

另外,在 statefulsets 中,如果我的 MySQL master 死了,k8s 会自动将 slave 提升为 master 吗?

最后,当我的逻辑后端应用程序对 MySQL 集群执行操作(CRUD)时,k8s 如何知道要路由到哪个 pod,即写入操作只能发送给 master,而读取发送给所有?

4

1 回答 1

1

用户可以基于StatefulSets在k8​​s中部署和维护一套高可用的MySQL服务,过程相对复杂。这个过程需要用户熟悉各种k8s资源对象,学习很多MySQL操作细节,维护一套复杂的管理脚本。Kubernetes Operators 旨在降低在 k8s 上部署复杂应用的门槛。

Operator 隐藏了复杂应用的编排细节,大大降低了在 k8s 中使用的门槛。如果您需要部署其他复杂的应用程序,我们建议您使用 Operator。

谈论使用 StatefulSet 时的 master 选举。选择潜在的奴隶成为主人不是一个自动过程 - 您必须使用Xtrabackup手动配置- 这里有更多信息 - setting_up_replication

看一看:cloning-existing-datastarting-replicationmysql-statefulset-operator

有用的工具: 用于更好的 MySQL 网络管理的vitess和提供卓越性能、可扩展性和检测的 percona-xtradb-cluster 。

于 2020-08-05T10:56:38.643 回答