Kubernetes 备份和恢复变得简单!

2025-06-10

Kubernetes 备份和恢复变得简单!

本月 DevOps 工具是一个系列,每个月我都会介绍 2021 年一种新的有用的 DevOps 工具🙌🏼

7 月份我选择了:Kasten 的 K10 平台🎉——一个数据管理平台,可以轻松备份和恢复您的应用程序以保护您的数据。


在本教程中,我们将讨论 Kubernetes 中一项具有挑战性的数据管理任务,以及一个让 K8s 管理员能够非常轻松地进行数据管理的工具,即 Kasten 的 K10。

K8s 中的数据管理究竟意味着什么?为什么它是一项具有挑战性的任务?🧐

想象一下,我们的 K8s 生产集群中有以下真实世界的设置。

生产设置

生产 Kubernetes 设置

我们的微服务应用程序正在一个 EKS 集群中运行。我们的微服务使用 ElasticSearch 数据库,该数据库也运行在集群中。此外,我们的应用程序还使用 Amazon 的 RDS 数据服务,这是一个集群外的托管数据库。

这意味着我们的应用程序在集群内外都有数据服务。这些数据将物理存储在某个存储后端。RDS 数据当然会存储在 AWS 上。ElasticSearch 的数据将通过 K8s 持久卷组件在集群中使用,但它们也需要物理存储在某个地方。这可以是 AWS、Google Cloud 等云存储,也可以是本地服务器。

此设置的数据管理用例

1. 底层基础设施发生故障⛔️
集群运行的底层基础设施发生故障,导致所有 pod 和整个集群丢失。我们需要重新创建具有相同集群状态(K8s 组件 - ectd)和应用程序数据的集群。因此,我们需要恢复整个集群。2
. ElasticSearch DB 损坏⛔️
或者假设我们的 ElasticSearch DB 损坏或被黑客入侵,导致所有数据丢失。同样,我们需要将数据库恢复到最新的工作状态。3
. 复制 Kubernetes 集群(多云或混合云)☁️☁️
或者另一个常见用例,假设我们的集群在 AWS 上运行,但我们希望通过不依赖于 1 个云提供商而是在具有相同应用程序设置和应用程序数据的 Google Cloud 环境中复制它,使我们的生产集群更加可靠和灵活。

挑战

在所有这些情况下,挑战是:

我们如何捕获包含应用程序所需的所有数据的应用程序备份,无论它是 K8s 集群中的数据库还是集群外的托管数据服务?

因此,如果我们的集群出现故障,或者我们的应用程序出现问题并且丢失了所有数据等,我们将能够恢复或复制应用程序状态及其所有组件,如 pod、服务、configMaps 等及其数据

这是一项具有挑战性的任务。

糟糕的解决方案选项🤨

现在让我们看看有哪些可用的替代方案:

  • VM 或 etcd 备份

如果您对集群节点进行虚拟机备份或 etcd 备份,您将保存集群的状态,但应用程序数据呢?它们不存储在工作节点上,而是存储在集群外部的云平台或本地服务器上。

✅ 集群状态已备份
❌ 应用程序数据未备份

  • 使用云提供商的备份和恢复机制👀

另一方面,对于云存储后端,云提供商本身拥有自己的备份和复制机制。但平台仅部分管理这些机制,因此您仍然需要自行配置数据备份等。而且,这些只是卷中的数据,并不包含集群状态。

✅ 卷内数据已备份
❌ 仅部分由云平台管理

  • 为不同的基础设施级别编写自定义备份和恢复脚本👀

许多团队编写自定义脚本,将不同级别的备份解决方案组合在一起,例如集群内部的组件和状态以及集群外部的数据。但由于数据和状态分布在多个层级和平台上,这些脚本很快就会变得非常复杂。而且脚本代码通常最终会与存储数据的底层平台过于紧密地联系在一起。

恢复逻辑也是如此。许多团队使用自定义脚本来编写从所有不同备份源恢复逻辑或集群重建逻辑。

因此总的来说,你的团队最终可能会得到许多复杂的自我管理脚本,这些脚本通常很难维护。😣

✅ 针对应用程序量身定制
❌ 脚本复杂
❌ 与底层平台联系过于紧密
❌ 难以维护

K10 如何解决这些问题🚀

这些正是 Kasten 的 K10 工具所要解决的挑战。那么 K10 是如何解决这些问题的呢?

💡 底层基础设施的抽象 💡

K10抽象了底层基础设施,为您提供一致的数据管理支持,无论数据实际存储在何处:
K10抽象

因此,团队可以为他们的应用程序选择他们想要的任何基础设施或平台,而不会牺牲操作的简单性,因为 K10 拥有相当广泛的生态系统,并与各种关系和 NoSQL 数据库、许多不同的 Kubernetes 发行版和所有云集成。

因此,您无需为每个平台或级别编写备份脚本,只需使用K10 的1 个简单 UI 界面即可在集群中创建完整的应用程序备份:
K10数据管理平台

因此,应用程序的所有内容,例如 K8s 组件(pod、服务等)和卷中的应用程序数据以及集群外的托管数据服务中的数据都将被 K10 捕获到应用程序快照中。

因此,您可以轻松获取该快照并在您想要的任何基础架构上重现或恢复您的集群。🙌

💡 策略驱动的自动化 💡

K10 与策略协同工作。您无需手动备份和恢复应用程序,从而避免更多工作量和更高的出错风险,而是可以配置备份和恢复任务,使其根据策略中定义的设置自动运行。

💡 多集群管理器 💡

现在,如果您拥有跨区域、跨地域,甚至跨云平台和本地数据中心的多个集群,该怎么办?如何持续管理数十甚至数百个集群备份?🤔 其实,K10 拥有多集群模式。在 K10 的多集群仪表板中,您可以查看所有集群,并可以创建和配置可应用于多个集群的全局备份和恢复策略

💡 Kubernetes 原生 API 💡

现在,如果您在多个集群中拥有数百甚至数千个应用程序,您当然不想在 UI 上创建策略。为此,K10 为我们提供了Kubernetes 原生的 YAML 脚本策略编写方式。因此,您还可以将策略创建和配置自动化,作为“策略即代码”工作流的一部分。👍

K10 实际操作 - 动手演示👩🏻‍💻

在视频中,我将向您展示 K10 的实际工作原理。在实际操作演示中,我们将为 MySQL 应用程序创建自动备份策略,以保护其数据,并在几秒钟内恢复数据:


本系列接下来会推出更多精彩工具,敬请期待!🎬😊


喜欢、分享并关注我😍以获取更多内容:

鏂囩珷鏉ユ簮锛�https://dev.to/techworld_with_nana/kubernetes-backup-restore-made-easy-2nlg
PREV
使用 Prometheus Operator 在 Kubernetes 中设置 Prometheus 监控🔥
NEXT
Prometheus 监控的工作原理🔥 Prometheus 架构讲解