Sdílet prostřednictvím


Zálohování služby Azure Kubernetes Service pomocí Azure CLI

Tento článek popisuje, jak nakonfigurovat a zálohovat službu Azure Kubernetes Service (AKS) pomocí Azure CLI. AKS můžete také zálohovat pomocí Azure PowerShellu.

Azure Backup teď umožňuje zálohovat clustery AKS (prostředky clusteru a trvalé svazky připojené ke clusteru) pomocí rozšíření zálohování, které se musí nainstalovat do clusteru. Úložiště zálohování komunikuje s clusterem prostřednictvím tohoto rozšíření pro zálohování za účelem provádění operací zálohování a obnovení.

Než začnete

  • Zálohování AKS v současné době podporuje pouze trvalé svazky založené na disku Azure (povolené ovladačem CSI). Zálohy se ukládají jenom v provozním úložišti dat (ve vašem tenantovi) a nepřesouvají se do trezoru. Úložiště záloh a cluster AKS by měly být ve stejném regionu.

  • Zálohy AKS jsou ukládány pomocí kontejneru typu blob a skupiny prostředků. Kontejner objektů blob obsahuje uložené prostředky clusteru AKS, zatímco snímky trvalých svazků jsou uloženy ve skupině prostředků. Cluster AKS a umístění úložiště se musí nacházet ve stejné oblasti. Zjistěte , jak vytvořit blob kontejner.

  • AKS podporuje zálohování jednou denně v současné době. Podporuje také častější zálohování (v intervalech každých 4, 8 a 12 hodin) za den. Toto řešení umožňuje uchovávat data pro obnovení po dobu až 360 dnů. Naučte se vytvářet zásady zálohování.

  • Pokud chcete nakonfigurovat operace zálohování a obnovení v clusteru AKS, musíte nainstalovat rozšíření zálohování. Přečtěte si další informace o rozšíření zálohování.

  • Před zahájením konfigurace zálohování a obnovení se ujistěte, že Microsoft.KubernetesConfiguration, Microsoft.DataProtection a Microsoft.ContainerService jsou zaregistrovány pro vaše předplatné.

  • Nezapomeňte provést všechny předpoklady před zahájením operace zálohování nebo obnovení pro zálohování AKS.

Další informace o podporovaných scénářích, omezeních a dostupnosti najdete v matici podpory.

Vytvořte trezor zálohy

Trezor služby Backup je entita správy v Azure, která ukládá zálohovaná data pro různé novější úlohy, které Azure Backup podporuje, například servery Azure Database for PostgreSQL a disky Azure. Trezory záloh usnadňují uspořádání zálohovaných dat a zároveň minimalizují režijní náklady na správu. Trezory záloh jsou založené na modelu Azure Resource Manageru v Azure, který poskytuje vylepšené možnosti, které pomáhají zabezpečit zálohovaná data.

Před vytvořením trezoru služby Backup zvolte redundanci úložiště dat v trezoru a pak vytvořte trezor služby Backup s danou redundancí úložiště a umístěním. Přečtěte si více informací o vytváření úložiště záloh.

Poznámka:

I když vybrané úložiště může mít nastavení globální redundance, zálohování pro AKS aktuálně podporuje pouze provozní úroveň. Všechny zálohy se ukládají ve vašem předplatném ve stejné oblasti jako cluster AKS a nekopírují se do úložiště trezoru služby Backup.

Pokud chcete vytvořit trezor služby Backup, spusťte následující příkaz:

az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

Po vytvoření úložiště vytvořte zásadu zálohování pro ochranu clusterů AKS.

Vytvoření zásad zálohování

Pokud chcete porozumět vnitřním komponentám zásad zálohování pro zálohování AKS, načtěte šablonu zásad pomocí příkazu az dataprotection backup-policy get-default-policy-template. Tento příkaz vrátí výchozí šablonu zásad pro daný typ zdroje dat. Pomocí této šablony zásad můžete vytvořit novou zásadu.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json


{
  "datasourceTypes": [
    "Microsoft.ContainerService/managedClusters"
  ],
  "name": "AKSPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Šablona zásad se skládá z kritérií triggeru (která rozhoduje o faktorech pro aktivaci úlohy zálohování) a životního cyklu (který se rozhodne, kdy se mají zálohy odstranit, zkopírovat nebo přesunout). V zálohování AKS je výchozí hodnota triggeru naplánovaná hodinová aktivační událost každých 4 hodiny (PT4H) a uchovávání každé zálohy je sedm dní.

Scheduled trigger:
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2023-01-04T09:00:00+00:00/PT4H"
          ]
        }
      }

Default retention lifecycle:
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ]


