規劃備份作業

本頁面說明如何為 Google Distributed Cloud (GDC) Air-gapped 中的叢集工作負載建立及管理備份計畫。

備份方案提供一系列備份的設定、位置和管理功能。備份方案包含備份設定,包括來源叢集和要備份的工作負載。Google 建議為每個叢集提供至少一項備份方案。

您可以為每個叢集建立一或多個備份方案。您可能基於下列原因,需要分割叢集的備份:

  • 您希望在一天內進行多次較小的備份,而不是在一天中的某個時間點進行一次非常大的備份。
  • 您希望更頻繁地備份叢集的某些部分,例如某些命名空間每天備份一次,其他命名空間則每小時備份一次。

單一叢集或虛擬機器 (VM) 可屬於一或多個備份方案。備份方案無法跨越多個叢集,但如果多個 VM 位於同一叢集,則可由單一備份方案擷取。您必須將所有備份和還原資源與專案名稱建立關聯。

事前準備

如要建立備份方案,您必須具備下列條件:

  • 必要的身分與存取權角色:
    • 使用者叢集備份管理員:管理使用者叢集中的備份資源,例如備份和還原方案。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」角色 (user-cluster-backup-admin)。詳情請參閱「角色定義」。
  • 如果您是應用程式運算子,請要求具備使用者叢集備份管理員權限的管理員為您建立備份方案。
  • 備份使用者叢集時,請務必將用於建立備份方案的專案附加至該叢集。

建立備份方案

建議您為備份方案定義 Cron 排程,讓系統依據該排程自動建立備份。您也可以手動備份工作負載。詳情請參閱「建立手動備份」。

使用 GDC 控制台或 API 建立備份方案。

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,按一下「Backup for Clusters」(叢集備份)
  3. 按一下「建立備份計畫」
  4. 在「方案詳細資料」部分,完成下列步驟並按一下「繼續」
    1. 在「叢集」清單中,選取要備份的叢集。
    2. 在「專案」清單中選取專案。
    3. 在「備份方案名稱」欄位中,輸入所選備份方案名稱。
    4. (選用) 在「備份方案說明」中輸入備份方案的說明。
    5. 在「備份存放區」欄位中,選取備份存放區。備份儲存空間是物件儲存空間實作項目。
    6. 點選「下一步」
  5. 在「範圍和加密」部分,完成下列步驟並按一下「繼續」

    1. 為備份方案選取下列其中一個範圍:

      1. 按一下「整個叢集」,備份中的所有命名空間資源。
      2. 按一下「叢集內所選的命名空間」,選擇要備份的叢集命名空間。
        1. 依序按一下「Edit Cluster Namespace」(編輯叢集命名空間) 和「Add Cluster Namespace」(新增叢集命名空間),然後輸入「Namespace」(命名空間)
      3. 按一下「在這個叢集中選定的受保護應用程式」,然後指定命名空間和應用程式名稱,即可新增資源。
        1. 依序點按「編輯受保護的應用程式」和「新增受保護的應用程式」,然後輸入「命名空間」和「受保護的應用程式」
    2. 按一下「Include Secrets」(包含密鑰),即可納入 Kubernetes Secret 資源。

    3. 如要在備份中加入磁碟區資料,請按一下「包含永久磁碟區的資料」。如要在備份期間建立空白磁碟區,請取消勾選這個核取方塊。

  6. 在「排程和保留」部分,完成下列步驟,然後按一下「繼續」

    1. 如要定義排程,請在「CRON 字串」欄位中,使用標準 cron 語法輸入運算式。舉例來說,運算式 10 3 * * * 會在每天 0310 建立備份。所有時間都會解讀為 UTC。排定備份作業的時間間隔下限為 10 分鐘。
    2. 在「在以下天數後刪除備份」欄位中,設定備份資料的保留天數。達到天數上限後,備份檔就會自動刪除。
    3. 設定備份無法刪除的天數。
    4. 如要鎖定保留政策,請按一下鎖頭圖示,將鎖頭從「關閉」切換為「開啟」
  7. 查看備份方案詳細資料,然後按一下「建立方案」

API

在叢集中建立 ClusterBackupPlan 自訂資源,即可安排備份時間。備份方案會根據 backupSchedule 定期安排備份作業。ClusterBackupPlan 資源是命名空間資源。以下是 ClusterBackupPlan 的範例:

