Jav*_*r81 7 mysql database production-environment kubernetes
在生产环境中将Kubernetes用于集群数据库(例如MySQL)是否合理?
有一些示例配置,例如mysql galera示例.但是,大多数示例都不使用持久卷.据我所知,持久卷必须驻留在某些共享文件系统上,如此处所定义的Kubernetes类型的持久卷.共享文件系统不保证pod的数据库文件将是托管pod的计算机的本地文件.它将通过网络访问,这是相当慢的.此外,例如,MySQL和NFS存在问题.
这对于测试环境可能是可接受的.但是,我应该在生产环境中做什么?在Kubernetes之外运行数据库集群并仅使用Kubernetes运行应用程序服务器更好吗?
Kubernetes 项目引入了PetSets,这是一种新的 pod 管理抽象,旨在运行有状态应用程序。目前它是一个 alpha 功能(从版本 1.4 开始)并且正在快速发展。这里列出了我们进入测试版时遇到的各种问题。引用有关何时使用 petsets 的部分:
PetSet 确保在任何给定时间都有指定数量的具有唯一身份的“宠物”正在运行。宠物的身份包括:
除了上述功能之外,它还可以与其他几个功能相结合,帮助部署集群有状态应用程序并管理它们。例如,与动态卷配置相结合,它可以用于自动配置存储。
有几个可用的 YAML 配置文件(例如您引用的文件),使用 MySQL 和其他数据库的 ReplicaSets 和部署,这些数据库可能在生产中运行,并且也可能以这种方式运行。然而,PetSet 预计将使运行这些类型的工作负载变得更加容易,同时支持升级、维护、扩展等。
您可以在此处找到一些带有 petsets 的分布式数据库的示例。
大规模实现配置联网和非本地持久卷(例如 GlusterFS)的优势。然而,对于相对较小的集群,有一项建议在未来允许本地存储持久卷。