是否建议在生产环境中使用Kubernetes运行集群数据库?

时间:2016-10-21 08:23:46

标签: mysql database kubernetes production-environment

在生产环境中将Kubernetes用于群集数据库(例如MySQL)是否合理?

mysql galera example等示例配置。但是,大多数示例都不使用持久卷。据我所知,持久卷必须驻留在此处Kubernetes types of persistent volumes定义的某个共享文件系统上。共享文件系统不保证pod的数据库文件将是托管pod的计算机的本地文件。它将通过网络访问,这是相当慢的。此外,例如,MySQL和NFS存在问题。

这对于测试环境可能是可接受的。但是,我应该在生产环境中做什么?在Kubernetes之外运行数据库集群并仅使用Kubernetes运行应用程序服务器更好吗?

1 个答案:

答案 0 :(得分:4)

Kubernetes项目引入了PetSets,这是一个新的pod管理抽象,旨在运行有状态的应用程序。 目前是alpha功能(从版本1.4开始)并且快速移动。列出here列出了我们转向测试版时遇到的各种问题。引自when to use petsets的部分:

PetSet确保在任何给定时间都有指定数量的具有唯一身份的“宠物”。宠物的身份包括:

  • 稳定的主机名,在DNS中可用
  • 序数索引
  • 稳定存储:与序数相关联主机名

除了上述内容之外,它还可以与其他一些功能相结合,这些功能可帮助您部署群集状态应用程序并对其进行管理。例如,与dynamic volume provisioning结合使用,它可以用于自动配置存储。

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

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

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