翻译 | Kubernetes 将改变数据库的管理方式

作者:Álvaro Hernández

当技术决策人考虑在 Kubernetes 上部署数据库时,面临的第一个问题就是:” Kubernetes 有应对有状态服务的能力吗?“多年来的答案都是” 不建议“,而且理由充分。毕竟,Kubernetes 最初的设计便是用于处理无状态服务的容器编排。如今,有状态服务的相关技术已经相当成熟,是时候重新考虑在 Kubernetes 上运行数据库了。

要实现数据库的容器化,还需要从三个重要的技术角度考虑:

[En]

To achieve database containerization, you also need to consider from three important technical perspectives:

  1. Kubernetes 本身的技术成熟度
  2. Kubernetes 处理有状态服务的能力
  3. 容器中运行数据库的可用性和性能

Kubernetes 技术有多成熟?

虽然评估任何一项技术的成熟度都不是一个简单的过程,但还是可以依靠一些数据来推证的。

Kubernetes[1] 是 CNCF 基金会[2] 的毕
业项目,目前该技术很流行,且有很多的项目参与者。据 CNCF 2020 年的云原生调查报告[3] 显示,” 91% 使用容器技术的受访者使用 Kubernetes,其中 83% 是在生产环境中使用。

自 2017 年 11 月以来,知名分析公司 Thoughtworks[4] 一直将 Kubernetes 作为必须采用的技术之一,并解释说,”在将容器部署到集群中时,它已成为我们大多数客户的默认解决方案。”

翻译 | Kubernetes 将改变数据库的管理方式

图片来自 CNCF

Kubernetes 处理有状态服务的能力如何?

Kubernetes 的有状态功能经常受到质疑,第一代有状态技术 Persistent Set(简称”PetSet”)也(部分)受到了指责。这个特性被弃用后,取而代之的是 Kubernetes 有状态技术:StatefulSets[5]。2018 年 GA 版本发布,如今为无数的 Kubernetes 容器提供持久、非短暂存储的解决方案,同时也为 Vitess[6] 或其他云原生数据库提供了在 Kubernetes 中部署的可能性。

最值得注意的是,StatefulSets 将 PersistentVolumes(PV)装载到容器中。这些 PV 通常由 Kubernetes 节点外部的存储提供,可以是网络或软件定义的存储解决方案,如 OpenEBS。本质上,Kubernetes 和云上使用的存储与 AWS 上使用的 EBS 卷或 GCP 上使用的持久磁盘相同。

Kubernetes 上运行数据库的性能如何?

无疑,Kubernetes 上运行数据库性能会受到影响。容器被错误地视为”轻量级虚拟机”它们是相当轻量的抽象层,包裹着 Linux 内核提供的文件系统、进程和网络空间。如果只使用短暂的容器存储数据,可能会有一些开销。但如果使用外部 PV 存储,开销可以忽略不计。

因此,容器的临时性不会影响高可用性?因为容器只是“包装”过程,所以它们的生命周期与过程的生命周期有关。换句话说,容器将与在其中运行的数据库进程一样稳定。

[En]

So the temporary nature of the container will not affect high availability? Because containers are only “packaging” processes, their life cycle is related to the life cycle of the process. In other words, the container will be as stable as the database process running in it.

Kubernetes 彻底改变了数据库的运行方式

在 Kubernetes 上运行数据库有明显的优势:部署简单,整个堆栈由同一个编排工具管理,自动修复,以及自动重新部署失败的容器,从而提高可用性。例如,如果运行数据库的其中一个节点出现故障,Kubernetes 将自动进行自我修复,重新安排另一个节点上的工作负载。通过与数据库管理软件的合作,它可以选择一个在以前存在的复制副本上运行的新数据库主节点,并将新节点重新初始化为一个新的复制副本,这一切都是自动的。但还有其他更重要的原因让你想在 Kubernetes 中运行数据库。

大多数公司希望将数据库作为 DBaaS(数据库即服务)进行操作。自我配置自愈数据库,包括备份和监视。虽然这是功能大多数云厂商也提供,但通过使用 Kubernetes 自己动手可以节省大量成本,并提供额外的功能,如多云和云可移植性。

这些功能可以通过 Kubernetes Operator[7] 来提供。Operator 是 Kubernetes 的特定于应用程序的扩展,它对部署和操作自动化进行编码,同时向用户公开简单的界面。高级的数据库 Operator 带来了以下好处:

  • 这是一种用于部署和更新的声明性方法,使其对 GitOps 100% 友好,非常适合任何使用 CI/CD 的公司。操作员定义的 CRD(自定义资源定义)是高级对象,通常作为简单的 YAML 文件接口,允许以简单的方式部署和管理复杂的数据库架构。
  • “Day-2 Operation”[8] 自动化:部署、高可用性、备份和监控;修复、清理、重新编制索引等。操作员可以将这些操作编码到 CRD、YAML 文件中,以便自动执行这些操作。
  • 将数据库功能外部化到第三方、知名的 Kubernetes 组件,如 Envoy Proxy;Prometheus 和 Grafana 负责监控;或 Cert Manager 用于 SSL 证书管理。数据库 Operator 可以依赖这些组件来分离部分数据库功能,减少用户操作难度,因为它更熟悉更易获得更高级的功能。
    正如 Goldman Sachs、Zalando 和 Flipkart 等领先公司所表现的那样,在 Kubernetes 上运行数据库不仅是未来,也是现在。与任何技术一样,在部署生产工作负载之前,应该进行仔细和客观的评估。

