在還原期間處理資源衝突


本頁說明如何為還原計畫中的命名空間和叢集範圍資源,設定衝突處理策略。

還原至叢集時,您可能會在下列情況下遇到資源衝突:

  • 還原至已佈建資源的現有叢集。
  • 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 控制台中更新叢集範圍資源衝突政策,請按照下列操作說明執行:

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

    前往「Google Kubernetes Engine」

  2. 在導覽選單中,按一下「Backup for GKE」

  3. 按一下「還原方案」分頁標籤。

  4. 按一下還原計畫名稱。

  5. 按一下 [Details] (詳細資料) 分頁標籤。

  6. 在「還原設定」部分中,前往「叢集範圍資源」部分,然後按一下「編輯」

  7. 在「定義衝突處理方式」部分,選取衝突處理方式。

  8. 按一下 [儲存變更]。

命名空間資源的還原衝突處理

在還原方案中,您可以設定下列選項來管理命名空間資源的衝突。您可以在下列層級指定命名空間資源的衝突處理方式:

  • 個別資源
  • 命名空間與受保護的應用程式

以下是處理個別資源衝突的可用選項:

  • 合併略過 (非破壞性):如果已有某項資源,就不從備份還原該項資源。
  • 合併/替換磁碟區 (有破壞性):如果已有某項資源,就不還原該項資源,但要按照磁碟區資料還原政策替換基礎永久磁碟區。合併/替換磁碟區可實現僅還原資料。
  • 合併取代 (破壞性):如果已有某項資源,就按照磁碟區資料還原政策,以備份中的相應資源和相關聯的磁碟區資料取代該項資源。

以下是處理屬於 NamespaceProtectedApplication 的所有資源衝突時可用的選項:

  • 發生衝突時失敗 (非破壞性):如果目標叢集中已有要從備份還原的命名空間或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 控制台中更新命名空間資源衝突政策,請按照下列操作說明執行:

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

    前往「Google Kubernetes Engine」

  2. 在導覽選單中,按一下「Backup for GKE」

  3. 按一下「還原方案」分頁標籤。

  4. 按一下還原計畫名稱。

  5. 按一下 [Details] (詳細資料) 分頁標籤。

  6. 在「還原設定」部分中,前往「命名空間資源」部分,然後按一下「編輯」

  7. 在「定義衝突處理方式」部分,選取衝突處理方式。

  8. 按一下 [儲存變更]。

下表列出特定常見情境的建議衝突處理策略:

情境 針對命名空間資源使用建議的衝突處理方式 針對叢集範圍內的資源,使用建議的衝突處理方式
還原至全新叢集 衝突時失敗 將資源保留在目標叢集內
還原整個命名空間或 ProtectedApplication 刪除及還原 不適用
還原至沒有磁碟區的 GitOps 管理叢集 合併/略過 將資源保留在目標叢集內
僅還原以 GitOps 管理的叢集資料 合併/替換磁碟區 將資源保留在目標叢集內
回溯所選工作負載和磁碟區資料 合併/替換 取代目標叢集內的資源

後續步驟