规划一组备份


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

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

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

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

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

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

您可以使用备份规划方法创建备份方案以自动创建备份:智能规划或 Cron 规划。我们建议您智能规划您的备份方案。这可确保自动创建备份以满足恢复点目标 (RPO) 要求。如需了解详情,请参阅自动备份创建和删除

如果您不想使用备份规划方法创建备份方案,则需要手动备份工作负载。创建备份方案后,您可以通过该方案创建备份。

准备工作

所需的角色

如需获得创建和管理备份方案所需的权限,请让您的管理员为您授予 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
    --target-rpo-minutes=TARGET_RPO_MINUTES \
    --exclusion-windows-file=EXCLUSION_WINDOWS_FILE
    --cron-schedule=CRON_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,... 形式的待备份 ProtectedApplications 列表。
    • --selected-namespaces,以及 NAMESPACE1,NAMESPACE2,... 形式的待备份命名空间列表。

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

  • --include-secrets:可选参数,用于纳入 Secret 资源(如果这些资源在备份范围内)。

  • --include-volume-data:可选参数,用于在备份中纳入永久性卷数据。如果要在恢复期间创建空卷,请勿设置此参数。

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

  • TARGET_RPO_MINUTES:如果设置了 EXCLUSION_WINDOWS_FILE,则为必需参数。指定目标 RPO(以分钟为单位)。智能规划使用此值自动创建备份。最小值为 60 分钟(1 小时),最大值为 86400 分钟(60 天)。您不能在一个备份方案中同时设置 TARGET_RPO_MINUTESCRON_SCHEDULE

  • EXCLUSION_WINDOWS_FILE:可选参数,用于定义无法进行备份的时间窗口期。所有时间均采用世界协调时间 (UTC)。此参数仅在设置了 TARGET_RPO_MINUTES 时可用。

  • CRON_SCHEDULE:可选参数,用于定义能够自动创建备份并支持标准 cron 语法的 Cron 时间表。例如,"10 3 * * *" 会在每天凌晨 3:10 创建备份。所有时间均采用世界协调时间 (UTC)。所预定的备份之间的最短间隔为 10 分钟。您不能在一个备份方案中同时设置 CRON_SCHEDULETARGET_RPO_MINUTES

  • RETAIN_DAYS:如果设置了 TARGET_RPO_MINUTESCRON_SCHEDULE,则为必需参数。指定保留备份的天数。保留期限到期后,系统会自动删除此方案的备份。

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

  • --locked:可选参数,用于锁定备份方案的保留政策。

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

为所有命名空间创建 RPO 为 24 小时且具有单一排除窗口期的备份方案

创建一个 window.yaml 文件,其中包含 exclusionWindows 的 YAML 数组。

exclusionWindows:
- startTime:
    hours: 1
    minutes: 0
  duration: "3600s"
  singleOccurrenceDate:
    day: 1
    month: 3
    year: 2024

以下命令会为所有目标 RPO 为 24 小时的命名空间创建备份方案,并且 2024 年 3 月 1 日凌晨 1 点到凌晨 2 点不允许进行备份。备份在创建后将保留七天,并锁定三天:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --location=LOCATION \
    --cluster=CLUSTER \
    --all-namespaces \
    --include-secrets \
    --include-volume-data \
    --target-rpo-minutes=1440 \
    --exclusion-windows-file=window.yaml \
    --backup-retain-days=7 \
    --backup-delete-lock-days=3 \
    --locked

为所有命名空间创建一个备份方案,其中 RPO 为 2 小时,并且有多个排除窗口期

创建一个 window.yaml 文件,其中包含 exclusionWindows 的 YAML 数组:一个每周一次的窗口期和一个一次性窗口期。

exclusionWindows:
- startTime:
    hours: 15
    minutes: 0
  duration: "5400s"
  daysOfWeek:
    daysOfWeek:
    - MONDAY
    - FRIDAY
- startTime:
    hours: 1
    minutes: 0
  duration: "3600s"
  singleOccurrenceDate:
    day: 1
    month: 3
    year: 2024

以下命令会为所有命名空间创建备份方案,其中目标 RPO 为 2 小时,并且 2024 年 3 月 1 日凌晨 1 点到凌晨 2 点以及每周一和周五下午 3 点到下午 4:30 不允许进行备份。备份在创建后将保留七天,并锁定三天:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN \
    --location=LOCATION \
    --cluster=CLUSTER \
    --all-namespaces \
    --include-secrets \
    --include-volume-data \
    --target-rpo-minutes=120 \
    --exclusion-windows-file=window.yaml \
    --backup-retain-days=7 \
    --backup-delete-lock-days=3 \
    --locked

使用每日 Cron 时间表为所有命名空间创建备份方案

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

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

使用每小时 Cron 时间表为所选命名空间创建备份方案

以下命令会创建一个备份方案,安排为所选命名空间 (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 创建备份方案

以下命令会创建一个备份方案,用于选定 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. 如需自动创建备份,请在备份时间表部分中,选中启用备份时间表复选框,然后选择以下方法之一:

    1. 选择智能规划,然后执行以下操作:

      1. 目标 RPO 字段中,为备份方案输入 RPO,然后从下拉列表中选择 RPO 值,包括分钟小时
      2. 可选:为备份排除项选中定义单个周期性备份排除窗口期复选框。
        1. 从排除窗口期中选择每天每周
        2. 重复日部分,选择要从备份方案中排除星期几。此字段仅针对每周排除窗口期显示。
        3. 窗口期开始时间字段中,输入备份方案排除窗口期的开始时间。
        4. 时长字段中,输入备份方案排除时长,然后选择数分钟小时
      3. 可选:如果要创建一个或多个一次性备份排除窗口期,请选中定义一个或多个备份排除日期复选框,然后执行以下操作:
        1. 点击添加排除日期
        2. 排除窗口期的开始日期和时间字段中,点击 图标,然后选择日期时间备份。
        3. 时长字段中,输入备份方案排除时长,然后选择数分钟小时
    2. 选择 Cron 时间表,然后使用标准 cron 语法输入 CRON 表达式。例如,10 3 * * * 会在每天凌晨 3:10 创建备份。 所预定的备份之间的最短间隔为 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. 输入备份方案名称,然后点击确认对话框中的删除备份方案

后续步骤