共用方式為


使用 PowerShell 備份 Azure Kubernetes Service

本文說明如何使用 Azure PowerShell 來設定及備份 Azure Kubernetes Service (AKS)。

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

在您開始使用 Intune 之前

開始備份 AKS 叢集之前,請確定您檢閱下列必要條件:

  • 目前,AKS 備份僅支援以 Azure 磁碟為基礎的永續性磁碟區 (由 CSI 驅動程式啟用)。 備份只會儲存在作業資料存放區中 (在您的租用戶中),且不會移至保存庫。 備份保存庫和 AKS 叢集應該位於相同的區域中。

  • AKS 備份會使用 Blob 容器和資源群組來儲存備份。 Blob 容器有儲存在其中的 AKS 叢集資源,而永續性磁碟區快照集會儲存在資源群組中。 AKS 叢集和儲存位置必須位於相同的區域中。 了解如何建立 Blob 容器

  • 目前,AKS 備份支援一天一次的備份。 它也支援每天更頻繁的備份 (每 4812 小時間隔一次)。 此解決方案可讓您保留資料以供還原,最多可達 360 天。 了解如何建立備份原則

  • 您必須安裝備份延伸模組,才能在 AKS 叢集上設定備份和還原作業。 深入了解備份延伸模組

  • 在起始備份組態和還原作業之前,請確定 已Microsoft.KubernetesConfiguration為您的訂用帳戶註冊 、 Microsoft.DataProtectionMicrosoft.ContainerService 和 。

  • 請務必先執行所有必要條件,再起始 AKS 備份的備份或還原作業。

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

建立備份保存庫

備份保存庫是 Azure 中的管理實體,可儲存 Azure 備份所支援各種較新工作負載的備份資料,例如適用於 PostgreSQL 的 Azure 資料庫伺服器和 Azure 磁碟。 保存庫可讓您輕鬆組織備份資料,同時可減輕管理負擔。 其會以 Azure Resource Manager 模型為基礎,可提供增強功能來協助保護備份資料。 建立備份保存庫之前,請選擇保存庫中資料的儲存體備援,然後使用該儲存體備援和位置建立備份保存庫。

在這裡,我們會在資源群組 testBkpVaultRG 下,在美國西部區域中建立備份保存庫 TestBkpVault。 使用 New-AzDataProtectionBackupVault Cmdlet 來建立備份保存庫。 深入了解建立備份保存庫

注意

雖然選取的保存庫可能有全域備援設定,但 AKS 的備份目前僅支援作業層。 所有備份都會儲存在訂用帳戶中與 AKS 叢集相同的區域中,且不會複製到備份保存庫儲存體。

  1. 若要定義備份儲存庫的儲存體設定,請執行下列 Cmdlet:

    注意

    保存庫只能使用本機備援和操作資料存放區支援來建立。

    $storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant -DataStoreType OperationalStore
    
  2. 若要根據先前所述的詳細資料來建立備份保存庫,請執行下列 Cmdlet:

    New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
    $TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
    

保存庫建立完成後,請建立備份原則來保護 AKS 叢集。

建立備份原則

Azure 備份 可讓您使用 建立 AKS 叢集保護的備份原則每日備份每天多次備份。

若要建立 AKS 叢集的備份原則,請執行下列 Cmdlet:

  1. 使用 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:
    
  2. 針對每日 備份頻率,指定 應該進行備份的一天 時間。

    重要

    一天中的時間表示備份開始時間,而不是備份完成的時間。 完成備份作業所需的時間取決於各種因素,包括永續性磁碟區的數目與大小,及連續備份之間的流失率。

    AKS 的備份提供每天多個備份。 如果您需要更頻繁的備份,您可以選擇 [每小時備份頻率],以每隔 46812 小時的間隔進行備份,而備份會平均分散到一天之中。 備份會根據您所選取的 [時間間隔] 進行排程。 例如,如果您選取 [每 4 小時],則大約每 4 小時就會備份一次。

  3. 如果您想要編輯每小時頻率或保留期間,請使用 Edit-AzDataProtectionPolicyTriggerClientObject 和/或 Edit-AzDataProtectionPolicyRetentionRuleClientObject Cmdlet。 原則物件具有所有必要的值之後,請使用 New-AzDataProtectionBackupPolicy Cmdlet 從原則物件開始建立新的原則。

    New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name aksBkpPolicy -Policy $policyDefn
    
    $aksBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "aksBkpPolicy"
    

準備 AKS 叢集以進行備份

