規劃備份作業


本頁說明如何建立 Backup for GKE 備份計畫,用於備份 Google Kubernetes Engine (GKE) 中的工作負載。

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

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

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

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

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

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

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

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

事前準備

必要的角色

如要取得建立及管理備份方案所需的權限,請要求管理員授予您專案的 Backup for GKE 備份管理員 (roles/gkebackup.backupAdmin) 身分與存取權管理角色。這個角色是 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:專案的 ID。 Google Cloud
  • 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,... 形式列出要備份的命名空間。

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

  • --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:選用引數,可定義備份作業無法執行的時間範圍。所有時間都會解讀為世界標準時間。只有在設定 TARGET_RPO_MINUTES 時,才能使用這個引數。

  • CRON_SCHEDULE:選用引數,用於定義 Cron 排程,自動建立備份並支援標準 Cron 語法。舉例來說,"10 3 * * *" 會在每天凌晨 3 點 10 分建立備份。所有時間均以世界標準時間為準。排定備份作業的時間間隔下限為 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 檔案,其中包含一個每週時間範圍和一個單一發生時間範圍的 YAML 陣列。exclusionWindows

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

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

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

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

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

      1. 在「目標 RPO」欄位中,輸入備份計畫的 RPO,然後從下拉式選單中選取「分鐘」、「小時」或「天」的 RPO 值。
      2. 選用:選取「定義單一週期性備份排除期」核取方塊,排除備份作業。
        1. 在排除視窗中選擇「每日」或「每週」
        2. 在「重複時間」部分,選取要從備份計畫中排除的星期幾。這個欄位只會顯示每週排除時間範圍。
        3. 在「排除期開始時間」欄位中,輸入備份計畫排除期的開始時間。
        4. 在「Duration」(時間長度) 欄位中輸入備份計畫排除時間長度,然後從下拉式選單中選取「Seconds」(秒)、「Minutes」(分) 或「Hours」(時)
      3. 選用:如要建立一或多個單一發生備份排除期,請選取「定義一或多個備份排除日期」核取方塊,然後執行下列操作:
        1. 按一下「新增排除日期」
        2. 在「Start date and time for exclusion window」(排除時段的開始日期和時間) 欄位中,按一下 圖示,然後選取備份的「Date」(日期) 和「Time」(時間)
        3. 在「Duration」(時間長度) 欄位中輸入備份計畫排除時間長度,然後從下拉式選單中選取「Seconds」(秒)、「Minutes」(分) 或「Hours」(時)
    2. 選取「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:要建立的備份方案名稱。
  • CLUSTERgoogle_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. 按一下「編輯」,編輯方案專區,然後按一下「儲存變更」

暫停備份排程

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

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

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

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

    • 為避免備份作業重複失敗,如果備份方案長期或頻繁發生備份失敗的情況,系統可能會自動暫停該方案。如果系統偵測到備份作業長時間未成功,或近期持續發生備份失敗的情況,通常表示有持續性的根本問題,就會顯示這則訊息。

    如果備份方案因備份失敗而暫停,請查看「備份方案」詳細資料頁面上的「目前的 RPO 風險」欄位,以及最近失敗備份的「狀態原因」欄位,排解備份失敗問題。如果是不小心暫停備份方案,且問題已解決,請恢復備份方案,繼續自動備份。

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

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. 依序點選「暫停排程」和確認對話方塊中的「暫停排程」

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:要暫停的備份方案名稱。
  • CLUSTERgoogle_container_cluster 資源的名稱。
  • LOCATION:備份方案的位置。

繼續備份方案

控制台

如要在 Google Cloud 控制台中繼續執行備份方案,請按照下列操作說明進行:

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

    前往「Google Kubernetes Engine」

  2. 在導覽選單中,按一下「Backup for 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:要繼續執行的備份方案名稱。
  • CLUSTERgoogle_container_cluster 資源的名稱。
  • LOCATION:備份方案的位置。

刪除備份方案

您可以使用 gcloud CLI 或Google Cloud console 刪除備份計畫。如果備份方案含有任何備份,就無法刪除。

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. 輸入備份方案名稱,然後在確認對話方塊中按一下「刪除備份方案」

後續步驟