共用方式為


使用 Azure 備份來備份 Azure Kubernetes Service

本文描述如何設定和備份 Azure Kubernetes Service (AKS)。

您可以使用 Azure 備份來備份 AKS 叢集 (叢集資源和連結至叢集的永續性磁碟區),方法是使用必須安裝在叢集中的備份延伸模組。 備份保存庫會透過備份延伸模組與叢集通訊,以執行備份和還原作業。

必要條件

設定 AKS 叢集備份之前,請務必確定事項:

  • AKS 備份目前僅支援由 CSI 驅動程式啟用的 Azure 磁碟記憶體型永續性磁碟區。 備份只會儲存在操作資料存放區中 (備份資料會儲存在您的租用戶中,且不會移至保存庫)。 備份保存庫和 AKS 叢集必須位於相同的區域中。
  • AKS 備份會使用 Blob 容器和資源群組來儲存備份。 Blob 容器會保存 AKS 叢集資源。 永續性磁碟區快照集會儲存在資源群組中。 AKS 叢集和儲存位置必須位於相同的區域中。 了解如何建立 Blob 容器
  • AKS 備份目前支援一天一次的備份。 它也支援每天更頻繁的備份 (以 4 小時、8 小時和 12 小時間隔為單位)。 此解決方案可讓您保留資料以供還原,最多可達 360 天。 了解如何建立備份原則
  • 您必須 安裝備份延伸模組 ,以設定 AKS 叢集的備份和還原作業。 深入了解備份延伸模組
  • 在起始備份組態和還原作業之前,請確定您有 Microsoft.KubernetesConfigurationMicrosoft.DataProtectionMicrosoft.ContainerService 已註冊您的訂用帳戶。
  • 在起始 AKS 備份的備份或還原作業之前,請務必先完成 所有必要條件

如需支援的案例、限制和可用性的詳細資訊,請參閱支援矩陣

建立備份保存庫

備份保存庫是一種管理實體,可儲存一段時間內所處理的復原點。 備份保存庫也提供介面來執行備份作業。 作業包括製作隨選備份、執行還原,以及建立備份原則。 AKS 備份需要備份保存庫和 AKS 叢集位於相同的區域中。 了解如何建立備份保存庫

注意

備份保存庫是用來備份新支援資料來源的新資源。 備份保存庫不同於復原服務保存庫。

如果您想要使用 Azure 備份 來保護 AKS 叢集免於任何區域性中斷,您可以啟用跨區域還原。 若要啟用跨區域還原,您需要:

  1. 在保存庫建立期間,將備份記憶體備援參數設定為異地備援。 設定保存庫的備援之後,即無法將其停用。

    顯示如何啟用備份儲存體備援參數的螢幕擷取畫面。

  2. 將 [保存庫屬性] 底下的 [跨區域還原] 參數設定為 [已啟用]。 啟用此參數之後,您就無法停用。

    顯示如何啟用跨區域還原參數的螢幕擷取畫面。

  3. 使用備份原則建立備份執行個體,並將保留期間設定為保存庫標準資料存放區。 儲存在此資料存放區中的每個復原點都會位於次要區域中。

建立備份原則

設定備份之前,您必須建立備份原則,以定義備份的頻率和備份的保留期間。

若要建立備份原則:

  1. 移至您建立的備份保存庫,然後選取 [管理>備份原則>新增]。

  2. 輸入備份原則的名稱。

  3. 針對 [數據源類型],選取 [Kubernetes Services]。

  4. 在 [ 排程 + 保留] 索引標籤上 ,定義備份排程

    • 備份頻率:選取 [備份頻率] (每小時或每天),然後選擇備份的 [保留期間]
    • 保留設定:新的備份原則 預設會定義默認 規則。 您可以編輯此規則,且無法將其刪除。 默認規則會定義所建立之所有作業層備份的保留持續時間。 您也可以建立額外的保留規則,以儲存每日或每週所建立較長持續時間的備份。

    顯示保留設定的螢幕快照。

    您也可以建立額外的保留規則,以儲存每日或每周所花費的時間較長的備份。

    注意

    • 除了當天的第一次成功備份之外,您還可以定義第一次週、月和年成功備份的保留規則。 就優先順序而言,順序是年、月、週和日。
    • 您可以在儲存在保存庫層次要區域 (Azure 配對區域) 中複製備份,以在主要區域無法使用時,用來將 AKS 叢集還原到次要區域。 若要選擇此功能,請使用已啟用 [跨區域還原] 的 [異地備援保存庫]
  5. 設定備份頻率和保留設定時,請選取 [下一步]

  6. 在 [檢閱 + 建立] 索引標籤上檢閱資訊,然後選取 [建立]。

安裝備份延伸模組並設定備份

您可以使用 AKS 備份來備份整個叢集或部署在叢集中的特定叢集資源。 您也可以根據已部署應用程式的排程和保留需求或安全性需求,多次保護叢集。

注意

若要為相同的 AKS 叢集設定多個備份執行個體:

  • 在相同的備份保存庫中設定備份,但使用不同的備份原則。
  • 在不同的備份保存庫中設定備份。

安裝備份擴充功能

若要設定 AKS 叢集的備份:

  1. 在 Azure 入口網站中,移至您想要備份的 AKS 叢集。

  2. 從服務功能表中的 [設定] 底下,選取 [備份]。

  3. 若要準備 AKS 叢集以進行備份或還原,請選取 [安裝延伸模組] 以在叢集中安裝備份延伸模組。

  4. 提供儲存體帳戶和 Blob 容器作為輸入。

    您的 AKS 叢集備份會儲存在此 Blob 容器中。 儲存體帳戶必須與叢集位於相同的區域和訂用帳戶中。

    顯示如何新增備份儲存體和 Blob 詳細資料的螢幕擷取畫面。

  5. 選取 [下一步]。 檢閱延伸模組安裝詳細資料,然後選取 [建立]

    延伸模組安裝隨即開始。

