本文說明如何使用 Azure PowerShell 設定及備份 Azure Kubernetes Service (AKS)。
Azure 備份現在可讓您使用必須安裝在叢集中的備份擴充功能來備份 AKS 叢集 (叢集資源與連結至叢集的永續性磁碟區)。 備份保存庫會透過此備份擴充功能與叢集通訊,以執行備份和還原作業。
先決條件
開始備份 AKS 叢集之前,請務必檢閱下列必要條件:
目前,AKS 備份僅支援以 Azure 磁碟為基礎的永續性磁碟區 (由 CSI 驅動程式啟用)。 備份只會儲存在作業資料存放區 (位於您的租用戶中),而不會移動至保存庫。 備份保存庫與 AKS 叢集應位於相同區域。
AKS 備份會使用 Blob 容器與資源群組來儲存備份。 AKS 叢集資源儲存於 Blob 容器中,永續性磁碟區快照集則儲存於資源群組中。 AKS 叢集與儲存位置必須位於相同區域。 了解如何建立 Blob 容器。
目前,AKS 備份支援每日備份一次。 此外也支援每日更頻繁的備份 (每 4、8 和 12 小時一次)。 此解決方案可讓您保留資料以供還原,最長可達 360 天。 了解如何建立備份原則。
起始備份設定與還原作業之前,請確認
Microsoft.KubernetesConfiguration、Microsoft.DataProtection及Microsoft.ContainerService已針對您的訂用帳戶完成註冊。請確定已符合所有必要條件,再起始 AKS 備份的備份或還原作業。
如需有關支援案例、限制及可用性的詳細資訊,請參閱支援矩陣。
建立用於 AKS 備份的備份保存庫
備份保存庫是 Azure 中的管理實體,可儲存 Azure 備份所支援之各種較新工作負載 (例如適用於 PostgreSQL 伺服器的 Azure 資料庫與 Azure 磁碟) 的備份資料。 備份保存庫可讓您輕鬆組織備份資料,同時大幅減輕管理負擔。 其以 Azure Resource Manager 模型為基礎,並提供增強功能來協助保護備份資料。 建立備份保存庫之前,請選擇保存庫中資料的儲存體備援,然後使用該儲存體備援與位置建立備份保存庫。
在這裡,我們會在資源群組 testBkpVaultRG 下的美國西部區域中,建立備份保存庫 TestBkpVault。 使用 New-AzDataProtectionBackupVault Cmdlet 建立備份保存庫。 進一步了解如何建立備份保存庫。
附註
雖然所選保存庫可能有全域備援設定,但 AKS 的備份目前僅支援作業層。 所有備份皆會儲存在您訂用帳戶中與 AKS 叢集相同的區域,且不會複製到備份保存庫儲存體。
若要定義備份保存庫的儲存體設定,請執行下列 Cmdlet:
附註
建立的保存庫僅支援本地備援與作業資料存放區。
$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant -DataStoreType OperationalStore若要根據先前所述的詳細資料建立備份保存庫,請執行下列 Cmdlet:
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting $TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
保存庫建立完成後,請建立備份原則來保護 AKS 叢集。
建立 AKS 叢集的備份政策
Azure 備份可讓您建立用來保護 AKS 叢集的備份原則,包括每日備份或每天進行多次備份。
若要建立 AKS 叢集的備份原則,請執行下列 Cmdlet:
使用 Cmdlet
Get-AzDataProtectionPolicyTemplate擷取原則範本,並檢查 AKS 備份的備份原則內部元件。 此命令會傳回指定資料來源類型的預設原則範本。 使用此原則範本建立新原則。$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureKubernetesService原則範本包含觸發條件 (決定觸發備份作業的因素) 與生命週期 (決定何時刪除、複製或移動備份)。 在 AKS 備份中,觸發程序的預設值為排程執行,每 4 小時 (PT4H) 觸發一次,且每個備份的保留期為 7 天。
$policyDefn.PolicyRule[0]. Trigger | fl ObjectType: ScheduleBasedTriggerContext ScheduleRepeatingTimeInterval: {R/2023-04-05T13:00:00+00:00/PT4H} TaggingCriterion: {Default} $policyDefn.PolicyRule[1]. Lifecycle | fl DeleteAfterDuration: P7D DeleteAfterObjectType: AbsoluteDeleteOption SourceDataStoreObjectType : DataStoreInfoBase SourceDataStoreType: OperationalStore TargetDataStoreCopySetting:針對每日備份頻率,請指定應進行備份的當日時間。
重要事項
當日時間表示備份開始時間,而非備份完成時間。 完成備份作業所需的時間取決於各種因素,包括永續性磁碟區的數量與大小,以及連續備份之間的變換率。
AKS 備份提供每天進行多次備份。 備份會平均分配於全天;如果您需要更頻繁的備份,可選擇 [每小時備份頻率],以每隔 4、6、8 或 12 小時進行一次備份。 備份會根據您選取的 [時間間隔] 進行排程。 例如,若您選取 [每 4 小時],則大約每 4 小時就會備份一次。
若您想要編輯每小時頻率或保留期間,請使用
Edit-AzDataProtectionPolicyTriggerClientObject和/或Edit-AzDataProtectionPolicyRetentionRuleClientObjectCmdlet。 原則物件具備所有必要的值之後,請使用New-AzDataProtectionBackupPolicyCmdlet 從原則物件開始建立新的原則。New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name aksBkpPolicy -Policy $policyDefn $aksBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "aksBkpPolicy"
準備 AKS 叢集以進行備份
保存庫和原則建立完成後,您必須滿足下列必要條件,讓 AKS 叢集準備好進行備份:
建立儲存體帳戶與 Blob 容器
AKS 備份會將 Kubernetes 資源儲存於 Blob 容器中做為備份。 若要讓 AKS 叢集準備好進行備份,您需要在叢集中安裝擴充功能。 此擴充功能需要儲存體帳戶與 Blob 容器做為輸入。
若要建立新的儲存體帳戶與 Blob 容器,請參閱這些步驟。
附註
- 儲存體帳戶與 AKS 叢集應位於相同的區域與訂用帳戶中。
- Blob 容器不應包含任何先前建立的檔案系統 (AKS 備份所建立者除外)。
- 若您的來源或目標 AKS 叢集位於私人虛擬網路中,則需建立私人端點以連接儲存體帳戶與 AKS 叢集。
安裝備份擴充功能
必須在 AKS 叢集中安裝備份擴充功能,才能執行任何備份與還原作業。 備份擴充功能會在叢集中建立命名空間
dataprotection-microsoft,並使用該命名空間部署其資源。 擴充功能需要儲存體帳戶與 Blob 容器做為安裝的輸入。 了解擴充功能安裝命令。在擴充功能安裝期間,系統會在 AKS 叢集的節點集區資源群組中建立使用者身分識別。 為了讓擴充功能存取儲存體帳戶,您需要為此身分識別提供儲存體帳戶參與者角色。 若要指派所需角色,請執行這些命令
啟用信任存取
為了讓備份保存庫連接至 AKS 叢集,您必須啟用「信任存取」,讓備份保存庫直接連接至 AKS 叢集。 了解如何啟用信任存取。
附註
備份擴充功能安裝與信任存取啟用的命令僅在 Azure CLI 中提供。
為 AKS 叢集設定備份
備份保存庫與備份原則建立完成,且 AKS 叢集處於準備好進行備份的狀態後,您現在可以開始備份 AKS 叢集。
主要實體
要保護的 AKS 叢集
擷取要保護之 AKS 叢集的 Azure Resource Manager 識別碼。 這會做為叢集的識別碼。 此範例中使用位於不同訂用帳戶中的資源群組 aksrg 下,名為 PSTestAKSCluster 的 AKS 叢集:
$sourceClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/aksrg /providers/Microsoft.ContainerService/managedClusters/ PSTestAKSCluster "快照資源群組
永續性磁碟區快照集會儲存在您訂用帳戶中的資源群組內。 建議您建立專用的資源群組做為快照資料存放區,以供 Azure 備份服務使用。 專用資源群組允許限制資源群組的存取權限,讓備份資料更安全且易於管理。 將資源群組的 Azure Resource Manager 識別碼儲存至您想要儲存永續性磁碟區快照集的位置。
$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/snapshotrg"
準備要求
備份的設定會分為兩個步驟執行:
使用
New-AzDataProtectionBackupConfigurationClientObjectCmdlet 準備備份設定,以定義要備份哪些叢集資源。 在下列範例中,設定定義如下:以key-value pair x=y做為標籤,備份目前與未來命名空間下的所有叢集資源。 此外,系統也會備份所有叢集範圍資源和永續性磁碟區。 下列命名空間會從備份設定中略過,且未設定為進行備份:kube-system、kube-node-lease、kube-public。$backupConfig = New-AzDataProtectionBackupConfigurationClientObject -SnapshotVolume $true -IncludeClusterScopeResource $true -DatasourceType AzureKubernetesService -LabelSelector "env=prod"使用
Initialize-AzDataProtectionBackupInstanceCmdlet 搭配相關的保存庫、原則、AKS 叢集、備份設定和快照集資源群組,準備相關要求。$backupInstance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureKubernetesService -DatasourceLocation $dataSourceLocation -PolicyId $ aksBkpPol.Id -DatasourceId $sourceClusterId -SnapshotResourceGroupId $ snapshotrg -FriendlyName $friendlyName -BackupConfiguration $backupConfig
指派必要權限並進行驗證
若要為 AKS 叢集保護指派必要的權限並進行驗證,請執行下列 Cmdlet:
備妥要求後,您需要透過 Azure 角色型存取控制 (Azure RBAC),將必要權限指派給保存庫 (以保存庫受控系統識別代表) 與 AKS 叢集。 您可以使用
Set-AzDataProtectionMSIPermissionCmdlet 執行此作業。 備份保存庫會使用受控識別存取其他 Azure 資源。 若要設定 AKS 叢集的備份,備份保存庫的受控識別必須具備 AKS 叢集以及建立及管理快照集之資源群組的一組權限。 此外,AKS 叢集必須具備快照資源群組的權限。附註
目前,備份僅支援系統指派的受控識別 (包括備份保存庫與 AKS 叢集)。 系統指派的受控識別限制為每個資源一個,並與此資源的生命週期繫結。 您可以使用 Azure RBAC 將權限授與受控識別。 受控識別是一種特殊類型的服務主體,僅能與 Azure 資源搭配使用。 深入了解受控識別。
Set-AzDataProtectionMSIPermission -BackupInstance $backupInstance -VaultResourceGroup $rgName -VaultName $vaultName -PermissionsScope "ResourceGroup"指派權限後,請測試所建立執行個體的整備程度。
test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstance $backupInstance.Property驗證成功後,請使用
New-AzDataProtectionBackupInstanceCmdlet 提交保護 AKS 叢集的要求。New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $backupInstance
為 AKS 叢集執行按需備份
若要觸發隨選備份,請執行下列 Cmdlet:
執行
Get-AzDataProtectionBackupInstanceCmdlet 擷取要觸發備份的相關備份執行個體。$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"在觸發備份時指定保留規則。 若要檢視原則中的保留規則,請移至原則物件中的保留規則。 下列範例中會顯示名稱為 default 的規則,我們將使用該規則進行隨選備份。
$policyDefn.PolicyRule | fl BackupParameter: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams BackupParameterObjectType: AzureBackupParams DataStoreObjectType: DataStoreInfoBase DataStoreType: OperationalStore Name: BackupHourly ObjectType: AzureBackupRule Trigger: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext TriggerObjectType: ScheduleBasedTriggerContext IsDefault: True Lifecycle: {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle} Name: Default ObjectType: AzureRetentionRule使用
Backup-AzDataProtectionBackupInstanceAdhocCmdlet 觸發隨選備份。$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
追蹤 AKS 備份作業
使用 Get-AzDataProtectionJob Cmdlet 追蹤所有作業。 您可以列出所有作業,並擷取特定作業的詳細資料。 您也可以使用 Az.ResourceGraph Cmdlet 追蹤所有備份保存庫的所有作業。 使用 Search-AzDataProtectionJobInAzGraph Cmdlet 從任何備份保存庫取得相關作業詳細資料。
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureKubernetesService -Operation OnDemandBackup