如果在 Kubernetes 上运行数据库让你感到焦虑,那么你做错了。学习如何在 K8s 上创建健壮且有弹性的数据层。
译自 How To Stop Worrying and Start Loving Databases on Kubernetes,作者 Greg Nokes。
Kubernetes (K8s) 无疑改变了应用程序的部署和管理方式。它是云原生架构的基石。现代 DevOps 团队使用 Kubernetes 来编排高可用性 Pod、多区域故障转移以及跨数据中心分配应用程序负载。
然而,当谈到在 Kubernetes 上运行数据库 时,许多团队仍然犹豫不决。这种怀疑并非毫无根据;Kubernetes 曾经被认为不适合有状态应用程序,因为人们担心存储持久性、数据完整性和操作复杂性。在 Kubernetes 上运行数据库曾经被认为类似于
BASE 跳伞,但对 DevOps 来说。 幸运的是,时代变了。Kubernetes 已经改进。Kubernetes 生态系统已经发展壮大。曾经被视为大胆的 Kubernetes Operator 现在已经成熟且健壮。但是,并非所有实现都相同。因此,让我们深入探讨在 Kubernetes 上运行数据库的关键注意事项。
Kubernetes 使用术语“Operator模式”来定义管理有状态工作负载的算法。在实现中,它可能被称为“Operator”或“Kubernetes Operator”或“Kubernetes 数据库Operator”。简而言之,Kubernetes Operator是一个代码库,它将操作知识封装到自动化任务中,这些任务管理 Kubernetes 上的有状态部署。自动化任务包括初始化高可用性、运行备份、恢复备份、健康检查和故障转移。
在 GitHub 上搜索将返回任何数据库的多个 Kubernetes Operator。在多个Operator和 Kubernetes 实现之间进行选择,任何两个在 Kubernetes 上运行数据库的团队在幸福感方面可能存在很大差异。
最好的 Kubernetes Operator在压力环境下具有最长的生产运行时间。随着时间的推移积累的经验不可低估。经验是胆大妄为的人如何找到边缘情况并编写代码来对其进行操作。在生产部署中找到 Kubernetes Operator上的新边缘情况将动摇对系统的信心。因此,寻找能够处理数据库细微差别并具有强大的生产时间记录的 Kubernetes Operator。
在容器中启动数据库很简单。操作生产数据库以确保数据完整性、可用性和性能需要一份清单。在选择 Kubernetes Operator时,请考虑以下因素:
这份清单与数据库本身一样古老。从云原生原则的角度来构建清单会稍微改变思维模式。复杂性会增加,但这也会创造机会。
在 Kubernetes 上运行数据库不应该成为焦虑的来源——如果是,那就选择其他路线。正确的工具和实现为您的应用程序创建了一个强大且有弹性的数据层。
好消息是这条路是一条已知的路径,并且已经用代码铺平了道路。通过使用成熟的操作员踏上这段旅程,团队将建立在先前经验成功的基础上。目标很明确:让 Kubernetes 操作员来管理数据库;通过创新的应用程序为用户提供价值。
有兴趣了解更多关于 Kubernetes 操作员的信息吗?在 11 月 12 日至 15 日的 KubeCon + CloudNativeCon 北美会议上,请到 Crunchy Data 展位 P8 与专家交谈或观看演示。
要了解更多关于 Kubernetes 和云原生生态系统的信息,请加入我们参加KubeCon + CloudNativeCon 北美会议,该会议将于 2024 年 11 月 12 日至 15 日在美国犹他州盐湖城举行。