設定備份

  1. 成功安裝備份擴充功能時,請選取 [ 設定備份]。

  2. 選取您稍早建立的備份保存庫。 備份保存庫應該已啟用信任存取,才能備份 AKS 叢集。 若要啟用 [信任存取],請選取 [授與權限]。 如果已啟用,請選取 [下一步]

  3. 在 [ 備份原則] 索引卷標上,選取備份原則,以定義備份的排程及其保留期間,然後選取 [ 下一步]。

  4. 在 [資料來源] 索引標籤上,選取 [新增/編輯] 以定義備份執行個體設定。

  5. 在 [ 選取要備份 的資源] 窗格中,定義您要備份的叢集資源。

    深入了解備份設定

  6. 針對 [快照集資源群組],選取要用來儲存永續性磁碟區的資源群組(Azure 磁碟記憶體)快照集,然後選取 [ 驗證]。

    驗證完成時,如果未將必要的角色指派給快照集資源群組中的保存庫,則會出現錯誤:

    顯示未指派必要權限時驗證錯誤的螢幕擷取畫面。

    若要解決錯誤,請在 [數據源名稱] 底下,選取數據源的複選框,然後選取 [指派遺漏的角色]。

  7. 角色指派完成時,選取 [下一步>設定備份]。

備份設定

適用於 AKS 的 Azure 備份可讓您在想要備份的 AKS 叢集內定義應用程式界限。 您可以使用備份設定可用的篩選,選擇要備份以及要執行自訂勾點的資源。 定義的備份設定是由 [備份執行個體名稱] 的值所參考。 下列篩選可用來定義您的應用程式界限:

  1. 選取 [ 選取要備份的命名空間]。 您可以選取 [全部 ] 來備份叢集中所有現有和未來的命名空間,也可以選取特定的命名空間進行備份。

    從備份組態略過下列命名空間: kube-systemkube-node-leasekube-public

    顯示如何選取要包含在備份中的命名空間的螢幕擷取畫面。

  2. 展開 [其他資源設定],查看可用來選擇要備份之叢集資源的篩選條件。 您可以根據下列類別選擇備份資源:

    • 標籤:您可以使用指派給資源類型的標籤篩選 AKS 資源。 以索引鍵/值組的形式輸入標籤。 您可以使用邏輯來結合多個標籤 AND 。 例如,如果您輸入標籤 env=prod;tier!=web,則此流程選取之資源具備有 env 索引鍵和 prod 值的標籤,並且具備有值並非 webtier 索引鍵的標籤。
    • API 群組:提供 AKS API 群組和種類也可包含資源。 例如,您可以為備份 AKS 資源,例如部署,進行選擇。 您可以在這裡存取 Kubernetes 已定義 API 群組的清單。
    • 其他選項:您可以啟用或停用叢集範圍資源、永續性磁碟區和秘密的備份。 依預設會啟用叢集範圍資源和永續性磁碟區。

注意

您應該將標籤新增至已部署和備份的每個 YAML 檔案。 這包括命名空間範圍的資源,例如永續性磁碟區宣告,以及叢集範圍的資源,例如永續性磁碟區。

在 AKS 備份期間使用勾點

本節說明如何使用備份勾點,建立已部署 MySQL 之 AKS 叢集的應用程式一致快照集 (包含 MySQL 執行個體的永續性磁碟區)。

您可以使用 AKS 備份中的自訂勾點來完成磁碟區的應用程式一致快照集。 磁碟區會用於部署為容器化工作負載的資料庫。

藉由使用備份勾點,您可以定義命令來凍結和取消凍結 MySQL Pod,以便建立磁碟區的應用程式快照集。 備份延伸模組接著會協調在勾點中執行命令的步驟,並建立磁碟區快照集。

執行下列動作可建立已部署 MySQL 之磁碟區的應用程式一致快照集:

  1. 執行 MySQL 的 Pod 已凍結,因此資料庫上不會執行任何新交易。
  2. 磁碟區的快照集會建立為備份。
  3. 執行 MySQL 的 Pod 不會凍結,因此可以在資料庫上再次完成交易。

若要在備份設定流程中啟用備份勾點,以備份 MySQL:

  1. 使用命令撰寫備份勾點的自訂資源,以凍結和取消凍結 PostgreSQL Pod。

    您也可以使用下列範例 YAML 指令碼 postgresbackuphook.yaml,其中包含預先定義的命令:

    apiVersion: clusterbackup.dataprotection.microsoft.com/v1alpha1
    kind: BackupHook
    metadata:
    # BackupHook CR Name and Namespace
    name: bkphookname0
    namespace: default
    spec:
    # 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:
          command:
          - /sbin/fsfreeze
          - --freeze
          - /var/lib/postgresql/data
          container: webcontainer
          onError: Continue
    # PostHooks is a list of BackupResourceHooks to execute after backing up an item.
    postHooks:
       - exec:
          container: webcontainer
          command:
             - /sbin/fsfreeze
             - --unfreeze
          onError: Fail
          timeout: 10s
    
    
    
  2. 設定備份之前,您必須在 AKS 叢集中部署備份勾點自訂資源。

    若要部署指令碼,請執行下列命令:

    kubectl apply -f mysqlbackuphook.yaml
    
    
  3. 部署完成時,您可以 設定 AKS 叢集的備份。

    注意

    在備份設定過程中,您必須提供自訂資源名稱和資源部署為輸入的命名空間。

下一步