本頁說明如何建立 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 CloudBACKUP_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_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 檔案,其中包含一個每週時間範圍和一個單一發生時間範圍的 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 控制台中建立備份方案:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「建立備份方案」。
在「方案詳細資料」部分執行下列操作:
- 選取要備份的叢集。
- 輸入備份方案名稱和選填說明。
- 選擇備份位置。
如要自動建立備份,請在「備份排程」部分選取「啟用備份排程」核取方塊,然後選擇下列其中一種方法:
選取「智慧排程」,然後執行下列操作:
- 在「目標 RPO」欄位中,輸入備份計畫的 RPO,然後從下拉式選單中選取「分鐘」、「小時」或「天」的 RPO 值。
- 選用:選取「定義單一週期性備份排除期」核取方塊,排除備份作業。
- 在排除視窗中選擇「每日」或「每週」。
- 在「重複時間」部分,選取要從備份計畫中排除的星期幾。這個欄位只會顯示每週排除時間範圍。
- 在「排除期開始時間」欄位中,輸入備份計畫排除期的開始時間。
- 在「Duration」(時間長度) 欄位中輸入備份計畫排除時間長度,然後從下拉式選單中選取「Seconds」(秒)、「Minutes」(分) 或「Hours」(時)。
- 選用:如要建立一或多個單一發生備份排除期,請選取「定義一或多個備份排除日期」核取方塊,然後執行下列操作:
- 按一下「新增排除日期」。
- 在「Start date and time for exclusion window」(排除時段的開始日期和時間) 欄位中,按一下 圖示,然後選取備份的「Date」(日期) 和「Time」(時間)。
- 在「Duration」(時間長度) 欄位中輸入備份計畫排除時間長度,然後從下拉式選單中選取「Seconds」(秒)、「Minutes」(分) 或「Hours」(時)。
選取「Cron 排程」,然後使用標準 cron 語法輸入 CRON 運算式。舉例來說,
10 3 * * *
會在每天凌晨 3 點 10 分建立備份。排定備份作業的時間間隔下限為 10 分鐘。
在「保留政策」部分,執行下列操作:
- 設定備份的保留天數,系統會在期限過後自動刪除備份。
- 設定備份無法刪除的天數。
- 如要鎖定保留政策,請按一下鎖頭圖示,將鎖頭從「關閉」切換為「開啟」。
在「設定備份範圍和加密作業」部分,執行下列操作:
選取備份方案的範圍:
- 按一下「整個叢集 (包括所有命名空間)」,備份所有命名空間資源。
- 按一下「這個叢集內的所選命名空間」,選擇要納入備份方案的命名空間。
- 按一下「在這個叢集中選定的受保護應用程式」,然後指定命名空間和應用程式名稱,即可新增資源。
按一下「Secrets」核取方塊,即可納入 Kubernetes Secret 資源。
如要在備份中加入磁碟區資料,請勾選「永久磁碟區資料」核取方塊。如果選擇略過磁碟區資料,還原期間就無法還原磁碟區資料。不過,還原時有兩個選項可選擇磁碟區資料:佈建新磁碟區或重複使用現有磁碟區。
如要啟用 CMEK 加密,請先授予適當 CMEK 金鑰的存取權 (請參閱「關於 CMEK 加密」一文)。
- 按一下「使用客戶管理的加密金鑰」核取方塊,選取金鑰。
查看備份方案詳細資料,然後按一下「建立方案」。
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 控制台中查看備份計畫,請按照下列說明操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「備份方案」分頁標籤。
展開叢集,然後按一下方案名稱。
按一下「詳細資料」分頁標籤,查看方案詳細資料。
更新備份方案
您可以更新備份方案資訊,例如說明、備份範圍、備份模式、加密或備份排程。您也可以修改備份方案的保留政策,例如備份資料的保留時間,或備份資料無法刪除的時間長度。
使用 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 控制台中更新備份方案,請按照下列操作說明進行:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「備份方案」分頁標籤。
展開叢集,然後按一下方案名稱。
按一下「詳細資料」分頁標籤,編輯方案詳細資料。
按一下「編輯」edit,編輯方案專區,然後按一下「儲存變更」。
暫停備份排程
您可以手動或自動暫停備份方案,藉此暫停備份排程。 備份方案暫停後,系統不會自動建立備份。不過,您還是可以手動建立備份。如需操作說明,請參閱「建立手動備份」。
- 手動暫停:您可以使用 Google Cloud 控制台、gcloud 或 Terraform 手動暫停備份計畫。
自動暫停:在下列情況下,Backup for GKE 會自動暫停備份方案:
啟動備份 (排定或手動) 時,如果發生下列任一錯誤:
StatusInvalidCluster
:StatusInvalidCluster
錯誤表示叢集名稱無效,或叢集的中繼資料資訊無法使用,因此無法復原。GKEMetadataNotEnabledOnNodepool
:如果叢集已啟用 Workload Identity Federation for GKE,但任何節點集區都未設定GKE_METADATA
,導致代理程式無法正常運作,就會發生GKEMetadataNotEnabledOnNodepool
錯誤,表示叢集處於無法復原的狀態。AgentNotInstalled
:AgentNotInstalled
錯誤表示叢集沒有安裝必要的代理程式自訂資源定義,因此無法復原,這也代表代理程式安裝不正確。
如果備份作業在「建立中」階段停留一小時,可能表示叢集和/或代理程式之間有連線問題,或是設定錯誤。 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 控制台暫停備份時間表,請按照下列說明操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「備份方案」分頁標籤。
展開叢集,然後按一下方案名稱。
依序點選「暫停排程」和確認對話方塊中的「暫停排程」。
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 控制台中繼續執行備份方案,請按照下列操作說明進行:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「備份方案」分頁標籤。
展開叢集,然後按一下方案名稱。
依序點選「繼續排程」和確認對話方塊中的「繼續排程」。
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 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 控制台刪除備份方案,請按照下列說明操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「備份方案」分頁標籤。
展開叢集,然後按一下方案名稱。
按一下 delete「刪除方案」。
輸入備份方案名稱,然後在確認對話方塊中按一下「刪除備份方案」。