本頁說明如何以更精細的粒度選取要還原的資源。
總覽
精細還原功能可讓您從備份還原部分資源。精細還原功能可讓您彈性調整父項還原方案中定義的還原範圍。如果細部還原範圍與父項還原計畫中定義的原始範圍沒有重疊,系統就不會還原任何資源。
您可以為還原方案啟用精細還原功能,並在個別資源層級設定衝突處理模式:
- 合併/略過
- 合併/替換
- 合併/替換磁碟區
如果還原方案使用命名空間或 ProtectedApplication 層級的衝突處理模式,例如「發生衝突時失敗」或「回溯」,且您想啟用精細還原功能,則必須更新還原方案以使用支援的模式,或是建立新的還原方案。如要進一步瞭解還原模式,請參閱「在還原期間處理資源衝突」。
如要使用精細還原功能,請在納入和排除篩選器下方定義一或多個篩選條件。您可以從備份中選取特定資源子集進行還原,也可以還原所有資源,但排除特定子集。您可以同時定義納入和排除篩選器。如果使用納入篩選器,系統只會還原符合這些篩選器的資源。如果使用排除篩選器,系統會從還原程序中排除相符的資源。如果同時指定納入和排除篩選器,系統會先套用納入篩選器,再套用排除篩選器。也就是說,排除篩選條件的優先順序高於納入篩選條件。如未指定篩選條件,系統會針對父項還原計畫中定義的整個範圍執行還原作業。
建構篩選條件時,有四個選用屬性:
- GroupKind:資源的 Kubernetes API 群組和種類
- 命名空間:命名空間範圍內資源的命名空間
- 資源名稱:資源的名稱
- 標籤:根據 Kubernetes 標籤選取資源的鍵/值組合
您可以組合使用上述四個屬性來定義篩選條件。如果指定多個屬性,系統會將屬性之間的關係視為 AND
。如果資源符合篩選條件中定義的所有屬性,就會選取該資源。您也可以同時提供多個篩選條件,不同篩選條件之間的關係為 OR
。如果資源符合所有提供的篩選條件,就會選取該資源。
事前準備
使用精細還原篩選器建立還原作業
gcloud
建立 YAML 或 JSON 檔案,並設定精細的還原篩選條件。您可以參考下列 YAML 範例。
exclusionFilters: - groupKind: resourceGroup: foo.io resourceKind: Bar name: name1 namespace: ns1 inclusionFilters: - labels: key1: value1 key2: value2
使用您建立的精細還原篩選器檔案,執行還原作業。
gcloud beta container backup-restore restores create RESTORE \ --project=PROJECT_ID \ --location=LOCATION \ --restore-plan=RESTORE_PLAN \ --backup=BACKUP \ --filter-file=FILTER_FILE
更改下列內容:
RESTORE
:要建立的還原作業名稱。PROJECT_ID
:您的 Google Cloud 專案 ID。LOCATION
:父項還原計畫的運算區域。RESTORE_PLAN
:這個還原作業所依據的父項還原計畫名稱。BACKUP
:要還原的備份。這必須位於父項還原方案參照的備份方案中,如projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN/backups/BACKUP
FILTER_FILE
:細部還原篩選條件的路徑。
如需完整的選項清單,請參閱
gcloud beta container backup-restore restores create
說明文件。
控制台
請按照下列操作說明,在 Google Cloud 控制台中建立細部還原作業:
在 Google Cloud 控制台中,前往「Google Kubernetes Engine」頁面。
在導覽選單中,按一下「Backup for GKE」。
按一下 [備份] 分頁標籤。
在備份清單中,選取要還原的備份檔案,然後按一下「設定還原」。
從適用於這項備份的方案清單中,選擇還原方案。
輸入還原作業的「名稱」和「說明」 (選填)。
勾選「啟用精細還原功能」核取方塊。
在「納入篩選器」或「排除篩選器」部分,按一下「新增篩選條件」。
在「還原篩選器條件」中定義條件,然後按一下「儲存變更」。
如要新增更多條件,請再次點選「新增篩選條件」。
按一下「還原」。
精細還原篩選器檔案範例
下列範例採用 Google Cloud CLI 使用的 YAML 格式,或 Google Cloud 控制台的逐步操作說明。
還原單一命名空間範圍資源
這個範例會使用精細還原 InclusionFilters
選取資源,在命名空間 webserver
中還原名稱為 nginx-vars
的資源種類 ConfigMap
。如要選擇 core
群組下的資源,請使用 resourceGroup
的空字串。
gcloud
inclusionFilters:
- groupKind:
resourceKind: ConfigMap
name: nginx-vars
namespace: webserver
控制台
- 如建立精細還原篩選器程序所述,啟用精細還原功能。
- 在「排除篩選器」部分,按一下「新增篩選器條件」。
- 在「Resource name」(資源名稱) 欄位中,輸入
nginx-vars
。 - 在「Namespace」(命名空間) 欄位中輸入
webserver
。 - 在「Object kind」(物件種類) 欄位中,輸入
ConfigMap
。 - 按一下 [儲存變更]。
排除單一叢集範圍內的資源
這個範例會還原所有可用資源,但排除名稱為 sc1
的資源 GroupKind storage.k8s.io/StorageClass
,並使用精細還原 ExclusionFilters
排除該資源。
gcloud
exclusionFilters:
- groupKind:
resourceGroup: storage.k8s.io
resourceKind: StorageClass
name: sc1
控制台
- 如建立精細還原篩選器程序所述,啟用精細還原功能。
- 在「排除篩選器」部分,按一下「新增篩選條件」。
- 在「Resource name」(資源名稱) 欄位中,輸入
sc1
。 - 在「API group」(API 群組) 欄位中,輸入
storage.k8s.io
。 - 在「Object kind」(物件種類) 欄位中,輸入
StorageClass
。 - 按一下 [儲存變更]。
還原具有兩個標籤的資源
這個範例會使用精細復原 InclusionFilters
選取同時具有 key1:value1
和 key2:value2
標籤的資源,然後復原這些資源。
gcloud
inclusionFilters:
- labels:
key1: value1
key2: value2
控制台
- 如建立精細還原篩選器程序所述,啟用精細還原功能。
- 在「排除篩選器」部分,按一下「新增篩選器條件」。
在「標籤」部分:
- 按一下 [Add label] (新增標籤)。
- 在「Key 1」(金鑰 1) 欄位中,輸入
key1
。 - 在「Value 1」(值 1) 欄位中輸入
value1
。 - 按一下「新增標籤」。
- 在「Key 2」(金鑰 2) 欄位中,輸入
key2
。 - 在「Value 2」(值 2) 欄位中輸入
value2
。
按一下 [儲存變更]。
排除某些 GroupKind 的所有資源
這個範例會還原所有可用資源,但 GroupKind ConfigMap
和 storage.k8s.io/StorageClass
除外,並使用精細還原 ExclusionFilters
排除這兩個 GroupKind。
gcloud
exclusionFilters:
- groupKind:
resourceKind: ConfigMap
- groupKind:
resourceGroup: storage.k8s.io
resourceKind: StorageClass
控制台
- 如建立精細還原篩選器程序所述,啟用精細還原功能。
- 在「排除篩選器」部分,按一下「新增篩選器條件」。
- 在「Object kind」(物件種類) 欄位中,輸入
ConfigMap
。 - 按一下 [儲存變更]。
- 在「Object kind」(物件種類) 欄位中,輸入
- 在「排除篩選器」部分,按一下「新增篩選器條件」。
- 在「API group」(API 群組) 欄位中,輸入
storage.k8s.io
。 - 在「Object kind」(物件種類) 欄位中,輸入
StorageClass
。 - 按一下 [儲存變更]。
- 在「API group」(API 群組) 欄位中,輸入