规划一组备份


本页面介绍如何创建 Backup for GKE 备份方案,该方案用于备份 Google Kubernetes Engine (GKE) 中的工作负载。

备份方案为一系列备份提供配置、位置和管理功能。备份方案包含备份配置,此配置涉及源集群、选择要备份的工作负载以及存储此方案下生成的备份工件的区域。

您可以为每个集群创建一个或多个备份方案。有两个主要原因导致您可能需要为集群使用多个备份方案:

  • 您希望将备份工件存储在多个区域中。在这种情况下,请为每个要存储备份的区域创建一个备份计划。
  • 您希望对集群的备份进行分区,例如:

    • 您可能希望制作分散在一天时间中的多个较小备份,而不是在一天中的一个时间点制作非常大的备份。
    • 您希望更频繁地备份集群的某些部分,其余部分则不(例如,每天备份某一些命名空间,每小时备份其他命名空间)。

我们建议每个集群至少有一个备份方案。

我们还建议您为备份方案定义 Cron 时间表,以便根据该时间表自动创建备份。您还可以手动备份工作负载。创建备份方案后,您可以从该方案创建备份。

准备工作

所需的角色

如需获得创建和管理备份方案所需的权限,请让您的管理员为您授予 Backup for GKE Backup Admin (roles/gkebackup.backupAdmin),该角色是项目的 Backup for GKE Admin (roles/gkebackup.admin) IAM 角色的子集。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建备份方案

使用 gcloud CLI 或 Google Cloud 控制台创建备份方案。

gcloud

如需创建具有时间表的备份方案,请运行以下命令:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --cluster=CLUSTER \
    --all-namespaces \
    --include-secrets \
    --include-volume-data \
    --encryption-key=ENCRYPTION_KEY
    --cron-schedule=SCHEDULE \
    --backup-retain-days=RETAIN_DAYS \
    --backup-delete-lock-days=DELETE_LOCK_DAYS \
    --locked

替换以下内容:

  • BACKUP_PLAN:您要创建的备份方案的名称。
  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • LOCATION:资源的计算区域,例如 us-central1。请参阅资源位置简介
  • CLUSTER:集群的相对路径:
    • 区域级集群:projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
    • 可用区级集群:projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
  • CLUSTER_NAME:要备份的集群的名称。
  • --all-namespaces:备份集群的所有命名空间。

    或者指定:

    • --selected-applications,以及 NAMESPACE1/APP1,NAMESPACE2/APP2,... 形式的待备份 ProtectedApplication 列表。
    • --selected-namespaces,以及 NAMESPACE1,NAMESPACE2,... 形式的待备份命名空间列表。

    在创建备份方案时,您必须指定其中一个选项。

  • --include-secrets:(可选)如果 Secret 资源在备份范围内,则包含这些资源。

  • --include-volume-data:(可选)在备份中包含永久性卷数据。如果要在恢复期间创建空卷,请省略此标志。

  • ENCRYPTION_KEY:(可选)定义客户管理的加密密钥的路径。请参阅 CMEK 加密简介

  • SCHEDULE:(可选)定义能够自动创建备份并支持标准 Cron 语法的时间表。例如,"10 3 * * *" 会在每天凌晨 3:10 创建备份。所有时间均采用世界协调时间 (UTC)。所计划的备份之间的最短间隔为 10 分钟。

  • RETAIN_DAYS:(如果设置了 SCHEDULE,则为必填)保留备份的天数。此方案的备份在此期限后会自动删除。

  • DELETE_LOCK_DAYS:(可选)无法删除备份的天数。如果设置了此值,则在该生命周期到期之前,不能(自动或手动)删除为该方案创建的备份。

  • --locked:(可选)锁定备份方案的保留政策。

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

创建所有命名空间的 BackupPlan,使用每日计划

以下命令会创建一个 BackupPlan,以安排在每天凌晨 5:20 为所有命名空间执行每日备份。备份将保留 7 天,且在创建后锁定 3 天:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --location=LOCATION \
    --cluster=CLUSTER \
    --all-namespaces \
    --include-secrets \
    --include-volume-data \
    --cron-schedule="20 5 * * *" \
    --backup-retain-days=7 \
    --backup-delete-lock-days=3 \
    --locked

为一个选定命名空间创建 BackupPlan,使用每小时计划

以下命令会创建一个 BackupPlan,安排为所选命名空间 (my-ns) 执行每小时备份,执行时间为每小时的第 15 分钟。备份在创建后会保留 3 天:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --location=LOCATION \
    --cluster=CLUSTER \
    --selected-namespaces=my-ns \
    --include-secrets \
    --include-volume-data \
    --cron-schedule="15 * * * *" \
    --backup-retain-days=3

为选定的 ProtectedApplication 创建 BackupPlan

以下命令会创建一个 BackupPlan,用于选定 ProtectedApplication (my-ns/my-app)。

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --location=LOCATION \
    --cluster=CLUSTER \
    --selected-applications=my-ns1/my-app1,my-ns2/my-app2 \
    --include-secrets \
    --include-volume-data

控制台

