什麼是 Azure Kubernetes Service 備份?

Azure Kubernetes Service (AKS) 備份是一個簡單的雲端原生處理序,可用來備份和還原在 AKS 叢集中執行的容器化應用程式和資料。 您可以為儲存在 CSI 驅動程式型 Azure 磁碟儲存體中持續性磁碟區上的叢集狀態和應用程式資料設定排程備份。 解決方案可讓您透過將備份儲存在 Blob 容器和磁碟快照中,以更精細地控制要備份或還原的特定命名空間或整個叢集。 您可以針對端對端案例使用 AKS 備份,包括作業復原、複製開發人員/測試環境,以及叢集升級案例。

AKS 備份與 Azure 中的備份中心整合,提供單一檢視,可協助您大規模控管、監視、操作和分析備份。 您也可以在 Azure 入口網站的 AKS 執行個體資源功能表中,於 [設定] 下方取得備份。

注意

使用 Azure 備份的 AKS 保存庫備份和跨區域還原目前處於預覽狀態。

AKS 備份的運作方式為何?

使用 AKS 備份來備份 AKS 工作負載,以及部署在 AKS 叢集中的永續性磁碟區。 解決方案需要在 AKS 叢集安裝備份延伸模組。 備份保存庫會與延伸模組通訊,完成與備份和還原相關的作業。 使用備份延伸模組是強制性的,而且延伸模組必須安裝在 AKS 叢集內,才能啟用叢集的備份和還原。 設定 AKS 備份時,您會為儲存體帳戶和儲存備份的 Blob 容器新增值。

除了備份延伸模組,還會在 AKS 叢集的受控資源群組中建立使用者身分識別 (稱為延伸模組身分識別)。 延伸模組身分識別會獲得指派儲存體帳戶參與者角色,該記憶體帳戶的備份會儲存在 Blob 容器中。

若要支援公用、私人和授權的 IP 型叢集,AKS 備份需要在 AKS 叢集與備份保存庫之間啟用受信任的存取權。 受信任的存取權允許備份保存庫存取 AKS 叢集,因為已為它指派備份作業的特定權限。 如需 AKS 受信任存取權的詳細資訊,請參閱使用受信任存取權讓 Azure 資源存取 AKS 叢集

注意

AKS 備份可讓您將備份儲存於作業層。 作業層是本機資料存放區 (在租用戶作為快照集)。 您現在可以每天移動一個復原點,並使用 AKS 備份以 Blob 的方式將它儲存於保存庫層 (租用戶外)。 您也可以使用備份保存庫來管理備份。

安裝備份延伸模組並啟用受信任存取權之後,您可以根據備份原則設定叢集的排程備份。 您也可以將備份還原至原始叢集,或是位於相同訂用帳戶和區域中的替代叢集。 您可以在設定特定作業時,選擇特定命名空間或整個叢集作為備份和還原設定。

備份解決方案會針對部署於叢集的 AKS 資料來源,以及針對儲存於叢集永續性磁碟區的資料啟用備份作業,然後將備份儲存在 Blob 容器。 磁碟型永續性磁碟區會以磁碟快照集的方式,備份於快照集資源群組。 Blob 中的快照集和叢集狀態,會合併成儲存在稱為作業層之租用戶的復原點。 您也可以將作業層中的備份 (一天、一週、一個月或一年內的第一次成功備份) 轉換成 Blob,然後一天將它們移至保存庫 (租用戶外) 一次。

注意

目前,Azure 備份僅支援 CSI 驅動程式型 Azure 磁碟儲存體中的永續性磁碟區。 備份期間,解決方案會略過其他持續性磁碟區類型,例如 Azure 檔案共用和 Blob。 此外,如果永續性磁碟區小於或等於 1 TB,備份就有資格移至保存庫。

設定備份

  • 若要設定 AKS 叢集的備份,請先建立備份保存庫。 保存庫可以讓您合併檢視跨不同資料來源設定的備份。 AKS 備份同時支援作業層和保存庫層備份。

    注意

    • 備份保存庫和您想備份或還原的 AKS 叢集,必須位於相同的區域和訂用帳戶中。
    • 備份保存庫儲存體備援設定 (LRS/GRS) 只會套用至儲存於保存庫層的備份。 如果您想使用備份進行災害復原,請將儲存體備援設定為已啟用跨區域還原的 GRS。
  • AKS 備份會自動觸發排程的備份作業。 作業會將叢集資源複製到 Blob 容器,並根據備份頻率建立磁碟型永續性磁碟區的增量快照集。 備份會根據備份原則中定義的保留期間,保留於作業層和保存庫層,並在持續時間結束後刪除。

    注意

    您可以使用 AKS 備份為每個備份執行個體使用不同的備份設定,為單一 AKS 叢集建立多個備份執行個體。 不過,AKS 叢集的每個備份執行個體,都應該在不同的備份保存庫中建立,或在相同的備份保存庫使用不同的備份原則建立。