在 Kubernetes 2021 调查报告[9] 中发现,90% 的公司认为 Kubernetes 已经准备好了应对有状态的工作负载。这些受访企业中的绝大多数(70%)在生产中运行有状态的工作负载,其中数据库排在首位。75% 的受访企业生产率提升两倍甚至更高!

鉴于以上的数据和优势,企业应该去考虑一下。在 Kubernetes 上运行数据是全面协调基础设施的最新前沿,我相信这一转变将为企业带来可观的价值。

原文:https://thenewstack.io/kubernetes-will-revolutionize-enterprise-database-management/

引用参考:

  1. Kubernetes:https://thenewstack.io/category/kubernetes/
  2. CNCF 基金会:https://cncf.io/?utm_content=inline-mention
  3. 云原生调查报告:https://www.cncf.io/wp-content/uploads/2020/11/CNCF_Survey_Report_2020.pdf
  4. Thoughtworks:https://www.thoughtworks.com/radar/platforms/kubernetes
  5. StatefulSets:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
  6. Vitess:https://vitess.io/
  7. Kubernetes Operator:https://kubernetes.io/docs/concepts/extend-kubernetes/operator/
  8. Day-2 Operation:https://jimmysong.io/blog/what-is-day-2-operation/
  9. Kubernetes 2021 调查报告:​https://dok.community/dokc-2021-report/

Original: https://www.cnblogs.com/radondb/p/16021115.html
Author: RadonDB
Title: 翻译 | Kubernetes 将改变数据库的管理方式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505552/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL启动报:[ERROR] The server quit without updating PID file

    修改配置后 MySQL启动不了,报错: 看见这个不要惊慌,先把刚才修改的配置注释掉,看是不是配置有误!大部分是手误造成。 如果不行,再尝试一下方法: 解决方法 : 给予权限,执行 …

    数据库 2023年6月14日
    0103
  • Gorm 的黑魔法

    开发过程中,看到同事的代码写了这么一段: db = db.Session(&gorm.Session{Context: db.Statement.Context}).Fir…

    数据库 2023年6月9日
    0105
  • Java 8的新特性还不了解?快进来!

    能坚持别人不能坚持的,才能拥有你想拥有的。关注 编程大道,让我们一起成长 哈喽,大家好,我是…

    数据库 2023年6月11日
    085
  • MySql用户与权限控制

    MySql用户与权限控制 — 刷新权限命令 # — 刷新mysql权限命令 flush privileges; 用户管理 1、查看用户 #查看用户 USE mysql…

    数据库 2023年6月11日
    090
  • AI 音辨世界:艺术小白的我,靠这个AI模型,速识音乐流派选择音乐 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 机器学习实战系列:https://www.s…

    数据库 2023年6月14日
    090
  • MySQL45讲之更新缓存

    本文介绍 MySQL的更新缓存 Change Buffer,以及唯一索引和普通索引如何选择。 唯一索引和普通索引的选择 查询过程 在唯一索引下,查询索引树,找到第一个匹配的行并返回…

    数据库 2023年5月24日
    092
  • Redis——数据操作(2)

    2022-09-21 (2)hash操作: ①设置多个hash值,(hmset): 查看说明: help hmset hmset person name A age 1 ②获得多个…

    数据库 2023年6月14日
    072
  • MySQL临时表

    MySQL中临时表主要有两类,包括外部临时表和内部临时表。外部临时表是通过语句create temporary table…创建的临时表,临时表只在本会话有效,会话断开…

    数据库 2023年6月9日
    0102
  • 设计模式——单例模式

    引言 今天来谈谈设计模式中的单例模式,温故知新,以免生疏。 软件设计领域的四位世界级大师Gang Of Four (GoF):Erich Gamma,Richard Helm,Ra…

    数据库 2023年6月16日
    0103
  • 希望腿上的伤快点好

    明天去星巴克泡一会儿想把一些课程关联到的课程学习一下 Original: https://www.cnblogs.com/ukzq/p/16747859.htmlAuthor: D…

    数据库 2023年6月11日
    097
  • Dockerfile 构建镜像

    从 Dockerfile 构建镜像涉及三个步骤 创建工作目录 编写 Dockerfile 规格 使用 docker build 命令构建镜像 1. 创建工作目录 这个根据应用实际情…

    数据库 2023年6月14日
    068
  • ECMAScript版本知识点汇总

    ECMAScript版本知识点汇总 ES5 btoa、atob 对参数进行base64格式编码、解码 /** * btoa() * base64编码 * @param {strin…

    数据库 2023年6月11日
    0109
  • Redis集群(一)主从复制

    一、主从复制概述 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由…

    数据库 2023年6月11日
    091
  • Java学习-第一部分-第二阶段-第二节:枚举和注释

    自定义类实现枚举 先看一个需求 要求创建季节(Season)对象,请设计并完成。 创建Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, aut…

    数据库 2023年6月11日
    094
  • Spring Boot启动流程

    Spring Boot启动流程 君生我未生,君生我已老。君恨我生迟,我恨君生早。 一、简述 Spring Boot启动流程分析使用版本SpringBoot VERSION:版本 2…

    数据库 2023年6月14日
    0107
  • Linux–>软件包管理

    rpm用于互联网下载包的打包和安装工具,它包含在某些Linux分发版本中。 它生成具有.RPM扩展名的文件。 RPM是RedHat Package Manager(RedHat软件…

    数据库 2023年6月14日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球