規劃備份作業

本頁面說明如何建立 GKE 備份方案,用於備份 Google Kubernetes Engine (GKE) 中的工作負載。

備份方案提供一系列備份的設定、位置和管理功能。備份方案包含備份設定,包括來源叢集、要備份的工作負載選取項目,以及根據這項方案產生的備份構件儲存區域。

您可以為每個叢集建立一或多個備份方案。您可能需要為叢集制定多個備份計畫,主要原因有兩個:

  • 您想將備份構件儲存在多個區域。在這種情況下,請為要儲存備份的每個區域建立備份方案。
  • 您想將叢集備份分區,例如:

    • 您希望一天內進行多次備份,而不是在一天中的某個時間點進行一次大型備份。
    • 您想更頻繁地備份叢集的某些部分 (例如每天備份某些命名空間,每小時備份其他命名空間)。

建議每個叢集都至少有一項備份方案。

GKE 備份功能不支援將叢集從一個專案備份至另一個專案。您只能在建立叢集的專案中,為叢集建立備份方案。

您可以建立備份方案,並採用備份排程方法 (智慧排程或 Cron 排程),自動建立備份。建議您為備份計畫設定智慧排程。這可確保系統自動建立備份,以符合復原點目標 (RPO) 需求。詳情請參閱「自動建立及刪除備份」。

如果不想使用備份排程方法建立備份方案,請手動備份工作負載。建立備份方案後,即可透過該方案建立備份。

事前準備

必要的角色

如要取得建立及管理備份方案所需的權限,請要求管理員在專案中授予您 Backup for GKE 備份管理員 (roles/gkebackup.backupAdmin) IAM 角色,這是 Backup for GKE 管理員 (roles/gkebackup.admin) 的子集。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

建立備份方案

使用 gcloud CLI 或 Google Cloud 控制台建立備份方案。

gcloud

如要建立備份計畫並設定時間表,請執行下列指令:

gcloud beta container backup-restore backup-plans create BACKUP_PLAN_NAME \
    --project=PROJECT_ID \
    --location=BACKUP_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_NAME:要建立的備份方案名稱。
  • PROJECT_ID: Google Cloud專案的 ID。
  • BACKUP_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,其中包含要備份的 ProtectedApplications 清單。NAMESPACE1/APP1,NAMESPACE2/APP2,...
    • --selected-namespaces,並以 NAMESPACE1,NAMESPACE2,... 形式列出要備份的命名空間。
    • --selected-namespace-labels,並以 NAMESPACELABEL1=VALUE1,NAMESPACELABEL2=VALUE2,... 形式列出要備份的命名空間標籤。

    建立備份方案時,必須指定其中一個選項。

  • --include-secrets:選用引數,可納入 Secret 資源 (如在備份範圍內)。

  • --include-volume-data:選用引數,用於在備份中加入永久磁碟區資料。如要在還原期間建立空白磁碟區,請勿設定這個引數。

  • ENCRYPTION_KEY:選用引數,用於定義客戶自行管理的加密金鑰路徑。請參閱「關於 CMEK 加密」。

  • TARGET_RPO_MINUTES:如果設定 EXCLUSION_WINDOWS_FILE,則為必要引數。以分鐘為單位指定目標 RPO。智慧排程會使用這個值自動建立備份。 最短為 60 分鐘 (1 小時),最長為 86400 分鐘 (60 天)。 您無法在一個備份方案中同時設定 TARGET_RPO_MINUTES 和 CRON_SCHEDULE。

  • EXCLUSION_WINDOWS_FILE:選用引數,用於定義無法備份的時間範圍。所有時間均以世界標準時間為準。只有在設定 TARGET_RPO_MINUTES 時,才能使用這個引數。

  • CRON_SCHEDULE:選用引數,用於定義 Cron 排程,自動建立備份並支援標準 Cron 語法。舉例來說,"10 3 * * *" 會在每天凌晨 3:10 建立備份。所有時間都會解讀為世界標準時間。排定備份作業的最短間隔時間為 10 分鐘。您無法在一個備份方案中同時設定 CRON_SCHEDULE 和 TARGET_RPO_MINUTES。

  • RETAIN_DAYS:如果設定 TARGET_RPO_MINUTES 或 CRON_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 排程

