处理恢复期间的资源冲突问题


本页面介绍了如何为恢复方案配置命名空间级和集群级资源的冲突处理策略。

恢复到集群时,在以下情况下您可能会遇到资源冲突问题:

  • 恢复到已预配资源的现有集群。
  • 如果 Kubernetes 资源由 GitOps 等工具或 Operator 管理。

Backup for GKE 提供了多种冲突处理选项,您可以在恢复方案中指定这些选项来为集群级和命名空间级资源定义冲突处理方式。

恢复操作中集群级资源的冲突处理

您可以在恢复方案中配置以下选项来处理集群级资源的冲突问题:

  • 将资源保留在目标集群中(非破坏性):如果目标集群中存在同名的资源,将按原样保留该资源。
  • 替换目标集群中的资源(破坏性):如果目标集群中已存在某项资源,将删除该资源并恢复备份中的副本。

gcloud

更新现有恢复方案以处理集群级资源的冲突问题:

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY

请替换以下内容:

  • RESTORE_PLAN:您要更新的恢复方案的名称。
  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:资源的计算区域,例如 us-central1
  • CLUSTER_RESOURCE_CONFLICT_POLICY:定义如何处理选定集群资源的恢复时冲突。使用以下任一选项:

    • use-existing-version:如果目标集群中已有要恢复的资源,Backup for GKE 会保留现有资源。
    • use-backup-version:如果目标集群中已有要恢复的资源,Backup for GKE 会将现有资源替换为备份中的新资源。

控制台

请按照以下说明在 Google Cloud 控制台中更新集群级资源的冲突政策:

  1. 在 Google Cloud 控制台中,转到 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在导航菜单中,点击 Backup for GKE

  3. 点击恢复方案标签页。

  4. 点击恢复方案名称。

  5. 点击详情标签页。

  6. 恢复配置部分,前往集群级资源部分,然后点击修改

  7. 定义冲突处理部分,选择所需的冲突处理选项。

  8. 点击保存更改

恢复操作中命名空间级资源的冲突处理

您可以在恢复方案中配置以下选项来管理命名空间级资源的冲突问题。您可以在以下级层指定命名空间级资源的冲突处理方式:

  • 各个资源
  • 命名空间和 ProtectedApplication

以下选项可用来处理各个资源的冲突问题:

  • 合并跳过(非破坏性):如果已经存在特定资源,则跳过从备份恢复该资源。
  • 合并替换卷(破坏性):如果已经存在特定资源,则跳过恢复该资源,但使用卷数据恢复政策替换底层永久性卷。合并替换卷会实现纯数据恢复。
  • 合并替换(破坏性):如果已经存在特定资源,则按照卷数据恢复政策,将该资源替换为备份中的资源和关联的卷数据。

以下选项可用来处理命名空间级和 ProtectedApplication 级的所有资源的冲突问题:

  • 发生冲突时失败(非破坏性):如果计划从备份恢复的命名空间或 ProtectedApplication 已存在于目标集群中,则恢复失败。
  • 回滚(破坏性):如果目标集群已包含计划恢复到该集群的命名空间或 ProtectedApplication,则系统会先删除现有资源组,然后再恢复新资源。

gcloud

更新现有恢复方案以处理命名空间级资源的冲突问题:

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE

请替换以下内容:

  • RESTORE_PLAN:您要更新的恢复方案的名称。
  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:资源的计算区域,例如 us-central1
  • NAMESPACED_RESOURCE_RESTORE_MODE:定义如何处理命名空间型资源的恢复时间冲突。使用以下任一选项:

    • merge-skip-on-conflict:跳过各个冲突资源。
    • merge-replace-volume-on-conflict:跳过各个冲突资源,但替换底层永久性卷数据。
    • merge-replace-on-conflict:替换各个冲突资源和底层永久性卷数据。
    • fail-on-conflict:如果有命名空间或 ProtectedApplication 发生冲突,则恢复失败。
    • delete-and-restore:如果有命名空间或 ProtectedApplication 发生冲突,则执行回滚操作。

控制台

请按照以下说明在 Google Cloud 控制台中更新命名空间级资源的冲突政策:

  1. 在 Google Cloud 控制台中,转到 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在导航菜单中,点击 Backup for GKE

  3. 点击恢复方案标签页。

  4. 点击恢复方案名称。

  5. 点击详情标签页。

  6. 恢复配置部分,前往命名空间级资源部分,然后点击修改

  7. 定义冲突处理部分,选择所需的冲突处理选项。

  8. 点击保存更改

下表列出了部分常见场景的推荐冲突处理策略:

场景 对命名空间级资源使用推荐的冲突处理方式 对集群级资源使用推荐的冲突处理方式
恢复到全新集群 发生冲突时失败 将资源保留在目标集群中
回滚整个命名空间或 ProtectedApplication 删除并恢复 不适用
恢复到 GitOps 代管式集群(不含卷) 合并跳过 将资源保留在目标集群中
对 GitOps 代管式集群执行纯数据恢复 合并替换卷 将资源保留在目标集群中
回滚所选工作负载和卷数据 合并替换 替换目标集群中的资源

后续步骤