apiVersion: backup.gdc.goog/v1
kind: ClusterBackupPlan
metadata:
  name: CLUSTER_BACKUP_PLAN
  namespace: PROJECT_NAME
spec:
  targetCluster:
    targetClusterType: UserCluster
    targetClusterName:
      kind: "Cluster"
      name: CLUSTER_NAME
  backupSchedule:
    cronSchedule: CRON_SCHEDULE
    paused: BACKUP_SCHEDULE_STATUS
  clusterBackupConfig:
    backupScope:
      selectedNamespaces:
        namespaces: [NAME_SPACE]
    clusterBackupRepositoryName: CLUSTER_BACKUP_REPOSITORY
    includeVolumeData: VOLUME_DATA_INCLUDED
    volumeStrategy: VOLUME_STRATEGY
    includeSecrets: SECRETS_INCLUDED
  retentionPolicy:
    backupDeleteLockDays: BACKUP_DELETE_LOCK_DAYS
    backupRetainDays: BACKUP_RETAIN_DAYS
  description: BACKUP_PLAN_DESCRIPTION

更改下列內容:

  • CLUSTER_BACKUP_PLAN:叢集備份計畫名稱。
  • PROJECT_NAME:GDC 專案的名稱。
  • CLUSTER_NAME:要備份的叢集名稱。封閉的 targetCluster 欄位包含下列元件:
    • targetClusterType:要備份的叢集類型,例如 UserClusterManagementAPI。本範例使用 UserCluster
    • targetClusterName:包含 name,由 CLUSTER_NAME 設定。
  • CRON_SCHEDULE:指出何時排定備份作業的 crontab 時間表,例如 "*/30 * * * *"。排定備份作業的時間間隔下限為 10 分鐘。
  • BACKUP_SCHEDULE_STATUS:如果 true,系統不會排定定期備份。
  • NAME_SPACE:要納入備份的命名空間清單。封閉的 clusterBackupConfig 欄位包含備份的設定詳細資料:
    • backupScope:指出備份的資源。本範例使用 selectedNamespaces。可能的值包括:
      • allNamespaces:擷取所有命名空間中的所有資源。
      • selectedNamespaces:擷取指定命名空間清單中的資源。
      • selectedApplication:擷取 protectedApplications 定義的資源。
    • namespaces:如果 backupScopeselectedNamespaces,則適用。
  • CLUSTER_BACKUP_REPOSITORYclusterBackupConfigclusterBackupRepositoryName 的值。這是儲存備份的目標存放區,必須匯入為 ReadWrite
  • VOLUME_DATA_INCLUDED:指定是否備份磁碟區資料。根據預設,此值為 false。如要在備份中加入磁碟區資料,請將此值設為 true
  • VOLUME_STRATEGY:要執行的磁碟區備份類型。可用的值包括:
    • ProvisionerSpecific:利用基礎儲存空間佈建工具的備份和還原功能。如果 includeVolumeDatatrue,請使用這個選項。
    • LocalSnapshotOnly:只在本地儲存系統本身建立磁碟區的時間點副本。
    • Portable:提供與儲存空間無關的磁碟區資料備份方式。
  • SECRETS_INCLUDED:指定是否備份密鑰。根據預設,此值為 false。如要在備份中納入 Kubernetes Secret 資源,請將此值設為 true
  • BACKUP_DELETE_LOCK_DAYS:在備份建立後,防止刪除備份的天數,例如 10 days
  • BACKUP_RETAIN_DAYS:定義備份的保留天數總計。之後就會自動刪除。如果將這個值設為較大的數字,可能會導致儲存空間耗盡;如果設為較小的數字,則可能增加資料遺失的風險。如未指定,預設值為 35。資料保留政策不會覆寫儲存位置的資料保留政策,且不得超過 90 天。
  • BACKUP_PLAN_DESCRIPTION:備份方案說明。

建立備份方案後,系統會根據備份排程,自動建立備份並套用指定的備份設定。

查看備份方案