下列指令會建立備份方案,排定每小時第 15 分鐘備份所選命名空間 ( my-ns)。備份會在建立後保留三天:

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. 在導覽選單中,按一下「GKE 備份」。

  3. 按一下「建立備份方案」。

  4. 在「Plan details」(方案詳細資料) 部分,執行下列操作:

    1. 選取要備份的叢集。
    2. 輸入備份方案名稱和選填說明。
    3. 選擇備份位置。
  5. 如要自動建立備份,請在「備份排程」部分選取「啟用備份排程」核取方塊,然後選擇下列其中一種方法:

    1. 選取「智慧溫度排程」,然後執行下列操作:

      1. 在「Target RPO」(目標 RPO) 欄位中,輸入備份方案的 RPO,然後從下拉式選單中選取 RPO 值,單位為「Minutes」(分鐘)、「Hours」(小時) 或「Days」(天)。
      2. 選用:選取「定義單一週期性備份排除期」核取方塊,排除備份作業。
        1. 在排除期中選擇「每日」或「每週」。
        2. 在「重複日期」部分,選取要從備份方案中排除的星期幾。只有每週排除時間範圍會顯示這個欄位。
        3. 在「Window start time」(排除期開始時間) 欄位中,輸入備份計畫排除期的開始時間。
        4. 在「時間長度」欄位中,輸入備份方案排除時間長度,然後從下拉式選單中選取「秒」、「分鐘」或「小時」。
      3. 選用:如要建立一或多個單一發生備份排除期,請選取「定義一或多個備份排除日期」核取方塊,然後執行下列操作:
        1. 按一下「新增排除日期」。
        2. 在「排除時間範圍的開始日期和時間」欄位中,按一下 圖示,然後選取備份的「日期」和「時間」。
        3. 在「時間長度」欄位中輸入備份方案排除時間長度,然後從下拉式選單中選取「秒」、「分鐘」或「小時」。
    2. 選取「Cron schedule」(Cron 排程),然後使用標準 cron 語法輸入 Cron 運算式。舉例來說,10 3 * * * 會在每天凌晨 3 點 10 分建立備份。排定備份作業的最短間隔時間為 10 分鐘。

  6. 在「保留政策」部分,執行下列操作:

    1. 設定備份的保留天數,系統會在天數到期後自動刪除備份。
    2. 設定備份無法刪除的天數。
    3. 如要鎖定保留政策,請點選鎖頭圖示,將鎖頭從「關閉」切換為「開啟」。
  7. 在「設定備份範圍和加密作業」部分,執行下列操作:

    1. 選取備份方案的範圍:

      • 按一下「整個叢集 (包括所有命名空間)」,備份所有命名空間資源。
      • 按一下「這個叢集內的所選命名空間」,選擇要納入備份方案的命名空間。
      • 按一下「叢集內所選的受保護應用程式」,然後指定命名空間和應用程式名稱,即可新增資源。
    2. 按一下「Secrets」核取方塊,即可納入 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. 在導覽選單中,按一下「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. 在導覽選單中,按一下「GKE 備份」。

  3. 按一下「備份方案」分頁標籤。

  4. 展開叢集,然後按一下方案名稱。

  5. 按一下「詳細資料」分頁標籤,編輯方案詳細資料。

  6. 按一下「編輯」,編輯方案專區,然後按一下「儲存變更」。

暫停備份排程

