启用精细恢复操作


本页面介绍如何选择要以更精细的粒度进行恢复的资源。

概览

精细恢复功能可让您从备份中恢复部分资源。精细恢复功能可灵活地细化父级恢复方案中定义的恢复范围。如果精细恢复范围与父级恢复方案中定义的原始范围不重叠,则不会恢复任何资源。

您可以为在个别资源级别设有冲突处理模式的恢复方案启用精细恢复功能:

  • 合并跳过
  • 合并替换
  • 合并替换卷

如果您的恢复方案使用命名空间或 ProtectedApplication 级别的冲突处理模式(例如发生冲突时失败回滚),并且您希望启用精细恢复功能,则您需要更新恢复方案以使用受支持的模式,或创建新的恢复方案。如需详细了解恢复模式,请参阅处理恢复期间的资源冲突问题

如需使用精细恢复,您可以在包含过滤器和排除过滤器下定义一个或多个过滤条件。您可以从备份中选择特定的部分资源来进行恢复,也可以恢复除部分资源之外的所有资源。您可以同时定义包含过滤器和排除过滤器。如果使用了包含过滤器,则系统只会恢复与这些过滤器匹配的资源。如果使用了排除过滤器,则系统会在恢复过程中排除匹配的资源。如果同时指定了包含过滤器和排除过滤器,系统会先应用包含过滤器,然后再应用排除过滤器。这意味着排除过滤器的优先级高于包含过滤器。如果未指定过滤器,系统会对父级恢复方案中定义的整个范围执行恢复。

构建过滤条件时,有四个可选属性:

  • GroupKind:资源的 Kubernetes API 组和种类
  • 命名空间:命名空间范围的资源的命名空间
  • 资源名称:资源的名称
  • 标签:用于根据 Kubernetes 标签选择资源的键值对

您可以组合使用上述四个属性来定义过滤条件。如果您指定了多个属性,则属性之间的关系被视为 AND。如果某个资源与过滤条件中定义的所有属性匹配,则会选中该资源。您还可以同时提供多个过滤条件,不同过滤条件之间的关系为 OR。如果某个资源与提供的所有过滤条件中的任意一个匹配,则会选中该资源。

准备工作

规划一组恢复

使用精细恢复过滤器创建恢复

gcloud

  1. 创建具有精细恢复过滤器的 YAML 或 JSON 文件。您可以使用以下 YAML 示例文件。

    exclusionFilters:
    - groupKind:
        resourceGroup: foo.io
        resourceKind: Bar
      name: name1
      namespace: ns1
    inclusionFilters:
    - labels:
        key1: value1
        key2: value2
    
  2. 使用您创建的精细恢复过滤器文件创建恢复。

    gcloud beta container backup-restore restores create RESTORE \
        --project=PROJECT_ID \
        --location=LOCATION \
        --restore-plan=RESTORE_PLAN \
        --backup=BACKUP \
        --filter-file=FILTER_FILE
    

    请替换以下内容:

    • RESTORE:您要创建的恢复的名称。
    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • LOCATION:父级恢复方案的计算区域
    • RESTORE_PLAN:派生此恢复的父级恢复方案的名称。
    • BACKUP:要恢复的备份。此备份必须位于父级恢复方案称之为 projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN/backups/BACKUP 的备份方案中:

    • FILTER_FILE:精细恢复过滤器的路径。

    如需查看选项的完整列表,请参阅 gcloud beta container backup-restore restores create 文档。

控制台

使用以下说明在 Google Cloud 控制台中创建精细恢复:

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

    转到 Google Kubernetes Engine

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

  3. 点击备份标签页。

  4. 在备份列表中,选择要恢复的备份,然后点击设置恢复

  5. 从适用于此备份的方案列表中选择一个恢复方案。

  6. 输入恢复的名称和(可选)说明

  7. 点击启用精细恢复复选框。

  8. 包含过滤器排除过滤器部分中,点击添加过滤条件

  9. 恢复过滤条件中,定义条件,然后点击保存更改

  10. 如果您想添加更多条件,请再次点击添加过滤条件

  11. 点击恢复

精细恢复过滤器文件示例

以下示例以 Google Cloud CLI 使用的 YAML 格式提供,或以适用于 Google Cloud 控制台的分步说明的形式提供。

恢复单个命名空间范围的资源

此示例恢复命名空间 webserver 中名为 nginx-varsConfigMap 资源种类,它使用精细恢复 InclusionFilters 来选择该资源。如果您要选择 core 组下的资源,请对 resourceGroup 使用空字符串。

gcloud

  inclusionFilters:
  - groupKind:
      resourceKind: ConfigMap
    name: nginx-vars
    namespace: webserver

控制台

  1. 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
  2. 包含过滤器部分中,点击添加过滤条件
  3. 资源名称字段中,输入 nginx-vars
  4. 命名空间字段中,输入 webserver
  5. 对象种类字段中,输入 ConfigMap
  6. 点击保存更改

排除单个集群范围的资源

此示例恢复除名称为 sc1 的一个资源 GroupKind storage.k8s.io/StorageClass 之外的所有可用资源,它使用精细恢复 ExclusionFilters 排除该资源。

gcloud

exclusionFilters:
- groupKind:
    resourceGroup: storage.k8s.io
    resourceKind: StorageClass
  name: sc1

控制台

  1. 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
  2. 排除过滤器部分中,点击添加过滤条件
  3. 资源名称字段中,输入 sc1
  4. API 组字段中,输入 storage.k8s.io
  5. 对象种类字段中,输入 StorageClass
  6. 点击保存更改

恢复具有两个标签的资源

此示例恢复同时具有标签 key1:value1key2:value2 的资源,它使用精细恢复 InclusionFilters 来选择资源。

gcloud

inclusionFilters:
- labels:
    key1: value1
    key2: value2

控制台

  1. 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
  2. 包含过滤器部分中,点击添加过滤条件
  3. 标签部分中:

    1. 点击添加标签
    2. 密钥 1 字段中,输入 key1
    3. 值 1 字段中,输入 value1
    4. 点击添加标签
    5. 密钥 2 字段中,输入 key2
    6. 值 2 字段中,输入 value2
  4. 点击保存更改

排除某些 GroupKind 的所有资源

此示例恢复除 GroupKind ConfigMapstorage.k8s.io/StorageClass 之外的所有可用资源,它使用精细恢复 ExclusionFilters 排除这两个 GroupKind。

gcloud

exclusionFilters:
- groupKind:
    resourceKind: ConfigMap
- groupKind:
    resourceGroup: storage.k8s.io
    resourceKind: StorageClass

控制台

  1. 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
  2. 排除过滤器部分中,点击添加过滤条件
    1. 对象种类字段中,输入 ConfigMap
    2. 点击保存更改
  3. 排除过滤器部分中,点击添加过滤条件
    1. API 组字段中,输入 storage.k8s.io
    2. 对象种类字段中,输入 StorageClass
    3. 点击保存更改