使用 GDC 控制台或 API 查看備份方案。

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,按一下「Backup for Clusters」(叢集備份)
  3. 按一下「選取專案」,然後視您的角色選取機構或專案:
    • 使用者叢集備份管理員:選取機構可查看機構中的所有備份方案,選取專案則可查看專案中的所有備份方案。
    • 備份建立者:選取專案即可查看專案中的所有備份方案。
  4. 按一下「備份方案」分頁標籤。
  5. 按一下清單中的備份方案,即可查看詳細資料。具備使用者叢集備份管理員權限的使用者,可以查看機構中的所有備份方案。具備備份建立者角色的使用者,可以查看所選專案中的所有備份方案。

API

如要查看備份方案,請使用 kubectl get 指令:

kubectl get clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME -o yaml

更改下列內容:

  • CLUSTER_BACKUP_PLAN:要查看的備份方案名稱。
  • PROJECT_NAME:GDC 專案的名稱。

編輯備份方案

使用 GDC 控制台或 API 編輯備份方案。

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,按一下「Backup for Clusters」(叢集備份)
  3. 按一下「選取專案」,然後視您的角色選取機構或專案:
    • 使用者叢集備份管理員:選取機構可查看機構中的所有備份方案,選取專案則可查看專案中的所有備份方案。
    • 備份建立者:選取專案即可查看專案中的所有備份方案。
  4. 按一下「備份方案」分頁標籤。
  5. 按一下要編輯的備份方案名稱。
  6. 按一下「方案設定」分頁標籤,即可查看可修改的欄位。
  7. 按一下「時間表和保留期限」的「編輯」圖示 ,即可編輯該資源:

    1. 如要更新排程,請在「CRON 字串」欄位中,使用標準 Cron 語法輸入運算式。舉例來說,運算式 10 3 * * * 會在每天 0310 建立備份。所有時間都會解讀為 UTC。排定備份作業的時間間隔下限為 10 分鐘。
    2. 在「在以下天數後刪除備份」欄位中,設定備份資料的保留天數。達到天數上限後,備份檔就會自動刪除。
    3. 在「防止刪除備份的天數」欄位中,設定備份無法刪除的天數。

    4. 如要鎖定保留政策,請按一下鎖頭圖示,將狀態從「關閉」切換為「開啟」

    5. 按一下「儲存」按鈕,確認變更。

API

如要編輯備份方案,請使用 kubectl edit 指令修改 ClusterBackupPlan 自訂資源。這個指令會在預設文字編輯器中開啟資源的 YAML 設定。

kubectl edit clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME

更改下列內容:

  • CLUSTER_BACKUP_PLAN:要編輯的備份方案名稱。
  • PROJECT_NAME:GDC 專案的名稱。

在編輯器中,您可以修改下列欄位:

  • spec.backupSchedule.cronSchedule:更新備份頻率。
  • spec.backupSchedule.paused:啟用或停用備份排程。
  • spec.retentionPolicy.backupRetainDays:變更備份保留時間。
  • spec.retentionPolicy.backupDeleteLockDays:變更刪除鎖定時間。
  • spec.retentionPolicy.locked:鎖定資料保留政策。
  • spec.deactivated:停用備份方案。將這個欄位設為「true」可防止建立備份及後續更新。

停用備份方案

使用 GDC 控制台或 API 停用備份計畫:

控制台

  1. 登入 GDC 控制台。
  2. 在導覽選單中,按一下「Backup for Clusters」(叢集備份)
  3. 按一下「選取專案」,然後視您的角色選取機構或專案:
    • 使用者叢集備份管理員:選取機構可查看機構中的所有備份方案,選取專案則可查看專案中的所有備份方案。
    • 備份建立者:選取專案即可查看專案中的所有備份方案。
  4. 按一下「備份方案」分頁標籤。
  5. 按一下要停用的備份方案名稱。
  6. 按一下「停用方案」按鈕。
  7. 在欄位中輸入要停用的備份方案名稱。
  8. 按一下「停用」按鈕,即可完成停用這項備份方案的程序。

API

如要停用備份方案,請將 deactivated 欄位設為 true

kubectl patch clusterbackupplan CLUSTER_BACKUP_PLAN -n PROJECT_NAME -p '{"spec":{"deactivated":true}}' --type=merge

更改下列內容:

  • CLUSTER_BACKUP_PLAN:要停用的備份方案名稱。
  • PROJECT_NAME:GDC 專案的名稱。

後續步驟