Zálohování pro AKS poskytuje několik záloh denně. Pokud požadujete častější zálohování, zvolte frekvenci zálohování po hodinách, která má možnost provádět zálohování s intervaly každých 4, 6, 8 nebo 12 hodin. Zálohy se plánují na základě vybraného časového intervalu.

Důležité

Čas dne označuje čas spuštění zálohování, nikoli čas dokončení zálohování. Plán zálohování se řídí formátem doby trvání ISO 8601. Předpona R intervalu opakování se ale nepodporuje, protože zálohy jsou nakonfigurované tak, aby běžely neomezeně dlouho. Jakákoli hodnota zadaná pomocí R bude ignorována.

Jakmile šablonu stáhnete jako soubor JSON, můžete ji upravit pro plánování a uchovávání podle potřeby. Pak vytvořte novou zásadu s výsledným kódem JSON. Pokud chcete upravit hodinovou frekvenci nebo dobu uchovávání, použijte az dataprotection backup-policy trigger set příkazy a/nebo az dataprotection backup-policy retention-rule set .

Poznámka:

Pokud chcete ukládat zálohovaná data na úrovni trezoru, která se mají uchovávat pro účely dlouhodobého dodržování předpisů nebo pro regionální zotavení po havárii prostřednictvím obnovení mezi oblastmi, budete muset ve výchozí šabloně definovat nové pravidlo uchovávání informací, které definuje, jak dlouho má být záloha uložena v trezoru.

Podívejme se na příklad, kde aktualizujeme výchozí šablonu zásad zálohování a přidáme pravidlo uchovávání informací, které bude uchovávat první úspěšné zálohování za den ve vrstvě trezoru po dobu 30 dnů.

Pomocí příkazu az dataprotection backup-policy retention-rule create-lifecycle vytvořte pravidlo uchovávání a pak přidejte pravidlo uchovávání do šablony zásad zálohování pomocí příkazu ''


az dataprotection backup-policy retention-rule create-lifecycle  --count 30 --retention-duration-type Days --copy-option ImmediateCopyOption --target-datastore VaultStore --source-datastore OperationalStore > ./retentionrule.json

az dataprotection backup-policy retention-rule set --lifecycles ./retentionrule.json --name Daily --policy ./akspolicy.json > ./akspolicy.json

Jakmile json zásady obsahuje všechny požadované hodnoty, pokračujte vytvořením nové zásady z objektu az dataprotection backup-policy create zásad pomocí příkazu.

az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json

Příprava clusteru AKS na zálohování

Jakmile je vytvoření trezoru a zásad dokončeno, musíte splnit následující předpoklady, abyste připravili cluster AKS na zálohování:

  1. Vytvořte účet úložiště a kontejner blobů.

    Zálohování pro AKS ukládá prostředky Kubernetes do blob kontejneru jako zálohy. Pokud chcete cluster AKS připravit na zálohování, musíte do clusteru nainstalovat rozšíření. Toto rozšíření vyžaduje účet úložiště a kontejner objektů blob jako vstupní údaje.

    Pokud chcete vytvořit nový účet úložiště, spusťte následující příkaz:

    az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
    

    Po vytvoření účtu úložiště vytvořte blob kontejner spuštěním následujícího příkazu:

    az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
    

    Zjistěte, jak povolit nebo zakázat konkrétní funkce, jako je privátní koncový bod, v průběhu vytváření účtu úložiště a kontejneru objektů blob.

    Poznámka:

    1. Účet úložiště a cluster AKS by měly být ve stejné oblasti a předplatném.
    2. Kontejner objektů blob by neměl obsahovat žádné dříve vytvořené systémy souborů (s výjimkou zálohování pro AKS).
    3. Pokud je váš zdrojový nebo cílový cluster AKS v privátní virtuální síti, musíte vytvořit privátní koncový bod pro připojení účtu úložiště ke clusteru AKS.
  2. Nainstalujte rozšíření zálohování.

    Rozšíření zálohování je povinné nainstalovat v clusteru AKS, aby bylo možné provádět všechny operace zálohování a obnovení. Rozšíření zálohování vytvoří v clusteru obor názvů dataprotection-microsoft a použije jej k nasazení svých prostředků. Rozšíření vyžaduje účet úložiště a blob kontejner jako vstupy pro instalaci.

    az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
    

V případě, že je cluster AKS ve virtuální síti, budete muset vytvořit privátní koncový bod a propojit účet úložiště s virtuální sítí, ve které se nachází cluster AKS.

#Fetch the Subnet ID using the name of the virtual network and subnet in which cluster resides 
$PESubnetId = az network vnet subnet show --resource-group $aksMCResourceGroup --vnet-name $aksVnetName  --name $PESubnetName --query 'id' --output tsv

