本页面介绍如何创建 Backup for GKE 恢复方案,该方案用于在 Google Kubernetes Engine (GKE) 中恢复备份。
恢复方案是为相应备份行预配置的恢复场景。恢复方案可以向管理员分配使用这些配置的权限。发生突发事件时,这些用户可以快速且独立地恢复备份。例如,已部署应用中的软件更新可能会使永久性数据损坏,从而将应用命名空间置于无效状态,这需要恢复。
在恢复期间,您可以选择应用转换规则,用于匹配一组资源并针对新值替换这些资源上属性的当前值。
准备工作
所需的角色
如需获得创建和管理恢复方案所需的权限,请让您的管理员为您授予 Backup for GKE Restore Admin (roles/gkebackup.restoreAdmin
),该角色是项目的 Backup for GKE Admin (roles/gkebackup.admin
) IAM 角色的子集。如需详细了解如何授予角色,请参阅管理访问权限。
创建恢复方案
您可以使用 Google Cloud CLI 或 Google Cloud 控制台为备份创建恢复方案。
gcloud
如需创建恢复方案,请运行以下命令:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--backup-plan=BACKUP_PLAN \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE \
--all-namespaces \
--cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY \
--cluster-resource-scope-selected-group-kinds=CLUSTER_RESOURCE_SCOPE \
--volume-data-restore-policy=VOLUME_DATA_RESTORE_POLICY
替换以下内容:
RESTORE_PLAN
:您要创建的恢复方案的名称。PROJECT_ID
:您的 Google Cloud 项目的 ID。LOCATION
:资源的计算区域,例如us-central1
。请参阅资源位置简介。该位置必须与目标集群所在的区域相同。BACKUP_PLAN
:可以使用此恢复方案恢复的备份的来源:projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME
CLUSTER
:您要将备份恢复到的目标集群的名称:- 区域级集群:
projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
- 可用区级集群:
projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
- 区域级集群:
NAMESPACED_RESOURCE_RESTORE_MODE
:定义如何处理命名空间型资源的恢复时间冲突。命名空间型资源始终按按命名空间或按 ProtectedApplication 在组中恢复。您可以使用下列任一选项:delete-and-restore
:当目标集群包含计划要恢复到集群中的同一组资源时,系统会删除现有资源组,然后再恢复新资源。fail-on-conflict
:如果目标集群中已存在计划要从备份恢复的任何资源组,则恢复将失败。
--all-namespaces
:恢复备份中的所有命名空间资源。或者指定:--excluded-namespaces
,并以NAMESPACE1,NAMESPACE2,...
形式指定命名空间列表,以恢复除列表中指定命名空间以外的所有命名空间。--selected-applications
,并以NAMESPACE1/APP1,NAMESPACE2/APP2,...
形式指定待恢复的 ProtectedApplications 列表。--selected-namespaces
,并以NAMESPACE1,NAMESPACE2,...
形式指定待恢复的命名空间列表。--no-namespaces
,以表明不恢复备份中的任何命名空间资源。此选项不能与--cluster-resource-scope-no-group-kinds
一同指定。
在创建恢复方案时,您必须指定其中一个选项。
CLUSTER_RESOURCE_CONFLICT_POLICY
:定义如何处理选定集群资源的恢复时间冲突。您可以使用下列任一选项:use-existing-version
:如果目标集群中已有要恢复的资源,Backup for GKE 会保留现有资源。use-backup-version
:如果目标集群中已有要恢复的资源,Backup for GKE 会将现有资源替换为备份中的新资源。
--cluster-resource-scope-selected-group-kinds
:(可选)以Group/Kind
格式恢复具有所选群组种类的集群资源。CLUSTER_RESOURCE_SCOPE
定义要恢复的集群资源的 GroupKind。例如apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass
。或者指定:
cluster-resource-scope-all-group-kinds
,以选择要恢复的所有集群资源群组种类。- 将
cluster-resource-scope-excluded-group-kinds
替换为集群资源群组种类列表,以恢复除列表中指定种类以外的所有集群资源群组种类。 cluster-resource-scope-no-group-kinds
。此选项不能与--no-namespaces
一同指定。
如未指定上述任何选项,系统不会恢复任何集群资源。
VOLUME_DATA_RESTORE_POLICY
:定义如何为所恢复的卷填充数据。请使用以下选项之一:restore-volume-data-from-backup
:新 PV 将使用备份中的相应卷备份数据进行恢复。reuse-volume-handle-from-backup
:PV 将使用备份中原始 PV 的卷句柄进行预配。no-volume-data-restoration
:PV 将不会恢复。恢复操作只会恢复选定 PVC,并要求相应的存储驱动程序动态预配空白 PV 或将其绑定到带外创建的预配 PV。
如需查看选项的完整列表,请参阅 gcloud beta container backup-restore restore-plans create
文档。
创建一个用于所有命名空间的 RestorePlan
以下命令会创建一个 RestorePlan,用于恢复所有命名空间和集群资源:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=BACKUP_PLAN \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=fail-on-conflict \
--all-namespaces \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-all-group-kinds \
--volume-data-restore-policy=restore-volume-data-from-backup
创建用于回滚命名空间的 RestorePlan
以下命令会创建一个 RestorePlan,用于从备份回滚 my-ns
命名空间:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=BACKUP_PLAN \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=delete-and-restore \
--selected-namespaces=my-ns \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-selected-group-kinds=apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass \
--volume-data-restore-policy=restore-volume-data-from-backup
创建 RestorePlan 来回滚 ProtectedApplication
,以重新连接原始卷
以下命令会创建 RestorePlan 来回滚 ProtectedApplication my-ns/my-app
,以重新连接原始卷:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=BACKUP_PLAN \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=delete-and-restore \
--selected-applications=my-ns/my-app \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-no-group-kinds \
--volume-data-restore-policy=reuse-volume-handle-from-backup
创建仅恢复集群资源的 RestorePlan
以下命令会创建一个 RestorePlan,用于恢复所有集群资源:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=BACKUP_PLAN \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=fail-on-conflict \
--no-namespaces \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-all-group-kinds
控制台
使用以下说明在 Google Cloud 控制台中创建恢复方案:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在导航菜单中,点击 Backup for GKE。
点击创建恢复方案。
在为方案命名并选择集群部分中,完成以下操作,然后点击下一步:
- 输入恢复方案名称和可选说明。
- 为与要恢复的备份相对应的现有集群选择一个备份方案。
- 选择要恢复备份的目标集群。
在选择命名空间型资源部分,完成以下操作,然后点击下一步:
选择要恢复的命名空间:
- 点击所有命名空间型资源,恢复备份中的所有命名空间型资源。
- 点击“异常”部分下的添加命名空间,以排除备份中的任何命名空间。
- 点击选定的命名空间型资源,指定要恢复的备份中的命名空间。
- 点击选定的受保护应用,通过指定命名空间和应用名称来添加资源。
- 点击没有命名空间型资源,表明不恢复任何命名空间型资源。
- 点击所有命名空间型资源,恢复备份中的所有命名空间型资源。
如果选择了任何命名空间型资源,请选择如何处理冲突:
- 如果目标集群中已存在计划从备份恢复的任何命名空间,请点击发生冲突时失败(非破坏性)来使恢复失败。
- 如果目标集群中已存在计划从备份恢复的任何命名空间,请点击回滚(破坏性)以删除现有命名空间。
选择如何恢复卷数据,然后点击下一步:
- 点击预配新卷并从备份恢复卷数据,在新的永久性磁盘上从备份恢复卷数据。
- 点击不恢复卷数据以预配新的永久性卷。如果目标集群包含满足
PersistentVolumeClaim
要求的无界限永久性卷,则集群将绑定到该卷。 - 点击重复使用包含您的数据的现有卷,以恢复卷备份数据。任何
PersistentVolumeClaims
都会绑定到引用现有永久性磁盘的卷。
(可选)在选择集群级资源部分中,完成以下内容,然后点击下一步:
选择要恢复的群组种类:
- 点击所有集群范围的资源,以恢复备份中的所有集群范围的资源。
- 点击“异常”部分下的添加群组种类,以排除备份中的任何集群范围的资源。
- 点击选定的集群范围的资源,以指定备份中要恢复的集群范围的资源。默认情况下,
apiextensions.k8s.io/CustomResourceDefinition
和storage.k8s.io/StorageClass
处于选中状态。点击添加群组种类,以添加更多集群范围的资源。 - 点击无集群范围的资源,以选择不恢复任何集群资源。
- 点击所有集群范围的资源,以恢复备份中的所有集群范围的资源。
如果选择了任何集群范围的资源,请选择如何处理冲突:
- 点击将资源保留在目标集群中,以跳过已存在于目标集群中的资源。
点击替换目标集群中的资源,以删除目标集群中已存在的资源,并恢复备份中的副本。
(可选)在添加转换规则部分中,完成以下操作,然后点击下一步:
- 点击添加规则,然后输入可选说明。
- 如果要将转换规则限制在符合特定条件的资源上,请在指定资源条件和操作部分中执行以下操作:
- 点击命名空间条件,然后输入命名空间列表,以匹配这些命名空间中的资源。
- 点击群组种类条件,输入 API 组种类,然后输入对象种类。这会将 API 组与这些类型中的资源进行匹配。
- 点击 JSON 路径条件,然后输入 JSON 路径,用于标识要应用转换的匹配资源中的字段。
- 输入新值以替换匹配属性的当前值,或者选中替换特定值(使用正则表达式)复选框。然后键入模式,与这些资源的当前值进行比较。
- 点击保存更改。
查看恢复方案详情,然后点击创建方案。
查看恢复方案
您可以使用 gcloud CLI 或 Google Cloud 控制台查看恢复方案及其详情。
gcloud
如需列出项目和位置中的所有恢复方案,请运行以下命令:
gcloud beta container backup-restore restore-plans list \
--project=PROJECT_ID \
--location=LOCATION
仅对于 list
命令,您可以提供 -
作为除 PROJECT_ID
以外的任何参数的值。-
值充当通配符。如果您未指定命令行选项或未设置属性,则 -
值是任何参数的默认值。
如需查看选项的完整列表,请参阅 gcloud beta container backup-restore restore-plans list
文档。
如需查看恢复方案的详细信息,请运行以下命令:
gcloud beta container backup-restore restore-plans describe RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION
控制台
使用以下说明在 Google Cloud 控制台中查看恢复方案及其详情:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在导航菜单中,点击 Backup for GKE。
点击恢复方案标签页。
展开备份方案,然后点击恢复方案名称。
点击详情标签页以查看其详细信息。
更新恢复方案
使用 gcloud CLI 更新恢复方案及其详细信息。
gcloud
如需更新恢复方案(例如通过添加新的说明),请运行以下命令:
gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--description=DESCRIPTION
如需查看选项的完整列表,请参阅 gcloud beta container backup-restore restore-plans update
文档。
控制台
使用以下说明在 Google Cloud 控制台中更新恢复方案:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在导航菜单中,点击 Backup for GKE。
点击恢复方案标签页。
点击恢复方案名称。
点击详情标签页。
点击 edit 编辑以编辑方案部分,然后点击保存更改。
删除恢复方案
您可以使用 gcloud CLI 或 Google Cloud 控制台删除恢复方案。删除恢复方案也会删除任何子恢复方案。
gcloud
如需删除恢复方案,请运行以下命令:
gcloud beta container backup-restore restore-plans delete RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION
如需查看选项的完整列表,请参阅 gcloud beta container backup-restore restore-plans delete
文档。
控制台
使用以下说明在 Google Cloud 控制台中删除恢复方案:
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在导航菜单中,点击 Backup for GKE。
点击恢复方案标签页。
展开集群,然后点击方案名称。
点击 delete 删除方案。
输入恢复方案名称,然后点击确认对话框中的删除恢复方案。
后续步骤
- 详细了解如何恢复备份。