生产环境是否推荐运行集群数据库与Kubernetes?

Is it recommended to run clustered database with Kubernetes in production environment?

像MySQL这样的集群数据库在生产环境中使用Kubernetes合理吗?

mysql galera example. However, most examples do not make use of persistent volumes. As far as I've understood persistent volumes must reside on some shared file system as defined here Kubernetes types of persistent volumes等示例配置。共享文件系统不能保证 Pod 的数据库文件在托管 Pod 的机器上是本地的。它将通过相当慢的网络访问。此外,例如 MySQL 和 NFS 也存在问题。

这对于测试环境来说可能是可以接受的。但是,在生产环境中应该怎么做呢? 运行 Kubernetes 外的数据库集群和 运行 只带 Kubernetes 的应用服务器更好吗?

Kubernetes项目介绍PetSets, a new pod management abstraction, intended to run stateful applications. It is an alpha feature at present (as of version 1.4) and moving rapidly. A list of the various issues as we move to beta are listed here. Quoting from the section on when to use petsets

PetSet 可确保指定数量的 "pets" 具有唯一身份的人在任何给定时间都处于 运行 状态。宠物的身份包括:

  • 一个稳定的主机名,在 DNS 中可用
  • 序号索引
  • 稳定存储:链接到序号和主机名

除上述之外,它还可以与其他几个功能相结合,帮助人们部署集群有状态应用程序并对其进行管理。再加上 dynamic volume provisioning 例如,它可以用来自动配置存储。

有几个可用的 YAML 配置文件(例如您引用的那些)使用 ReplicaSets 和 Deployments MySQL 和其他数据库,这些数据库可能 运行 在生产中并且可能正在 运行 也是这样。但是,PetSet 有望使 运行 这些类型的工作负载变得更加容易,同时支持升级、维护、扩展等。

您可以找到一些带有 petsets 的分布式数据库示例 here


大规模实现配置网络和非本地(例如 GlusterFS)持久卷的优势。但是,对于相对较小的集群,有提议允许将来local storage persistent volumes