保存庫和原則建立完成後,您必須執行下列必要條件,讓 AKS 叢集準備好進行備份:

  1. 建立儲存體帳戶 Blob 容器

    AKS 的備份會將 Kubernetes 資源儲存在 Blob 容器中作為備份。 若要讓 AKS 叢集準備好進行備份,您必須在叢集中安裝延伸模組。 此延伸模組需要儲存體帳戶和 Blob 容器作為輸入。

    若要建立新的儲存體帳戶和 Blob 容器,請參閱這些步驟

    注意

    1. 儲存體帳戶和 AKS 叢集應該位於相同的區域和訂用帳戶中。
    2. Blob 容器不應該包含任何先前建立的檔案系統 (但 AKS 的備份除外)。
    3. 如果您的來源或目標 AKS 叢集位於私人虛擬網路中,則必須建立私人端點,以將儲存體帳戶與 AKS 叢集連線。
  2. 安裝備份延伸模組

    備份延伸模組必須安裝在 AKS 叢集中,才能執行任何備份和還原作業。 備份延伸模組會在叢集中建立命名空間 dataprotection-microsoft,並使用相同的命名空間來部署其資源。 延伸模組需要儲存體帳戶和 Blob 容器作為安裝的輸入。 了解延伸模組安裝命令

    在延伸模組安裝期間,系統會在 AKS 叢集的節點集區資源群組中建立使用者身分識別。 若要讓延伸模組存取儲存體帳戶,您必須提供此身分識別儲存體帳戶參與者角色。 若要指派必要的角色,請執行下列命令

  3. 啟用信任存取

若要讓備份保存庫與 AKS 叢集連線,您必須啟用信任存取,因為它可讓備份保存庫能夠直接看到 AKS 叢集。 了解如何啟用信任存取

注意

針對備份延伸模組安裝和信任存取啟用,命令僅適用於 Azure CLI。

設定備份

有了已建立的備份保存庫和備份原則,以及處於待備份狀態的 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"
    

準備要求

備份的設定會以兩個步驟執行:

  1. 準備備份設定,以定義要使用 New-AzDataProtectionBackupConfigurationClientObject Cmdlet 備份哪些叢集資源。 在下列範例中,設定會定義為目前命名空間下的所有叢集資源,而未來的命名空間將會使用標籤備份為 key-value pair x=y。 此外,系統會備份所有叢集範圍資源和永續性磁碟區。 下列命名空間會略過備份組態,但未針對備份進行設定:kube-system、kube-node-lease、kube-public。

    $backupConfig = New-AzDataProtectionBackupConfigurationClientObject -SnapshotVolume $true -IncludeClusterScopeResource $true -DatasourceType AzureKubernetesService -LabelSelector "env=prod"
    
  2. 使用 Initialize-AzDataProtectionBackupInstance Cmdlet 搭配相關的保存庫、原則、AKS 叢集、備份設定和快照集資源群組來準備相關要求。

    $backupInstance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureKubernetesService  -DatasourceLocation $dataSourceLocation -PolicyId $ aksBkpPol.Id -DatasourceId $sourceClusterId -SnapshotResourceGroupId $ snapshotrg -FriendlyName $friendlyName -BackupConfiguration $backupConfig
    

指派必要的權限並進行驗證

若要指派必要的許可權並執行 AKS 叢集保護的驗證,請執行下列 Cmdlet:

  1. 備妥要求後,您必須透過 Azure 角色型存取控制 (Azure RBAC) 將所需的權限指派給保存庫 (以保存庫受控系統身分識別表示) 和 AKS 叢集。 您可以使用 Set-AzDataProtectionMSIPermission Cmdlet 來執行此作業。 備份保存庫使用受控識別來存取其他 Azure 資源。 如果要設定 AKS 叢集的備份,備份保存庫的受控識別需要 AKS 叢集與資源群組上的一組權限,其中會建立及管理快照集。 此外,AKS 叢集需要快照集資源群組的權限。

    注意

    只有系統指派的受控識別目前支援備份 (備份保存庫和 AKS 叢集)。 系統指派的受控識別限定為每個資源一個,而且只在此資源的生命週期內存在。 您可以使用 Azure RBAC 將權限授與受控識別。 受控識別是可能僅適用於 Azure 資源之特殊類型的服務主體。 深入了解受控識別

    Set-AzDataProtectionMSIPermission -BackupInstance $backupInstance -VaultResourceGroup $rgName -VaultName $vaultName -PermissionsScope "ResourceGroup"
    
  2. 指派許可權之後,請測試所建立實例的整備程度。

    test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstance  $backupInstance.Property 
    
  3. 驗證成功時,請提交要求,以使用 New-AzDataProtectionBackupInstance Cmdlet 保護 AKS 叢集。

    New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $backupInstance
    

執行隨選備份

若要觸發隨選備份,請執行下列 Cmdlet:

  1. 執行 Cmdlet 來擷取您想要觸發備份的相關備份 Get-AzDataProtectionBackupInstance 實例。

    $instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
    
  2. 觸發備份時指定保留規則。 若要檢視原則中的保留規則,請移至原則物件中的保留規則。 在下列範例中,名稱為預設值的規則隨即出現,我們將使用該規則進行隨選備份。

    $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
    
  3. 使用 Backup-AzDataProtectionBackupInstanceAdhoc Cmdlet 觸發隨選備份。

    $AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
    
    Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
    

追蹤作業

使用 Get-AzDataProtectionJob Cmdlet 追蹤所有作業。 您可以列出所有工作,並擷取特定的工作詳細資料。 您也可以使用 Az.ResourceGraph Cmdlet 來追蹤所有備份保存庫的所有作業。 使用 Search-AzDataProtectionJobInAzGraph Cmdlet 從任何備份保存庫取得相關的作業詳細資料。

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureKubernetesService  -Operation OnDemandBackup

下一步