本頁說明如何為還原計畫中的命名空間和叢集範圍資源,設定衝突處理策略。
還原至叢集時,您可能會在下列情況下遇到資源衝突:
- 還原至已佈建資源的現有叢集。
- Kubernetes 資源由工具 (例如 GitOps 或運算子) 管理時。
您可以透過「GKE 備份」的各種選項,在還原方案中指定叢集範圍和命名空間資源的衝突處理方式。
處理叢集範圍內資源的還原衝突
您可以在還原方案中設定下列選項,處理叢集範圍資源的衝突:
- 將資源保留在目標叢集內 (非破壞性):如果目標叢集內已有同名資源,則維持不變。
取代目標叢集中的資源 (破壞性):如果目標叢集中已有資源,請將其刪除,然後從備份還原副本。
gcloud
更新現有還原方案,處理叢集範圍內資源的衝突:
gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY
更改下列內容:
RESTORE_PLAN
:要更新的還原計畫名稱。PROJECT_ID
:您的 Google Cloud 專案 ID。LOCATION
:資源的運算區域,例如us-central1
。CLUSTER_RESOURCE_CONFLICT_POLICY
:定義如何處理所選叢集資源在還原時發生的衝突。請使用下列其中一種方式:use-existing-version
:如果還原的資源已存在於目標叢集,Backup for GKE 會保留現有資源。use-backup-version
:如果還原的資源已存在於目標叢集,GKE 備份會以備份中的新資源取代現有資源。
控制台
如要在 Google Cloud 控制台中更新叢集範圍資源衝突政策,請按照下列操作說明執行:
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「還原方案」分頁標籤。
按一下還原計畫名稱。
按一下 [Details] (詳細資料) 分頁標籤。
在「還原設定」部分中,前往「叢集範圍資源」部分,然後按一下「編輯」。
在「定義衝突處理方式」部分,選取衝突處理方式。
按一下 [儲存變更]。
命名空間資源的還原衝突處理
在還原方案中,您可以設定下列選項來管理命名空間資源的衝突。您可以在下列層級指定命名空間資源的衝突處理方式:
- 個別資源
- 命名空間與受保護的應用程式
以下是處理個別資源衝突的可用選項:
- 合併略過 (非破壞性):如果已有某項資源,就不從備份還原該項資源。
- 合併/替換磁碟區 (有破壞性):如果已有某項資源,就不還原該項資源,但要按照磁碟區資料還原政策替換基礎永久磁碟區。合併/替換磁碟區可實現僅還原資料。
- 合併取代 (破壞性):如果已有某項資源,就按照磁碟區資料還原政策,以備份中的相應資源和相關聯的磁碟區資料取代該項資源。
以下是處理屬於 Namespace 和 ProtectedApplication 的所有資源衝突時可用的選項:
- 發生衝突時失敗 (非破壞性):如果目標叢集中已有要從備份還原的命名空間或ProtectedApplication,還原作業就會失敗。
回溯 (破壞性):如果目標叢集包含要還原至叢集的命名空間或ProtectedApplication,系統會先刪除現有的資源群組,再還原新資源。
gcloud
更新現有還原方案,處理命名空間資源的衝突:
gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
--project=PROJECT_ID \
--location=LOCATION \
--namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE
更改下列內容:
RESTORE_PLAN
:要更新的還原計畫名稱。PROJECT_ID
:您的 Google Cloud 專案 ID。LOCATION
:資源的運算區域,例如us-central1
。NAMESPACED_RESOURCE_RESTORE_MODE
:定義如何處理命名空間資源的還原時間衝突。請使用下列其中一種方式:merge-skip-on-conflict
:略過個別衝突資源。merge-replace-volume-on-conflict
:略過個別衝突資源,但要替換基礎永久磁碟區資料。merge-replace-on-conflict
:取代個別衝突的資源和基礎永久磁碟區資料。fail-on-conflict
:在命名空間或 ProtectedApplication 發生衝突時失敗。delete-and-restore
:回溯衝突的命名空間或 ProtectedApplication。
控制台
如要在 Google Cloud 控制台中更新命名空間資源衝突政策,請按照下列操作說明執行:
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下「還原方案」分頁標籤。
按一下還原計畫名稱。
按一下 [Details] (詳細資料) 分頁標籤。
在「還原設定」部分中,前往「命名空間資源」部分,然後按一下「編輯」。
在「定義衝突處理方式」部分,選取衝突處理方式。
按一下 [儲存變更]。
常見情境的建議衝突處理方式
下表列出特定常見情境的建議衝突處理策略:
Scenarios | 針對命名空間資源使用建議的衝突處理方式 | 針對叢集範圍內的資源使用建議的衝突處理方式 |
---|---|---|
還原至全新叢集 | 衝突時失敗 | 將資源保留在目標叢集內 |
還原整個命名空間或 ProtectedApplication | 刪除及還原 | 不適用 |
還原至沒有磁碟區的 GitOps 管理叢集 | 合併/略過 | 將資源保留在目標叢集內 |
僅還原以 GitOps 管理的叢集資料 | 合併/替換磁碟區 | 將資源保留在目標叢集內 |
回溯所選工作負載和磁碟區資料 | 合併/替換 | 取代目標叢集內的資源 |
後續步驟
- 進一步瞭解如何還原備份。