您可以手動或自動暫停備份方案,暫停備份排程。 備份方案暫停時,系統不會自動建立備份。不過,你還是可以手動建立備份。如需操作說明,請參閱「建立手動備份」。

  • 手動暫停:您可以使用 Google Cloud 控制台、gcloud 或 Terraform 手動暫停備份方案。
  • 自動暫停:在下列情況下,GKE 備份會自動暫停備份方案:

    • 啟動備份 (排程或手動) 時,如果發生下列任一錯誤:

      • StatusInvalidCluster:StatusInvalidCluster 錯誤表示叢集名稱無效或叢集中繼資料資訊無法使用,導致無法復原。
      • GKEMetadataNotEnabledOnNodepool:GKEMetadataNotEnabledOnNodepool 錯誤代表無法復原的狀況,叢集已啟用 Workload Identity Federation for GKE,但任何節點集區都未設定 GKE_METADATA,導致代理程式無法正常運作。
      • AgentNotInstalled:AgentNotInstalled 錯誤表示叢集沒有安裝必要的代理程式自訂資源定義,因此無法復原,這代表代理程式安裝不正確。
    • 如果備份作業在「建立中」階段持續一小時,可能表示叢集與 Google Cloud /或代理程式之間有連線能力問題,或設定錯誤。

    • 如果備份方案長時間或頻繁備份失敗,系統可能會自動暫停該方案,以免重複發生備份失敗。如果系統偵測到一段時間內沒有成功備份,或近期持續發生失敗,表示有持續性的潛在問題,通常就會發生這種情況。

    如果備份方案因備份失敗而暫停,您可以查看「Backup plan」(備份方案) 詳細資料頁面上的「Current RPO risk」(目前 RPO 風險) 欄位,以及最近失敗備份的「Status reason」(狀態原因) 欄位,排解備份失敗問題。如果備份方案並非刻意暫停,且問題已解決,請繼續執行備份方案,讓系統繼續自動備份。

您可以為暫停的備份方案設定快訊,並在修正基本問題後取消暫停。如需操作說明,請參閱「設定備份方案暫停時的快訊」。

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. 在導覽選單中,按一下「GKE 備份」。

  3. 按一下「備份方案」分頁標籤。

  4. 展開叢集,然後按一下方案名稱。

  5. 按一下「Pause Schedule」(暫停排程),然後在確認對話方塊中按一下「Pause Schedule」(暫停排程)。

Terraform

   resource "google_gke_backup_backup_plan" "basic" {
     name = "BACKUP_PLAN"
     cluster = google_container_cluster.CLUSTER.id
     location = "LOCATION"
     backup_schedule {
       paused = True
     }
     backup_config {
       include_volume_data = true
       include_secrets = true
       all_namespaces = true
     }
   }

更改下列內容:

  • BACKUP_PLAN:要暫停的備份方案名稱。
  • CLUSTER:google_container_cluster 資源的名稱。
  • LOCATION:備份方案的位置。

繼續備份方案

控制台

請按照下列操作說明,在 Google Cloud 控制台恢復備份方案:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在導覽選單中,按一下「GKE 備份」。

  3. 按一下「備份方案」分頁標籤。

  4. 展開叢集,然後按一下方案名稱。

  5. 按一下「繼續排程」,然後在確認對話方塊中點選「繼續排程」。

Terraform

   resource "google_gke_backup_backup_plan" "basic" {
     name = "BACKUP_PLAN"
     cluster = google_container_cluster.CLUSTER.id
     location = "LOCATION"
     backup_schedule {
       paused = false
     }
     backup_config {
       include_volume_data = true
       include_secrets = true
       all_namespaces = true
     }
   }

更改下列內容:

  • BACKUP_PLAN::要恢復的備份方案名稱。
  • CLUSTER:您 google_container_cluster資源的名稱。
  • LOCATION:備份計畫的位置。

刪除備份方案

您可以使用 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. 在導覽選單中,按一下「GKE 備份」。

  3. 按一下「備份方案」分頁標籤。

  4. 展開叢集,然後按一下方案名稱。

  5. 按一下「 刪除企劃書」。

  6. 輸入備份方案名稱,然後在確認對話方塊中按一下「刪除備份方案」。

後續步驟