管理備份

AKS 叢集的備份設定完成時,會在備份保存庫建立備份執行個體。 您可以在 Azure 入口網站 AKS 執行個體的 [備份]區段檢視叢集的備份執行個體。 您可以透過對應的備份執行個體,對執行個體執行任何備份相關作業,例如起始還原、監視、停止保護等等。

AKS 備份也可以直接與備份中心整合,協助您集中管理所有 AKS 叢集的保護,以及其他獲得備份支援的工作負載。 備份中心是所有備份需求的單一檢視,例如監視作業以及備份和還原的狀態。 備份中心可協助您確保合規性和治理、分析備份使用量,以及執行重要作業來備份和還原資料。

AKS 備份使用受控識別存取其他 Azure 資源。 若要設定 AKS 叢集的備份,並從過去的備份還原,備份保存庫的受控識別需要在 AKS 叢集有一組權限,以及建立及管理快照集的快照集資源群組。 目前,AKS 叢集需要在快照集資源群組有一組權限。 此外,備份延伸模組會建立使用者身分識別,並指派一組權限來存取備份儲存於 Blob 的儲存體帳戶。 您可以使用 Azure 角色型存取控制 (Azure RBAC),授與對受控識別的權限。 受控識別是僅限搭配 Azure 資源使用的特殊類型的服務準則。 深入了解受控識別

從備份還原

您可以從復原點存在的任何時間點還原資料。 備份執行個體處於受保護狀態時,就會建立復原點,並可用來還原資料,直到備份原則保留資料為止。

Azure 備份可讓您選擇命名空間和其他篩選選項,還原備份的所有項目,或使用細控制項從備份選取特定項目。 此外,您可以在原始 AKS 叢集 (已備份的叢集) 或替代 AKS 叢集上執行還原。 您可以將儲存於作業和儲存庫層的備份,還原至相同和不同訂用帳戶中的叢集。 只有儲存於保存庫層的備份,可用來還原至不同區域中的叢集 (Azure 配對區域)。

若要還原儲存於保存庫層的備份,您必須提供備份資料解除凍結的暫存位置。 這個暫存位置包含資源群組和儲存體帳戶 (位於相同區域),以及作為還原目標叢集的訂用帳戶。 還原期間,解除凍結過程會建立特定資源 (Blob 容器、磁碟和磁碟快照集),然後在還原作業完成之後清除。

發生資源衝突時,適用於 AKS 的 Azure 備份目前在執行還原作業時支援下列兩個選項 (備份資源與目標 AKS 叢集中的資源同名)。 定義還原設定時,您可以選擇其中一個選項。

  1. 跳過:預設會選取這個選項。 例如,如果您已備份名為 pvc-azuredisk 的 PVC,而且您打算在具有相同名稱之 PVC 的目標叢集還原它,則備份延伸模組會略過還原備份的永續性磁碟區宣告 (PVC)。 在這種情況下,建議您從叢集刪除資源,然後執行還原作業,讓備份項目只能在叢集中使用,而且不會略過。

  2. 修補檔:這個選項允許修補目標叢集資源上備份資源的可變變數。 如果您想更新目標叢集中的複本數,可以選擇修補作為作業。

注意

如果資源已經存在,AKS 備份目前不會在目標叢集刪除及重新建立資源。 如果您嘗試還原原始位置中的永續性磁碟區,請刪除現有的永續性磁碟區,然後執行還原作業。

使用自訂勾點進行備份和還原

您可以使用自訂勾點擷取用於部署為容器化工作負載之資料庫的磁碟區應用程式一致快照集。

何謂自訂勾點?

您可以使用 AKS 備份,在備份和還原作業執行自訂勾點。 勾點是設定為在備份作業期間或還原之後,於容器下之 Pod 執行一或多個命令的命令。 您可以將這些勾點定義為自訂資源,並且部署在您想備份或還原的 AKS 叢集。 自訂資源部署於必要命名空間的 AKS 叢集時,您會提供詳細資料做為流程的輸入資料,以設定備份和還原。 備份延伸模組會執行 YAML 檔案中定義的勾點。

注意

勾點不會在容器上的殼層執行。

AKS 中的備份有兩種類型的勾點:

  • 備份勾點
  • 還原勾點

備份勾點

在備份勾點中,您可以設定命令,在任何自訂動作處理之前執行勾點 (勾點前),或在完成所有自訂動作之後,以及備份自訂動作所指定的任何其他專案之後執行勾點 (勾點後)。

例如,以下是使用備份勾點部署自訂資源的 YAML 範本:

apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: BackupHook
metadata:
  # BackupHook CR Name and Namespace
  name: bkphookname0
  namespace: default
