关于数据库:翻译-Kubernetes-Operator-对数据库的重要性

3次阅读

共计 1923 个字符,预计需要花费 5 分钟才能阅读完成。

作者:Stephen Thorn

翻译:刘玲玲

原文:https://www.percona.com/blog/…

一些刚接触 Kubernetes 的公司尝试应用传统环境中运行数据库的办法在 Kubernetes 中运行数据库。然而,不倡议这样做。因为这可能会导致数据失落,并且也不倡议这样治理生产工作负载。为什么这样做很危险?又如何解决这个问题?

适宜 Kubernetes 的工作负载

在思考将数据库迁徙到 Kubernetes 之前,请确保应用程序的其余部分是云原生的,并能够应用 Kubernetes。 如果您曾经开始对数据库进行垂直弹性伸缩和程度弹性伸缩,并须要编排数据库来管制老本,将其迁徙至 Kubernetes 上就是个不错的抉择。

将数据库工作负载转移到 Kubernetes 上有两个现实的应用场景: 微服务和对立形象层。‍

宏大的繁多数据集可能会妨碍施展 Kubernetes 的一些长处:自修复和高可用性。这可能是一个问题,因为在退出数据库集群时,须要消耗工夫将数据物理传输到新 Pod 实例上。如果数据集太大,因为物理限度,这个过程会很慢,并影响性能和数据库的可用性。而微服务就十分适合,因为它的数据集绝对较小,使得 Kubernetes 能很好地进行自动化解决。

心愿充分利用云原生应用程序和数据库的公司也非常适合 Kubernetes。如果想利用对立形象层在任何中央部署和运行数据库,Kubernetes 是一个很好的抉择。能够将数据库挪动到任何运行着 Kubernetes 的中央。

咱们对大型非分片数据集以及 Kubernetes 在解决这些数据集时的局限性进行了探讨,但咱们还应该看看什么样的工作负载更适宜传统平台。对吞吐量比拟敏感的应用程序在 Kubernetes 上体现可能没有那么好,或者不是很划算。Kubernetes 根本是为容器编排而设计的,而不是为须要极低提早的高性能数据库而设计的。兴许这可能实现,但代价是什么呢?对于高性能的分布式数据库也同样如此。

如何对待 Pod?

Pets 和 Cattle 是 DevOps 中的一对概念。Pets 示意在呈现问题时须要关注单个服务器的部署形式,Cattle 示意在呈现问题时用正本替换服务器的能力。在 Kubernetes 的运作形式中,当呈现应用程序无法控制的因素时,能够在任何时候销毁、创立或挪动 Pod。Kubernetes 应用一个调度程序(scheduler),它能够销毁和重建 Pod,以满足您的 Kubernetes 集群配置需要。

这对于无状态应用程序十分有用,因为应用程序中的任何失败都将导致蕴含应用程序的 Pod 被销毁和从新创立,而不须要人工交互,并极大地放慢了问题的解决。这对于数据库来说并不现实,因为咱们不心愿数据库忽然进行工作,并造成数据失落或损坏。Kubernetes 能够应用 StatefulSet 提供长久标识符来帮忙解决这个问题。这有利于治理有状态工作负载,然而要如何施展高可用性和利用 Kubernetes 的自动化劣势呢?

如何对待数据库?

从设计上讲,数据库须要放弃其身份、信息,最重要的是,数据在任何时候都是平安和可拜访的。数据库是应用程序的支柱,因为它们是应用程序失常运行所依赖的实在数据起源。数据库操作中的任何谬误都将迅速导致应用程序无奈运行。 简略来说,数据库很重要。

咱们如何在 Kubernetes 中平安地运行数据库,并确保数据库部署是高可用的?

通过应用 StatefulSet 和长久卷(Persistent Volume),能够保持数据的完整性,然而咱们还须要另外的工具来承当数据库治理工作,例如确保故障转移、复原数据库成员、重新加入高可用架构以及其余特定技术性能。侥幸的是,Kubernetes 是可扩大的,并且领有 Operator,用于主动执行治理服务的要害工作。

自动化,自动化,自动化

咱们理解了在 Kubernetes 中平安运行数据库的复杂性,以及一些用来帮忙弥合自动化和传统人工在性能之间差距的概念。在一些数据库 Operator 的帮忙下,咱们能够依照预期的形式平安地运行数据库。这些 Operator 可能将一些通常由数据库管理员实现的工作自动化执行,例如:

  • 主动部署,严格的一致性,无单点故障
  • 主动伸缩,通过更改 size 参数增加或删除集群或 ReplicaSet 成员
  • 主动备份和复原
  • 主动修复,从单个集群或 ReplicaSet 成员的故障中主动复原
  • 主动治理明码轮换零碎用户
  • 简化更新

总结

因为运行数据库环境的复杂性和对高可用的要求,以及动静 Kubernetes 环境带来的危险,强烈建议在 Kubernetes 中部署数据库时,应用 Operator 来实现。

欢送应用 RadonDB MySQL Kubernetes 一款高可用 MySQL 集群 Operator!

正文完
 0