本页面介绍如何选择要以更精细的粒度进行恢复的资源。
概览
精细恢复功能可让您从备份中恢复部分资源。精细恢复功能可灵活地细化父级恢复方案中定义的恢复范围。如果精细恢复范围与父级恢复方案中定义的原始范围不重叠,则不会恢复任何资源。
您可以为在个别资源级别设有冲突处理模式的恢复方案启用精细恢复功能:
- 合并跳过
- 合并替换
- 合并替换卷
如果您的恢复方案使用命名空间或 ProtectedApplication 级别的冲突处理模式(例如发生冲突时失败或回滚),并且您希望启用精细恢复功能,则您需要更新恢复方案以使用受支持的模式,或创建新的恢复方案。如需详细了解恢复模式,请参阅处理恢复期间的资源冲突问题。
如需使用精细恢复,您可以在包含过滤器和排除过滤器下定义一个或多个过滤条件。您可以从备份中选择特定的部分资源来进行恢复,也可以恢复除部分资源之外的所有资源。您可以同时定义包含过滤器和排除过滤器。如果使用了包含过滤器,则系统只会恢复与这些过滤器匹配的资源。如果使用了排除过滤器,则系统会在恢复过程中排除匹配的资源。如果同时指定了包含过滤器和排除过滤器,系统会先应用包含过滤器,然后再应用排除过滤器。这意味着排除过滤器的优先级高于包含过滤器。如果未指定过滤器,系统会对父级恢复方案中定义的整个范围执行恢复。
构建过滤条件时,有四个可选属性:
- GroupKind:资源的 Kubernetes API 组和种类
- 命名空间:命名空间范围的资源的命名空间
- 资源名称:资源的名称
- 标签:用于根据 Kubernetes 标签选择资源的键值对
您可以组合使用上述四个属性来定义过滤条件。如果您指定了多个属性,则属性之间的关系被视为 AND
。如果某个资源与过滤条件中定义的所有属性匹配,则会选中该资源。您还可以同时提供多个过滤条件,不同过滤条件之间的关系为 OR
。如果某个资源与提供的所有过滤条件中的任意一个匹配,则会选中该资源。
准备工作
使用精细恢复过滤器创建恢复
gcloud
创建具有精细恢复过滤器的 YAML 或 JSON 文件。您可以使用以下 YAML 示例文件。
exclusionFilters: - groupKind: resourceGroup: foo.io resourceKind: Bar name: name1 namespace: ns1 inclusionFilters: - labels: key1: value1 key2: value2
使用您创建的精细恢复过滤器文件创建恢复。
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 控制台中创建精细恢复:
在 Google Cloud 控制台中,转到 Google Kubernetes Engine 页面。
在导航菜单中,点击 Backup for GKE。
点击备份标签页。
在备份列表中,选择要恢复的备份,然后点击设置恢复。
从适用于此备份的方案列表中选择一个恢复方案。
输入恢复的名称和(可选)说明。
点击启用精细恢复复选框。
在包含过滤器或排除过滤器部分中,点击添加过滤条件。
在恢复过滤条件中,定义条件,然后点击保存更改。
如果您想添加更多条件,请再次点击添加过滤条件。
点击恢复。
精细恢复过滤器文件示例
以下示例以 Google Cloud CLI 使用的 YAML 格式提供,或以适用于 Google Cloud 控制台的分步说明的形式提供。
恢复单个命名空间范围的资源
此示例恢复命名空间 webserver
中名为 nginx-vars
的 ConfigMap
资源种类,它使用精细恢复 InclusionFilters
来选择该资源。如果您要选择 core
组下的资源,请对 resourceGroup
使用空字符串。
gcloud
inclusionFilters:
- groupKind:
resourceKind: ConfigMap
name: nginx-vars
namespace: webserver
控制台
- 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
- 在包含过滤器部分中,点击添加过滤条件。
- 在资源名称字段中,输入
nginx-vars
。 - 在命名空间字段中,输入
webserver
。 - 在对象种类字段中,输入
ConfigMap
。 - 点击保存更改。
排除单个集群范围的资源
此示例恢复除名称为 sc1
的一个资源 GroupKind storage.k8s.io/StorageClass
之外的所有可用资源,它使用精细恢复 ExclusionFilters
排除该资源。
gcloud
exclusionFilters:
- groupKind:
resourceGroup: storage.k8s.io
resourceKind: StorageClass
name: sc1
控制台
- 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
- 在排除过滤器部分中,点击添加过滤条件。
- 在资源名称字段中,输入
sc1
。 - 在 API 组字段中,输入
storage.k8s.io
。 - 在对象种类字段中,输入
StorageClass
。 - 点击保存更改。
恢复具有两个标签的资源
此示例恢复同时具有标签 key1:value1
和 key2:value2
的资源,它使用精细恢复 InclusionFilters
来选择资源。
gcloud
inclusionFilters:
- labels:
key1: value1
key2: value2
控制台
- 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
- 在包含过滤器部分中,点击添加过滤条件。
在标签部分中:
- 点击添加标签
- 在密钥 1 字段中,输入
key1
。 - 在值 1 字段中,输入
value1
。 - 点击添加标签。
- 在密钥 2 字段中,输入
key2
。 - 在值 2 字段中,输入
value2
。
点击保存更改。
排除某些 GroupKind 的所有资源
此示例恢复除 GroupKind ConfigMap
和 storage.k8s.io/StorageClass
之外的所有可用资源,它使用精细恢复 ExclusionFilters
排除这两个 GroupKind。
gcloud
exclusionFilters:
- groupKind:
resourceKind: ConfigMap
- groupKind:
resourceGroup: storage.k8s.io
resourceKind: StorageClass
控制台
- 按照使用精细恢复过滤器创建恢复过程中的操作方式,启用精细恢复。
- 在排除过滤器部分中,点击添加过滤条件。
- 在对象种类字段中,输入
ConfigMap
。 - 点击保存更改。
- 在对象种类字段中,输入
- 在排除过滤器部分中,点击添加过滤条件。
- 在 API 组字段中,输入
storage.k8s.io
。 - 在对象种类字段中,输入
StorageClass
。 - 点击保存更改。
- 在 API 组字段中,输入