Backup for GKE


Backup for GKE 是一项用于在 GKE 中备份和恢复工作负载的服务。它有两个组成部分:

  • 用作服务控制平面的 Google Cloud API
  • GKE 插件(Backup for GKE 代理),您必须在每个要对其执行备份和恢复操作的集群中启用它。

工作负载的备份可用于灾难恢复、CI/CD 流水线、克隆工作负载或升级场景。保护工作负载可以帮助您实现关键业务恢复点目标。

简介

启用后,Backup for GKE 服务会与 GKE 界面、Google Cloud CLI 和 REST API 集成,从而为开发和运维提供一致的工作流。备份会捕获两种形式的数据:

  • 配置备份:从正在备份的集群的 API 服务器中提取的一组 Kubernetes 资源清单,用于捕获集群状态。
  • 卷备份:一组与配置备份中找到的 PersistentVolumeClaim 资源相对应的卷备份。

您可以选择要备份或恢复的工作负载,也可以备份或恢复所有工作负载。您可以从一个集群中备份工作负载,并将工作负载恢复到另一个集群中。您可以安排自动运行备份,以便在发生突发事件时快速恢复工作负载。

恢复工作负载涉及到在目标集群中重新创建 Kubernetes 资源。创建资源后,工作负载功能恢复需要遵循集群协调过程(例如,Pod 会被调度到节点,然后在这些节点上启动)。在恢复期间,您可以选择应用转换规则,用于匹配一组资源并针对新值替换这些资源上属性的当前值。

选择性备份与使用替代变量的恢复相结合,旨在启用和支持许多不同的备份和恢复场景,例如:

  • 备份一个集群中的所有工作负载,并将其恢复到一个单独的集群中,以实现灾难恢复。
  • 备份所有工作负载,但选择性地回滚源集群中的单个工作负载。
  • 备份一个命名空间中的资源,并将其克隆到另一个命名空间。
  • 将工作负载从一个集群迁移或克隆到另一个集群。
  • 更改工作负载的存储参数(例如,将工作负载从可用区级永久性磁盘移动到区域级永久性磁盘)。

您必须首先创建目标集群并启用 Backup for GKE 服务,然后才能备份或恢复任何工作负载。

架构

Backup for GKE 包含两个主要组件:

  • 在 Google Cloud 中运行的一项服务,支持基于资源的 REST API。 此服务充当 Backup for GKE 的控制平面。该服务包含与此 API 交互的 Google Cloud 控制台界面元素。
  • 在执行备份或恢复的每个集群中运行的代理。 代理与 Backup for GKE API 进行交互,从而在这些集群中运行备份和恢复操作。

下图展示了不同 Backup for GKE 组件之间的关系:

Backup for GKE 架构

服务概览

Backup for GKE 服务提供了供客户端进行交互的 API 端点。与大多数 Google Cloud API 一样,GKE API 的备份针对资源层次结构中特定于应用的资源运行。Backup for GKE 管理这些应用专用资源的一个数据库,服务 API 方法主要对应于这些资源的创建、读取、更新或删除操作。

云资源模型中有两种主要的活跃资源类型:

  • Backup:表示 GKE 集群特定部分在特定时间点的备份。 创建 Backup 资源会启动备份过程(最终存储目标 Kubernetes 资源的副本,并创建目标永久性磁盘卷的快照)。 删除 Backup 会删除已存储的这些工件。
  • Restore:表示将特定 Backup 的选定部分恢复到一个 GKE 集群中。 创建 Restore 资源会启动恢复过程。删除 Restore 不会产生负面影响,但会从数据库中移除恢复记录。

Backup for GKE 还包括两种配置和控制资源类型:

  • BackupPlan:代表备份链的 Backup 资源的父级资源。 此资源包含备份配置,其中涉及到源集群、选择要备份的工作负载以及存储此方案下生成的 Backup 工件的区域。
  • RestorePlan:提供可重复使用的恢复模板。此资源包含恢复配置,其中涉及到您要在其中恢复备份的目标集群、源备份方案、恢复范围、冲突处理和转换规则。

代理概览

Backup for GKE 代理会在您配置为由 Backup for GKE 服务进行备份的每个 GKE 集群中部署并运行。该代理负责运行备份和恢复活动,例如:

  • 备份:

    • 编排备份过程。
    • 从 Kubernetes API 服务器提取资源,将其序列化为归档,然后存储归档。
    • 创建与 PersistentVolumeClaims 关联的底层卷的备份。
  • 恢复:

    • 编排恢复过程。
    • 从存储空间提取 Kubernetes 资源归档,提取所选资源,对这些资源应用适当的修改,并在目标集群中创建它们。
    • 创建卷并将其融合到目标集群的 Kubernetes 配置中。

管理员不与代理互动,因为代理由 Backup for GKE 服务为响应备份和恢复云资源的创建而在集群中自动创建的自定义 Kubernetes 资源(BackupJobRestoreJob)驱动。但是,管理员可在集群中创建可选的 ProtectedApplication Kubernetes 资源,从而影响备份的编排。这些 ProtectedApplication 资源对于 Backup for GKE 是唯一的,并提供更为精细的选项来定义备份和恢复范围。

如需了解代理的预览版和正式版之间的差异,请参阅预览版代理弃用

不会备份的内容

您只能使用 Backup for GKE 备份 Kubernetes 资源和底层永久性卷。针对 GKE 的备份不会备份以下内容:

  • GKE 集群配置信息,例如节点配置、节点池、初始集群大小或已启用的功能。
  • 由备份所引用的容器映像。系统仅会备份描述工作负载并引用容器映像的 Kubernetes 资源。如果备份中的工作负载清单引用的映像已从其映像仓库中移除,则对该配置的后续恢复将无法成功恢复工作负载。
  • 集群外部服务的配置信息或状态,例如 Cloud SQL 或外部负载均衡器。

后续步骤