spec:
  # BackupHook is a list of hooks to execute before and after backing up a resource.
  backupHook:
    # BackupHook Name. This is the name of the hook that will be executed during backup.
    # compulsory
  - name: hook1
    # Namespaces where this hook will be executed.
    includedNamespaces: 
    - hrweb
    excludedNamespaces:
    labelSelector:
    # PreHooks is a list of BackupResourceHooks to execute prior to backing up an item.
    preHooks:
      - exec:
          # Container is the container in the pod where the command should be executed.
          container: webcontainer
          # Command is the command and arguments to execute.
          command:
            - /bin/uname
            - -a
          # OnError specifies how Velero should behave if it encounters an error executing this hook  
          onError: Continue
          # Timeout is the amount of time to wait for the hook to complete before considering it failed.
          timeout: 10s
      - exec:
          command:
            - /bin/bash
            - -c
            - echo hello > hello.txt && echo goodbye > goodbye.txt
          container: webcontainer
          onError: Continue
    # PostHooks is a list of BackupResourceHooks to execute after backing up an item.
    postHooks:
      - exec:
          container: webcontainer
          command:
            - /bin/uname
            - -a
          onError: Continue
          timeout: 10s

還原勾點

在還原勾點指令碼中,會撰寫自訂命令或指令碼,以在還原之 AKS Pod 的容器中執行。

以下是使用還原勾點部署自訂資源的 YAML 範本:

apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
kind: RestoreHook
metadata:
  name: restorehookname0
  namespace: default
spec:
  # RestoreHook is a list of hooks to execute after restoring a resource.
  restoreHook:
    # Name is the name of this hook.
  - name: myhook-1  
    # Restored Namespaces where this hook will be executed.
    includedNamespaces: 
    excludedNamespaces:
    labelSelector:
    # PostHooks is a list of RestoreResourceHooks to execute during and after restoring a resource.
    postHooks:
      - exec:
          # Container is the container in the pod where the command should be executed.
          container: webcontainer
          # Command is the command and arguments to execute from within a container after a pod has been restored.
          command:
            - /bin/bash
            - -c
            - echo hello > hello.txt && echo goodbye > goodbye.txt
          # OnError specifies how Velero should behave if it encounters an error executing this hook
          # default value is Continue
          onError: Continue
          # Timeout is the amount of time to wait for the hook to complete before considering it failed.
          execTimeout: 30s
          # WaitTimeout defines the maximum amount of time Velero should wait for the container to be ready before attempting to run the command.
          waitTimeout: 5m

了解如何在 AKS 備份期間使用勾點

AKS 備份支援哪一個備份儲存層?

適用於 AKS 的 Azure 備份支援兩個儲存層作為備份資料存放區:

  • 作業層:AKS 叢集中安裝的備份延伸模組,會先透過 CSI 驅動程式擷取磁碟區快照集,並將叢集狀態儲存在您的租用戶中的 Blob 容器。 這個階層支援較低的 RPO,且兩個備份之間的持續時間下限為四小時。 此外,針對 Azure 磁碟型磁碟區,作業層支援更快速的還原。

  • 保存庫標準層 (預覽):為了以低於快照集的成本將備份資料儲存更長的時間,AKS 備份支援保存庫標準資料存放區。 根據備份原則中設定的保留規則,(一天、一週、一個月或一年) 第一次成功備份會移至租用戶外的 Blob 容器。 這個資料存放區不僅允許較長的保留期,還提供勒索軟體保護。 您也可以在備份保存庫啟用異地備援跨區域還原,將儲存在保存庫的備份移至另一個區域 (Azure 配對區域) 以進行復原。

注意

您可以定義保留規則,透過備份原則將備份資料儲存於保存庫標準資料存放區。 每天只有一個排程復原移至保存庫層。 不過,您可以根據選取的規則,將任意數目的隨選備份移至保存庫。

了解定價

您會產生以下費用:

  • 受保護的執行個體費用:適用於 AKS 的 Azure 備份每月會收取每個命名空間受保護執行個體的費用。 設定 AKS 叢集的備份時,會建立受保護的執行個體。 每個執行個體都有特定數目的命名空間,這些命名空間為根據備份設定定義的方式備份。 如需 AKS 備份價格的詳細資訊,請參閱雲端備份價格,並選取 Azure Kubernetes Service 作為工作負載

  • 快照集費用:適用於 AKS 的 Azure 備份會擷取儲存在 Azure 訂用帳戶中資源群組的快照集,保護磁碟型永續性磁碟區。 這些快照集會產生快照集儲存體費用。 快照集不會複製到備份保存庫,因此不會產生備份儲存體費用。 如需快照集價格的詳細資訊,請參閱受控磁碟定價

後續步驟