本頁面說明如何在還原方案中,為命名空間和叢集範圍資源設定衝突處理策略。
還原至叢集時,您可能會在下列情況下遇到資源衝突:
- 還原至已佈建資源的現有叢集。
- 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:如果目標叢集已有要還原的資源,GKE 備份會保留現有資源。use-backup-version:如果目標叢集內已有要還原的資源,GKE 備份會將現有資源替換為備份中的新資源。
控制台
請按照下列操作說明,在 Google Cloud 控制台更新叢集範圍資源衝突政策:
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「GKE 備份」。
按一下「還原方案」分頁標籤。
按一下還原方案名稱。
點按「Details」(詳細資料) 分頁標籤。
在「Restore configurations」(還原設定) 部分,前往「Cluster-scoped resources」(叢集範圍資源) 部分,然後按一下「Edit」(編輯)。
在「定義衝突處理方式」部分,選取衝突處理方式。
按一下 [儲存變更]。
還原命名空間資源的衝突處理方式
在還原方案中,您可以設定下列選項來管理命名空間資源的衝突。您可以在下列層級指定命名空間資源的衝突處理方式:
- 個別資源
- 命名空間與受保護的應用程式
以下是處理個別資源衝突的可用選項:
- 略過合併 (非破壞性):如果已有某項資源,就不從備份還原該項資源。
- 合併並取代磁碟區 (破壞性):如果已有某項資源,就不還原該項資源,但要按照磁碟區資料還原政策替換基礎永久磁碟區。合併/替換磁碟區可實現僅還原資料。
- 合併取代 (破壞性):如果已有某項資源,就按照磁碟區資料還原政策,以備份中的相應資源和相關聯的磁碟區資料取代該項資源。如要取代現有資源,系統會先嘗試更新資源,使其與備份中的資源相符;如果更新失敗,系統會嘗試刪除資源,然後從備份還原。請注意,這個模式可能會導致資料遺失,因為它會取代目標叢集中的現有資源,而原始 PV 則會根據其回收政策保留或刪除。
以下是處理屬於「命名空間」和「受保護的應用程式」的所有資源衝突時可用的選項:
- 發生衝突時失敗 (非破壞性):如果目標叢集內已有要從備份還原的命名空間或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:專案的 ID。 Google CloudLOCATION:資源的運算區域,例如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」頁面。
在導覽選單中,按一下「GKE 備份」。
按一下「還原方案」分頁標籤。
按一下還原方案名稱。
點按「Details」(詳細資料) 分頁標籤。
在「還原設定」部分,前往「命名空間資源」部分,然後按一下「編輯」。
在「定義衝突處理方式」部分,選取衝突處理方式。
按一下 [儲存變更]。
常見情境的建議衝突處理方式
下表列出特定常見情境的建議衝突處理策略:
| Scenarios | 對命名空間資源使用建議的衝突處理方式 | 針對叢集範圍內的資源,使用建議的衝突處理方式 |
|---|---|---|
| 還原至全新叢集 | 衝突時失敗 | 將資源保留在目標叢集內 |
| 復原整個命名空間或 ProtectedApplication | 刪除及還原 | 不適用 |
| 還原至沒有磁碟區的 GitOps 管理叢集 | 合併/略過 | 將資源保留在目標叢集內 |
| 僅還原 GitOps 代管叢集的資料 | 合併/替換磁碟區 | 將資源保留在目標叢集內 |
| 復原所選工作負載和磁碟區資料 | 合併/替換 | 取代目標叢集內的資源 |
後續步驟
- 進一步瞭解如何還原備份。