GKE 備份

GKE 備份服務可以備份及還原 GKE 叢集內的工作負載。這個方法包含兩個元件:

  • 做為服務控制層的 Google Cloud API
  • GKE 外掛程式 (Backup for GKE 代理程式),您必須在要執行備份和還原作業的每個叢集中啟用。

在災難復原、CI/CD 管道、複製工作負載或升級等情境中,工作負載備份可以派上用場。保護工作負載可協助您達成對業務至關重要的復原點目標。

簡介

啟用後,Backup for GKE 服務會與 GKE 使用者介面、Google Cloud CLI 和 REST API 整合,為開發和作業提供一致的工作流程。備份作業會擷取兩種形式的資料:

  • 設定備份:一組從備份叢集的 API 伺服器擷取的 Kubernetes 資源資訊清單,可擷取叢集狀態。
  • 磁碟區備份:一組與設定備份中找到的 PersistentVolumeClaim 資源對應的磁碟區備份。

您可以選擇要備份或還原哪些工作負載,也可以備份或還原所有工作負載。您可以備份一個叢集的工作負載,然後還原到另一個叢集。您可以排定備份作業的自動執行時間,以便在發生事件時快速復原工作負載。

Backup for GKE 支援跨專案備份或還原叢集。您也可以在與叢集相同的專案中,為 GKE 叢集建立備份方案。同樣地,您也可以為與叢集位於同一專案的 GKE 叢集建立還原方案。

還原工作負載時,系統會在目標叢集中重新建立 Kubernetes 資源。建立資源後,工作負載功能還原作業會受到叢集協調程序影響 (例如,Pod 會排程至節點,然後在這些節點上啟動)。還原期間,您可以選擇套用轉換規則,用來比對一組資源,並將這些資源的屬性目前值替換為新值。

結合選擇性備份和還原與替代功能,可支援許多不同的備份和還原情境,例如:

  • 備份叢集中的所有工作負載,並還原至另一個叢集,以進行災難復原。
  • 備份所有工作負載,但選擇性地在來源叢集中復原單一工作負載。
  • 備份一個命名空間中的資源,然後複製到另一個命名空間。
  • 將工作負載從一個叢集遷移或複製到另一個叢集。
  • 變更工作負載的儲存空間參數 (例如將工作負載從區域永久磁碟移至地區永久磁碟)。

您必須先建立已啟用 GKE 備份服務的目標叢集,才能備份或還原任何工作負載。

架構

Backup for GKE 包含兩個主要元件:

  • 在 Google Cloud 中執行的服務,支援以資源為基礎的 REST API。這項服務是 Backup for GKE 的控制層。這項服務包含與此 API 互動的 Google Cloud 控制台 UI 元素。
  • 代理程式:在執行備份或還原作業的每個叢集中執行。代理程式會與 Backup for GKE API 互動,在這些叢集中執行備份和還原作業。

下圖顯示不同 Backup for GKE 元件之間的關係:

Backup for GKE 架構

服務總覽

Backup for GKE 服務提供 API 端點,供用戶端互動。與大多數 Google Cloud API 相同,Backup for GKE API 會在雲端 資源資源階層中,針對應用程式專屬資源運作。「GKE 備份」會管理這些應用程式專屬資源的資料庫,而服務 API 方法大多對應於對這些資源執行的建立、讀取、更新或刪除作業。

雲端資源模型中有兩種主要作用中資源類型:

  • Backup:代表特定時間點的 GKE 叢集特定部分備份。建立 Backup 資源會啟動備份程序 (最終會儲存目標 Kubernetes 資源的副本,並建立目標永久磁碟區的快照)。刪除 Backup 會一併刪除這些儲存的構件。
  • Restore:代表將特定 Backup 的選定部分還原至 GKE 叢集。建立 Restore 資源會啟動還原程序。刪除 Restore 不會產生任何副作用,且會從資料庫中移除還原記錄。

Backup for GKE 也包含兩種設定和控制資源類型:

  • BackupPlanBackup 資源的父項資源,代表備份鏈結。這項資源包含備份設定,包括來源叢集、要備份的工作負載選取項目,以及要儲存這項方案產生的 Backup 構件的區域。這個區域可以是任何支援的位置。如果備份儲存在與 GKE 叢集不同的區域,則須支付輸出網路資料移轉費用。詳情請參閱「Backup for GKE 定價」。

  • RestorePlan:提供可重複使用的還原範本。這項資源包含還原設定,包括要還原備份的目標叢集、來源備份方案、還原範圍、衝突處理方式和轉換規則。建立還原方案前,請先建立目標叢集。GKE 備份功能不會在還原期間建立目標叢集。

代理程式總覽

您設定要透過 GKE 備份服務備份的每個 GKE 叢集,都會部署並執行 GKE 備份代理程式。代理程式負責執行備份和還原活動,例如:

  • 備份:

    • 協調備份程序。
    • 從 Kubernetes API 伺服器擷取資源、將資源序列化為封存檔,然後儲存封存檔。
    • 正在建立與 PersistentVolumeClaims 相關聯的基礎磁碟區備份。
  • 還原:

    • 協調還原程序。
    • 從儲存空間擷取 Kubernetes 資源封存檔、解壓縮所選資源、對這些資源套用適當的修改內容,並在目標叢集中建立這些資源。
    • 建立磁碟區,並將其連線至目標叢集的 Kubernetes 設定。

管理員不會與代理程式互動,因為代理程式是由自訂 Kubernetes 資源 (BackupJobRestoreJob) 驅動,這些資源會在叢集中自動建立,以回應備份和還原雲端資源的建立作業。不過,管理員可以在叢集中建立選用的 ProtectedApplication Kubernetes 資源,藉此影響備份作業的協調。這些ProtectedApplication資源是 GKE 備份功能專屬資源,可提供更精細的選項,用於定義備份和還原範圍。

如要瞭解預先發布版和正式發布版代理程式之間的差異,請參閱預先發布版代理程式淘汰

可用區備援

下節說明 Backup for GKE 的區域備援功能。

  • GKE 構件的備份會複製到區域內的多個可用區,確保即使某個可用區發生中斷,作業仍能持續進行。
  • GKE 備份服務會在每個區域內至少三個可用區進行複製,提供額外的備援和復原能力。
  • GKE 備份功能在儲存資料時,不會做出任何區域層級的決策。 Backup for GKE 會依賴基礎區域設施處理區域層級的複製作業。

不會備份的內容

您只能使用 Backup for GKE 備份 Kubernetes 資源和基礎永久磁碟區。GKE 備份不會備份下列項目:

  • GKE 叢集設定資訊,例如節點設定、節點集區、初始叢集大小或已啟用的功能。
  • 備份參照的容器映像檔。系統只會備份描述工作負載並參照容器映像檔的 Kubernetes 資源。如果備份中工作負載資訊清單參照的映像檔已從映像檔存放區移除,後續還原該設定時,工作負載將無法成功還原。
  • 叢集外部服務的設定資訊或狀態,例如 Cloud SQL 或外部負載平衡器。
  • 系統只會備份永久磁碟類型的磁碟區。系統不會備份其他磁碟區類型,例如 Filestore NFS 或 Google Cloud NetApp Volumes。不過,您可以使用 GKE 備份功能,為 Filestore 磁碟區支援的工作負載提供解決方案。詳情請參閱「使用 Backup for GKE 處理 Filestore 磁碟區」。

後續步驟