#Create a Private Endpoint between Storage Account and the Virtual Network.
az network private-endpoint create `
  --resource-group $aksclusterresourcegroup `
  --name $StoragePrivateEndpoint `
  --vnet-name $aksVnetName `
  --subnet $PESubnetId `
  --private-connection-resource-id $(az storage account show --nameD $storageaccount --resource-group $storageaccountresourcegroup --query "id" --output tsv) `
  --group-ids "blob" `
  --connection-name "StoragePESharedVNetConnection"

V rámci instalace rozšíření se identita uživatele vytvoří ve skupině prostředků fondu uzlů clusteru AKS. Aby rozšíření získalo přístup k účtu úložiště, musíte této identitě přiřadit roli Přispěvatel dat služby Storage pro objekty blob. Pokud chcete přiřadit požadovanou roli, spusťte následující příkaz:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
  1. Povolení důvěryhodného přístupu

    Aby se trezor služby Backup mohl připojit ke clusteru AKS, musíte povolit důvěryhodný přístup , protože trezor záloh může mít přímý pohled na cluster AKS.

    Pokud chcete povolit důvěryhodný přístup, spusťte následující příkaz:

    az aks trustedaccess rolebinding create --cluster-name $akscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
    

Konfigurace záloh

S vytvořeným trezorem služby Backup a zásadami zálohování a clusterem AKS v připraveném stavu zálohování teď můžete začít zálohovat cluster AKS.

Příprava požadavku

Konfigurace zálohování se provádí ve dvou krocích:

  1. Připravte konfiguraci zálohování, která definuje, které prostředky clusteru az dataprotection backup-instance initialize-backupconfig se mají zálohovat pomocí příkazu. Příkaz vygeneruje JSON, který můžete podle potřeby aktualizovat a definovat konfiguraci zálohování pro cluster AKS.

    az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json
    
    {
     "excluded_namespaces": null,
     "excluded_resource_types": null,
     "include_cluster_scope_resources": true,
     "included_namespaces": null, 
     "included_resource_types": null,
     "label_selectors": null,
     "snapshot_volumes": true
    }
    

Následující obory názvů se přeskočí z konfigurace zálohování a nenakonfigurují se pro zálohy: kube-system, kube-node-lease, kube-public.

  1. Připravte příslušný požadavek pomocí příkazu az dataprotection backup-instance initialize a použijte k tomu příslušný trezor, zásady, cluster AKS, konfiguraci zálohování a skupinu prostředků snímků.

    az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
    

Teď pomocí výstupu JSON tohoto příkazu nakonfigurujte zálohování clusteru AKS.

Přiřazení požadovaných oprávnění a ověření

Trezor služby Backup používá spravovanou identitu pro přístup k dalším prostředkům Azure. Ke konfiguraci zálohování clusteru AKS vyžaduje spravovaná identita trezoru služby Backup sadu oprávnění ke clusteru AKS a skupinám prostředků, kde se vytvářejí a spravují snímky. Cluster AKS vyžaduje také oprávnění ke skupině prostředků snímku.

Pouze spravovaná identita přiřazená systémem je aktuálně podporována pro zálohování (trezor služby Backup i cluster AKS). Spravovaná identita přiřazená systémem je omezena na jeden prostředek a je svázaná s životním cyklem tohoto prostředku. Oprávnění ke spravované identitě můžete udělit pomocí řízení přístupu na základě role v Azure (Azure RBAC). Spravovaná identita je služební zásada zvláštního typu, kterou lze použít pouze se zdroji Azure. Přečtěte si další informace o spravovaných identitách.

Při připraveném požadavku nejprve musíte ověřit, jestli jsou požadované role přiřazené k prostředkům uvedeným výše, spuštěním následujícího příkazu:

az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault

Pokud ověření selže a chybí určitá oprávnění, můžete je přiřadit spuštěním následujícího příkazu:

az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json

Jakmile jsou oprávnění přiřazená, znovu proveďte ověření pomocí následujícího příkazu pro zálohování :

az dataprotection backup-instance create --backup-instance  backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault

Spusťte zálohu na vyžádání

Pokud chcete načíst příslušnou instanci zálohování, na které chcete aktivovat zálohování, spusťte az dataprotection backup-instance list-from-resourcegraph -- příkaz.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id

Nyní spusťte zálohování na vyžádání pro instanci zálohy použitím následujícího příkazu:

az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid

Sledování pracovních pozic

Sledujte úlohy zálohování, na kterých je spuštěný az dataprotection job příkaz. Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.

Pomocí Resource Graph můžete také sledovat všechny úlohy napříč všemi předplatnými, skupinami prostředků a trezory služby Backup spuštěním az dataprotection job list-from-resourcegraph příkazu pro získání příslušné úlohy.

Zálohování na vyžádání:

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation OnDemandBackup

Pro plánované zálohování:

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation ScheduledBackup

Další kroky