本頁說明如何建立 Backup for GKE 還原計畫,用於在 Google Kubernetes Engine (GKE) 中還原備份。
還原方案是預先設定的還原情境,適用於相應的備份項目。還原計畫可指派管理員使用這些設定的權限。發生事件時,這些使用者可以快速且獨立地還原備份。舉例來說,已部署應用程式中的軟體更新可能會導致持續性資料損毀,使應用程式命名空間處於無效狀態,因此需要還原。
Backup for GKE 不支援將備份從一個專案還原至另一個專案。您只能將備份還原至備份來源專案中的叢集。還原方案無法參照其他專案中的備份方案。
還原期間,您可以選擇套用轉換規則,這類規則可用於比對一組資源,並將這些資源的屬性目前值替換為新值。
受管理的命名空間
Backup for GKE 不會還原至受管理命名空間。還原時,系統會略過這些命名空間。受管理命名空間清單包括下列項目:
cnrm-system
configconnector-operator-system
gatekeeper-system
gke-connect
gke-gmp-system
gmp-public
kube-node-lease
kube-public
kube-system
- 具有下列標籤的命名空間:
- 鍵:
addonmanager.kubernetes.io/mode
- 值:
Reconcile
或EnsureExists
- 鍵:
事前準備
必要的角色
如要取得建立及管理還原方案所需的權限,請要求管理員授予您專案的 Backup for GKE 還原管理員 (roles/gkebackup.restoreAdmin
) 身分與存取權管理角色。這個角色是 Backup for GKE 管理員 (roles/gkebackup.admin
) 的子集。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
建立還原方案
您可以使用 Google Cloud CLI 或 Google Cloud 控制台,為備份建立還原方案。
gcloud
如要建立還原計畫,請執行下列指令:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--project=PROJECT_ID \
--location=RESTORE_LOCATION \
--backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE \
--all-namespaces \
--cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY \
--cluster-resource-scope-selected-group-kinds=CLUSTER_RESOURCE_SCOPE \
--volume-data-restore-policy=VOLUME_DATA_RESTORE_POLICY
更改下列內容:
RESTORE_PLAN
:要建立的還原計畫名稱。PROJECT_ID
:專案的 ID。 Google CloudRESTORE_LOCATION
:資源的運算區域,例如us-central1
。請參閱「關於資源位置」。位置必須與目標叢集位於相同區域。BACKUP_PLAN
:可透過這項還原方案還原的備份來源:projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME
確認備份方案與新的還原方案位於同一專案。
CLUSTER
:要還原備份的目標叢集名稱:- 地區叢集:
projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME
- 區域叢集:
projects/PROJECT_ID/locations/ZONE/clusters/CLUSTER_NAME
- 地區叢集:
NAMESPACED_RESOURCE_RESTORE_MODE
:定義如何處理命名空間資源的還原時間衝突。系統一律會依命名空間或ProtectedApplication,以群組形式還原命名空間資源。請使用下列其中一種方式:merge-skip-on-conflict
:略過個別衝突資源。merge-replace-volume-on-conflict
:略過個別衝突資源,但要替換基礎永久磁碟區資料。merge-replace-on-conflict
:取代個別衝突的資源和基礎永久磁碟區資料。delete-and-restore
:如果目標叢集包含要還原至叢集的同一組資源,系統會先刪除現有資源組,再還原新資源。fail-on-conflict
:如果目標叢集中已有要從備份還原的任何資源群組,還原作業就會失敗。
--all-namespaces
:還原備份中的所有命名空間資源。 或者,請註明:--excluded-namespaces
,並以命名空間清單做為NAMESPACE1,NAMESPACE2,...
,即可還原清單中的命名空間以外的所有命名空間。--selected-applications
,並提供要還原的 ProtectedApplications 清單,NAMESPACE1/APP1,NAMESPACE2/APP2,...
如以下範例所示:--selected-namespaces
,並以NAMESPACE1,NAMESPACE2,...
形式提供要還原的命名空間清單。--no-namespaces
不會還原備份中的任何命名空間資源。 這個選項無法與--cluster-resource-scope-no-group-kinds
一併指定。
建立還原方案時,必須指定其中一個選項。
CLUSTER_RESOURCE_CONFLICT_POLICY
:定義如何處理所選叢集資源的還原時間衝突。使用下列其中一種方法:use-existing-version
:如果目標叢集中已有要還原的資源,Backup for GKE 會保留現有資源。use-backup-version
:如果目標叢集中已有要還原的資源,Backup for GKE 會將現有資源替換成備份中的新資源。
--cluster-resource-scope-selected-group-kinds
:(選用) 以Group/Kind
格式還原所選群組類型的叢集資源。CLUSTER_RESOURCE_SCOPE
定義要還原的叢集資源 GroupKind。例如:apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass
。或者,請註明:
cluster-resource-scope-all-group-kinds
選取要還原的所有叢集資源群組類型。cluster-resource-scope-excluded-group-kinds
,並列出要還原的所有叢集資源群組類型,但清單中的類型除外。cluster-resource-scope-no-group-kinds
。這個選項無法與--no-namespaces
一併指定。
如未指定任何選項,系統不會還原任何叢集資源。
VOLUME_DATA_RESTORE_POLICY
:定義如何為還原的磁碟區填入資料。請使用下列其中一種方式:restore-volume-data-from-backup
:系統會使用備份中的對應磁碟區備份資料,還原新的 PV。reuse-volume-handle-from-backup
:系統會使用備份中原始 PV 的磁碟區控制代碼,預先佈建 PV。no-volume-data-restoration
:不會還原 PV。還原作業只會還原所選 PVC,並預期對應的儲存空間驅動程式會動態佈建空白 PV,或將其繫結至帶外建立的預先佈建 PV。
如需完整的選項清單,請參閱 gcloud beta container backup-restore restore-plans create
說明文件。
為所有命名空間建立還原方案
下列指令會建立還原方案,還原所有命名空間和叢集資源:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=fail-on-conflict \
--all-namespaces \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-all-group-kinds \
--volume-data-restore-policy=restore-volume-data-from-backup
建立還原方案,將命名空間回復至先前的狀態
下列指令會建立還原方案,將命名空間 my-ns
從備份還原:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=delete-and-restore \
--selected-namespaces=my-ns \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-selected-group-kinds=apiextension.k8s.io/CustomResourceDefinition,storage.k8s.io/StorageClass \
--volume-data-restore-policy=restore-volume-data-from-backup
建立還原方案,將 ProtectedApplication
回復至連線原始磁碟區的狀態
下列指令會建立還原方案,將受保護的應用程式 my-ns/my-app
回復原狀,重新連線至原始磁碟區:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=delete-and-restore \
--selected-applications=my-ns/my-app \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-no-group-kinds \
--volume-data-restore-policy=reuse-volume-handle-from-backup
建立還原方案,只還原叢集資源
下列指令會建立還原方案,還原所有叢集資源:
gcloud beta container backup-restore restore-plans create RESTORE_PLAN \
--location=LOCATION \
--backup-plan=projects/PROJECT_ID/locations/BACKUP_LOCATION/backupPlans/BACKUP_PLAN_NAME \
--cluster=CLUSTER \
--namespaced-resource-restore-mode=fail-on-conflict \
--no-namespaces \
--cluster-resource-conflict-policy=use-existing-version \
--cluster-resource-scope-all-group-kinds
控制台
請按照下列操作說明,在 Google Cloud 控制台中建立還原計畫:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「建立還原計畫」。
在「為計畫命名並選擇叢集」部分,完成下列步驟,然後按一下「下一步」:
- 輸入還原方案名稱和說明 (選填)。
- 為現有叢集選擇備份方案,對應要還原的備份。
- 選擇要將備份還原至哪個目標叢集。
在「選擇命名空間資源」部分中,完成下列步驟,然後按一下「下一步」:
選擇要還原的命名空間:
- 按一下「所有命名空間資源」,還原備份中的所有命名空間資源。
- 按一下「例外狀況」部分下方的「新增命名空間」,即可排除備份中的任何命名空間。
- 按一下「選取的命名空間資源」,指定要還原備份中的哪些命名空間。
- 按一下「選取的受保護應用程式」,然後指定命名空間和應用程式名稱,即可新增資源。
- 按一下「沒有任何命名空間資源」,即可不還原任何命名空間資源。
- 按一下「所有命名空間資源」,還原備份中的所有命名空間資源。
如果選取了任何命名空間資源,請選擇如何處理衝突:
- 如果已有某項資源,請按一下「合併略過 (非破壞性)」,略過從備份還原該項資源。
- 如果已有某項資源,請按一下「合併取代磁碟區 (破壞性)」,系統會略過還原該項資源,但會按照磁碟區資料還原政策,替換基礎永久磁碟區。合併/替換磁碟區可實現僅還原資料。
- 如果已有某項資源,請按一下「合併取代 (破壞性)」,按照磁碟區資料還原政策,以備份中的相應資源和相關聯的磁碟區資料取代該項資源。
- 按一下「Fail on conflict (non-destructive)」(發生衝突時失敗 (非破壞性)),如果目標叢集中已有要從備份還原的命名空間,還原作業就會失敗。
- 如果備份中要還原的命名空間已存在於目標叢集中,請按一下「Rollback (destructive)」(回溯 (破壞性)),刪除現有的命名空間,再還原新的命名空間。
選擇還原磁碟區資料的方式,然後點選「下一步」:
- 按一下「佈建新磁碟區並從備份還原磁碟區資料」,從新永久磁碟上的備份還原磁碟區資料。
- 按一下「不還原磁碟區資料」,即可佈建新的永久磁碟區。如果目標叢集包含未繫結的永久磁碟區,且該磁碟區符合
PersistentVolumeClaim
的需求,叢集就會繫結至該磁碟區。 - 按一下「重複使用含有您資料的現有磁碟區」,即可不還原磁碟區備份資料。所有
PersistentVolumeClaims
都會繫結至參照現有永久磁碟的磁碟區。
(選用) 在「Choose cluster-scoped resources」(選擇叢集範圍內的資源) 區段中,完成下列步驟並按一下「Next」(下一步):
選擇要還原的群組類型:
- 按一下「所有叢集範圍內資源」,即可還原備份中的所有叢集範圍內資源。
- 按一下「例外狀況」部分下方的「新增 groupkinds」,即可排除備份中的任何叢集範圍資源。
- 按一下「選取的叢集範圍內資源」,指定要還原備份中的哪些叢集範圍內資源。
apiextensions.k8s.io/CustomResourceDefinition
和storage.k8s.io/StorageClass
預設為選取狀態。按一下「新增 groupkind」,即可新增更多叢集範圍資源。 - 按一下「No cluster-scoped resources」(沒有叢集範圍內的資源),選擇不還原任何叢集資源。
- 按一下「所有叢集範圍內資源」,即可還原備份中的所有叢集範圍內資源。
如果選取任何叢集範圍內的資源,請選擇如何處理衝突:
- 如果目標叢集中已有資源,請點選「將資源保留在目標叢集內」,略過該資源。
按一下「取代目標叢集內的資源」,即可刪除目標叢集中已有的資源,並從備份還原副本。
(選用) 在「新增轉換規則」部分,完成下列步驟並按一下「下一步」:
- 按一下「新增規則」,然後視需要輸入說明。
- 如要將轉換規則限制為符合特定條件的資源,請在「指定資源條件和動作」部分執行下列操作:
- 按一下「命名空間條件」,然後輸入命名空間清單,以比對這些命名空間中的資源。
- 按一下「Groupkind condition」(群組種類條件),然後輸入 API 群組種類,再輸入物件種類。這會將 API 群組與這些類型中的資源相符。
- 按一下「JSON 路徑條件」,然後輸入 JSON 路徑,找出相符資源中的欄位,並套用轉換。
- 輸入要取代相符屬性目前值的新值,或選取「使用規則運算式取代特定資料值」核取方塊。 然後輸入要與這些資源目前值比較的模式。
- 按一下 [儲存變更]。
查看還原方案詳細資料,然後按一下「建立方案」。
查看還原方案
您可以使用 gcloud CLI 或Google Cloud 控制台,查看還原方案及其詳細資料。
gcloud
如要列出專案和位置中的所有還原計畫,請執行下列指令:
gcloud beta container backup-restore restore-plans list \
--project=PROJECT_ID \
--location=LOCATION
僅適用於 list
指令,您可以為 PROJECT_ID
以外的任何參數提供 -
值。-
值會做為萬用字元。如果您未指定指令列選項或設定屬性,任何參數的預設值都是 -
。
如需完整的選項清單,請參閱 gcloud beta container backup-restore restore-plans list
說明文件。
如要查看還原計畫的詳細資料,請執行下列指令:
gcloud beta container backup-restore restore-plans describe RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION
控制台
如要在 Google Cloud 控制台中查看還原計畫及其詳細資料,請按照下列操作說明執行:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「還原方案」分頁標籤。
展開備份計畫,然後按一下還原計畫名稱。
按一下「詳細資料」分頁標籤,即可查看詳細資料。
更新還原方案
使用 gcloud CLI 更新還原方案及其詳細資料。
gcloud
如要更新還原計畫 (例如新增說明),請執行下列指令:
gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--description=DESCRIPTION
如需完整的選項清單,請參閱 gcloud beta container backup-restore restore-plans update
說明文件。
控制台
如要在 Google Cloud 控制台中更新還原計畫,請按照下列操作說明執行:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「還原方案」分頁標籤。
按一下還原計畫名稱。
按一下 [Details] (詳細資料) 分頁標籤。
按一下「編輯」edit,編輯方案專區,然後按一下「儲存變更」。
刪除還原方案
您可以使用 gcloud CLI 或Google Cloud console 刪除還原計畫。刪除還原計畫也會一併刪除所有子項還原計畫。
gcloud
如要刪除還原計畫,請執行下列指令:
gcloud beta container backup-restore restore-plans delete RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION
如需完整的選項清單,請參閱 gcloud beta container backup-restore restore-plans delete
說明文件。
控制台
如要在 Google Cloud 控制台中刪除還原計畫,請按照下列操作說明執行:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「還原方案」分頁標籤。
展開叢集,然後按一下方案名稱。
按一下 delete「刪除方案」。
輸入還原計畫名稱,然後在確認對話方塊中按一下「刪除還原計畫」。
後續步驟
- 進一步瞭解如何還原備份。