使用 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.KubernetesConfiguration
、Microsoft.DataProtection
和Microsoft.ContainerService
已註冊您的訂用帳戶。 - 在起始 AKS 備份的備份或還原作業之前,請務必先完成 所有必要條件 。
如需支援的案例、限制和可用性的詳細資訊,請參閱支援矩陣。
建立備份保存庫
備份保存庫是一種管理實體,可儲存一段時間內所處理的復原點。 備份保存庫也提供介面來執行備份作業。 作業包括製作隨選備份、執行還原,以及建立備份原則。 AKS 備份需要備份保存庫和 AKS 叢集位於相同的區域中。 了解如何建立備份保存庫。
注意
備份保存庫是用來備份新支援資料來源的新資源。 備份保存庫不同於復原服務保存庫。
如果您想要使用 Azure 備份 來保護 AKS 叢集免於任何區域性中斷,您可以啟用跨區域還原。 若要啟用跨區域還原,您需要:
在保存庫建立期間,將備份記憶體備援參數設定為異地備援。 設定保存庫的備援之後,即無法將其停用。
將 [保存庫屬性] 底下的 [跨區域還原] 參數設定為 [已啟用]。 啟用此參數之後,您就無法停用。
使用備份原則建立備份執行個體,並將保留期間設定為保存庫標準資料存放區。 儲存在此資料存放區中的每個復原點都會位於次要區域中。
建立備份原則
設定備份之前,您必須建立備份原則,以定義備份的頻率和備份的保留期間。
若要建立備份原則:
移至您建立的備份保存庫,然後選取 [管理>備份原則>新增]。
輸入備份原則的名稱。
針對 [數據源類型],選取 [Kubernetes Services]。
在 [ 排程 + 保留] 索引標籤上 ,定義備份排程。
- 備份頻率:選取 [備份頻率] (每小時或每天),然後選擇備份的 [保留期間]。
- 保留設定:新的備份原則 預設會定義默認 規則。 您可以編輯此規則,且無法將其刪除。 默認規則會定義所建立之所有作業層備份的保留持續時間。 您也可以建立額外的保留規則,以儲存每日或每週所建立較長持續時間的備份。
您也可以建立額外的保留規則,以儲存每日或每周所花費的時間較長的備份。
注意
- 除了當天的第一次成功備份之外,您還可以定義第一次週、月和年成功備份的保留規則。 就優先順序而言,順序是年、月、週和日。
- 您可以在儲存在保存庫層的次要區域 (Azure 配對區域) 中複製備份,以在主要區域無法使用時,用來將 AKS 叢集還原到次要區域。 若要選擇此功能,請使用已啟用 [跨區域還原] 的 [異地備援保存庫]。
設定備份頻率和保留設定時,請選取 [下一步]。
在 [檢閱 + 建立] 索引標籤上檢閱資訊,然後選取 [建立]。
安裝備份延伸模組並設定備份
您可以使用 AKS 備份來備份整個叢集或部署在叢集中的特定叢集資源。 您也可以根據已部署應用程式的排程和保留需求或安全性需求,多次保護叢集。
注意
若要為相同的 AKS 叢集設定多個備份執行個體:
- 在相同的備份保存庫中設定備份,但使用不同的備份原則。
- 在不同的備份保存庫中設定備份。
安裝備份擴充功能
若要設定 AKS 叢集的備份:
在 Azure 入口網站中,移至您想要備份的 AKS 叢集。
從服務功能表中的 [設定] 底下,選取 [備份]。
若要準備 AKS 叢集以進行備份或還原,請選取 [安裝延伸模組] 以在叢集中安裝備份延伸模組。
提供儲存體帳戶和 Blob 容器作為輸入。
您的 AKS 叢集備份會儲存在此 Blob 容器中。 儲存體帳戶必須與叢集位於相同的區域和訂用帳戶中。
選取 [下一步]。 檢閱延伸模組安裝詳細資料,然後選取 [建立]。
延伸模組安裝隨即開始。
設定備份
成功安裝備份擴充功能時,請選取 [ 設定備份]。
選取您稍早建立的備份保存庫。 備份保存庫應該已啟用信任存取,才能備份 AKS 叢集。 若要啟用 [信任存取],請選取 [授與權限]。 如果已啟用,請選取 [下一步]。
在 [ 備份原則] 索引卷標上,選取備份原則,以定義備份的排程及其保留期間,然後選取 [ 下一步]。
在 [資料來源] 索引標籤上,選取 [新增/編輯] 以定義備份執行個體設定。
在 [ 選取要備份 的資源] 窗格中,定義您要備份的叢集資源。
深入了解備份設定。
針對 [快照集資源群組],選取要用來儲存永續性磁碟區的資源群組(Azure 磁碟記憶體)快照集,然後選取 [ 驗證]。
驗證完成時,如果未將必要的角色指派給快照集資源群組中的保存庫,則會出現錯誤:
若要解決錯誤,請在 [數據源名稱] 底下,選取數據源的複選框,然後選取 [指派遺漏的角色]。
角色指派完成時,選取 [下一步>設定備份]。
備份設定
適用於 AKS 的 Azure 備份可讓您在想要備份的 AKS 叢集內定義應用程式界限。 您可以使用備份設定可用的篩選,選擇要備份以及要執行自訂勾點的資源。 定義的備份設定是由 [備份執行個體名稱] 的值所參考。 下列篩選可用來定義您的應用程式界限:
選取 [ 選取要備份的命名空間]。 您可以選取 [全部 ] 來備份叢集中所有現有和未來的命名空間,也可以選取特定的命名空間進行備份。
從備份組態略過下列命名空間:
kube-system
、kube-node-lease
和kube-public
。展開 [其他資源設定],查看可用來選擇要備份之叢集資源的篩選條件。 您可以根據下列類別選擇備份資源:
- 標籤:您可以使用指派給資源類型的標籤篩選 AKS 資源。 以索引鍵/值組的形式輸入標籤。 您可以使用邏輯來結合多個標籤
AND
。 例如,如果您輸入標籤env=prod;tier!=web
,則此流程選取之資源具備有env
索引鍵和prod
值的標籤,並且具備有值並非web
之tier
索引鍵的標籤。 - API 群組:提供 AKS API 群組和種類也可包含資源。 例如,您可以為備份 AKS 資源,例如部署,進行選擇。 您可以在這裡存取 Kubernetes 已定義 API 群組的清單。
- 其他選項:您可以啟用或停用叢集範圍資源、永續性磁碟區和秘密的備份。 依預設會啟用叢集範圍資源和永續性磁碟區。
- 標籤:您可以使用指派給資源類型的標籤篩選 AKS 資源。 以索引鍵/值組的形式輸入標籤。 您可以使用邏輯來結合多個標籤
注意
您應該將標籤新增至已部署和備份的每個 YAML 檔案。 這包括命名空間範圍的資源,例如永續性磁碟區宣告,以及叢集範圍的資源,例如永續性磁碟區。
在 AKS 備份期間使用勾點
本節說明如何使用備份勾點,建立已部署 MySQL 之 AKS 叢集的應用程式一致快照集 (包含 MySQL 執行個體的永續性磁碟區)。
您可以使用 AKS 備份中的自訂勾點來完成磁碟區的應用程式一致快照集。 磁碟區會用於部署為容器化工作負載的資料庫。
藉由使用備份勾點,您可以定義命令來凍結和取消凍結 MySQL Pod,以便建立磁碟區的應用程式快照集。 備份延伸模組接著會協調在勾點中執行命令的步驟,並建立磁碟區快照集。
執行下列動作可建立已部署 MySQL 之磁碟區的應用程式一致快照集:
- 執行 MySQL 的 Pod 已凍結,因此資料庫上不會執行任何新交易。
- 磁碟區的快照集會建立為備份。
- 執行 MySQL 的 Pod 不會凍結,因此可以在資料庫上再次完成交易。
若要在備份設定流程中啟用備份勾點,以備份 MySQL:
使用命令撰寫備份勾點的自訂資源,以凍結和取消凍結 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
設定備份之前,您必須在 AKS 叢集中部署備份勾點自訂資源。
若要部署指令碼,請執行下列命令:
kubectl apply -f mysqlbackuphook.yaml
部署完成時,您可以 設定 AKS 叢集的備份。
注意
在備份設定過程中,您必須提供自訂資源名稱和資源部署為輸入的命名空間。