使用以下说明在 Google Cloud 控制台中创建备份方案:

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

    前往 Google Kubernetes Engine

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

  3. 点击创建备份方案

  4. 方案详情部分中,执行以下操作:

    1. 选择要备份的集群。
    2. 输入备份方案名称和可选说明。
    3. 选择备份位置。
  5. 备份时间表部分的 CRON 字符串字段中,使用标准 cron 语法输入表达式。例如,10 3 * * * 会在每天凌晨 3:10 创建备份。所有时间均采用世界协调时间 (UTC)。所计划的备份之间的最短间隔为 10 分钟。

  6. 保留政策部分中,执行以下操作:

    1. 设置在自动删除备份之前保留备份的天数。
    2. 设置无法删除备份的天数。
    3. 如需锁定保留政策,请点击锁定图标,将锁定从关闭切换为开启
  7. 配置备份范围和加密部分中,执行以下操作:

    1. 选择备份方案的范围:

      • 点击整个集群(包括所有命名空间),备份备份中的所有命名空间资源。
      • 点击此集群中的所选命名空间以选择要包含在备份方案中的命名空间。
      • 点击此集群中的所选受保护应用,通过指定命名空间和应用名称来添加资源。
    2. 点击 Secret 复选框以包含 Kubernetes Secret 资源。

    3. 如果您希望在备份中包含卷数据,请点击永久性卷数据复选框。如果您选择跳过卷数据,则在恢复期间将无法恢复卷数据。但是,在恢复时,您可以通过两个选项选择卷数据:预配新卷重复使用现有卷

    4. 如需启用 CMEK 加密,您必须先授予对相应 CMEK 密钥的访问权限(请参阅 CMEK 加密简介)。

      1. 点击使用客户管理的加密密钥复选框以选择密钥。
  8. 查看备份方案详情,然后点击创建方案

Terraform

创建 google_gke_backup_backup_plan 资源

resource "google_gke_backup_backup_plan" "basic" {
   name = "BACKUP_PLAN"
   cluster = google_container_cluster.CLUSTER.id
   location = "LOCATION"
   retention_policy {
     backup_retain_days = 7
   }
   backup_schedule {
     cron_schedule = "17 3 * * *"
   }
   backup_config {
     include_volume_data = true
     include_secrets = true
     all_namespaces = true
   }
}

请替换以下内容:

  • BACKUP_PLAN:您要创建的备份方案的名称。
  • CLUSTER:您的 google_container_cluster 资源的名称。
  • LOCATION - 要存储备份的区域。

如需了解详情,请参阅 gke_backup_backup_plan

查看备份方案

使用 gcloud CLI 或 Google Cloud 控制台查看备份方案及其详细信息。

gcloud

如需列出项目和区域中的所有备份方案,请运行以下命令:

gcloud beta container backup-restore backup-plans list \
    --project=PROJECT_ID \
    --location=LOCATION

仅对于 list 命令,您可以提供 - 作为除 PROJECT_ID 以外的任何参数的值。- 值充当通配符。如果您未指定命令行选项或未设置属性,则 - 值是任何参数的默认值。

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

如需查看备份方案的详细信息,请运行以下命令:

gcloud beta container backup-restore backup-plans describe BACKUP_PLAN \
     --project=PROJECT_ID \
     --location=LOCATION

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

控制台

使用以下说明在 Google Cloud 控制台中查看备份方案:

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

    转到 Google Kubernetes Engine。

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

  3. 点击备份方案标签页。

  4. 展开集群,然后点击方案名称。

  5. 点击详细信息标签页以查看方案详细信息。

更新备份方案

使用 gcloud CLI 或 Google Cloud 控制台更新备份方案。

gcloud

如需更新备份方案(例如通过添加新说明),请运行以下命令:

gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --description=DESCRIPTION

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

控制台

使用以下说明在 Google Cloud 控制台中更新备份方案:

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

    前往 Google Kubernetes Engine

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

  3. 点击备份方案标签页。

  4. 展开集群,然后点击方案名称。

  5. 点击详细信息标签页以修改方案详情。

  6. 点击 修改以修改方案部分,然后点击保存更改

暂停备份时间表

您可以暂停备份时间表。在时间表暂停期间,系统不会创建自动备份。您仍然可以手动创建备份。

gcloud

如需暂停备份时间表,请运行以下命令:

gcloud beta container backup-restore backup-plans update BACKUP_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --paused

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

控制台

使用以下说明在 Google Cloud 控制台中暂停备份时间表:

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

    前往 Google Kubernetes Engine

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

  3. 点击备份方案标签页。

  4. 展开集群,然后点击方案名称。

  5. 点击暂停时间表,然后点击确认对话框中的暂停时间表

删除备份方案

您可以使用 gcloud CLI 或 Google Cloud 控制台删除备份方案。如果备份方案包含任何备份,则无法将其删除。

gcloud

如需删除备份方案,请运行以下命令:

gcloud beta container backup-restore backup-plans delete BACKUP_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION

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

控制台

使用以下说明在 Google Cloud 控制台中删除备份方案:

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

    前往 Google Kubernetes Engine

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

  3. 点击备份方案标签页。

  4. 展开集群,然后点击方案名称。

  5. 点击 删除方案

  6. 输入备份方案名称,然后点击确认对话框中的删除备份方案

后续步骤