Aracılığıyla paylaş


Azure CLI kullanarak Azure Kubernetes Service'i geri yükleme

Bu makalede, Azure CLI kullanılarak Azure Backup tarafından oluşturulan bir geri yükleme noktasından Azure Kubernetes kümesinin nasıl geri yükleneceği açıklanır.

Azure Backup artık kümeye yüklenmesi gereken bir yedekleme uzantısı kullanarak AKS kümelerini (küme kaynakları ve kümeye bağlı kalıcı birimler) yedeklemenize olanak tanır. Yedekleme kasası, yedekleme ve geri yükleme işlemlerini gerçekleştirmek için bu Yedekleme Uzantısı aracılığıyla kümeyle iletişim kurar.

Hem Özgün Konum Kurtarma (OLR) (yedeklenen AKS kümesinde geri yükleme) hem de Alternatif Konum Kurtarma (ALR) (farklı bir AKS kümesinde geri yükleme) gerçekleştirebilirsiniz. Öğe Düzeyinde Kurtarma (ILR) olan yedeklemeden geri yüklenecek öğeleri de seçebilirsiniz.

Dekont

Geri yükleme işlemini başlatmadan önce hedef kümede Yedekleme Uzantısı'nın yüklü olması ve Backup kasası için Güvenilen Erişim'in etkinleştirilmesi gerekir. Daha fazla bilgi edinin.

Başlamadan önce

  • AKS yedekleme, özgün AKS kümesine (yedeklenen) ve alternatif bir AKS kümesine geri yüklemenizi sağlar. AKS yedeklemesi, tam geri yükleme ve öğe düzeyinde geri yükleme gerçekleştirmenizi sağlar. Geri yükleme sırasında toplanacak küme kaynaklarını temel alan parametreleri tanımlamak için geri yükleme yapılandırmalarını kullanabilirsiniz.

  • Yedekleme Uzantısını hedef AKS kümesine yüklemeniz gerekir. Ayrıca, Backup kasası ve AKS kümesi arasında Güvenilen Erişimi etkinleştirmeniz gerekir.

Sınırlamalar ve desteklenen senaryolar hakkında daha fazla bilgi için bkz . destek matrisi.

Hedef AKS kümesini doğrulama ve hazırlama

Geri yükleme işlemini başlatmadan önce AKS kümesinin geri yüklemeye hazır olduğunu doğrulamanız gerekir. Bu, yedeklemelerin depolandığı depolama hesabında izne sahip uzantıyla yüklenecek Yedekleme Uzantısını ve AKS kümesi ile Backup kasası arasında Güvenilen Erişim'in etkinleştirilmesini içerir.

İlk olarak, aşağıdaki komutu çalıştırarak Yedekleme Uzantısı'nın kümede yüklü olup olmadığını denetleyin:

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

Uzantı yüklüyse yedeklemelerin depolandığı depolama hesabında doğru izinlere sahip olup olmadığını denetleyin:

az role assignment list --all --assignee  $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)

Rol atanmamışsa, aşağıdaki komutu çalıştırarak rolü atayabilirsiniz:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Yedekleme Uzantısı yüklü değilse, yedeklemelerin giriş olarak depolandığı depolama hesabı ve blob kapsayıcısıyla aşağıdaki uzantı yükleme komutunu çalıştırın.

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

Ardından aşağıdaki komutu çalıştırarak depolama hesabındaki uzantıya gerekli rolü atayın:

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

Güvenilen Erişimi Denetle

Backup kasası ile Hedef AKS kümesi arasında Güvenilen Erişim'in etkinleştirilip etkinleştirilmediğini denetlemek için aşağıdaki komutu çalıştırın:

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

Etkinleştirilmemişse, Güvenilen Erişimi etkinleştirmek için aşağıdaki komutu çalıştırın:

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

AKS kümesine geri yükleme

İlgili kurtarma noktasını getirme

AKS kümesiyle ilişkili tüm örnekleri getirin ve ilgili örneği tanımlayın.

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

Örnek tanımlandıktan sonra ilgili kurtarma noktasını getirin.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault

Geri yükleme isteğini hazırlama

Hedef AKS kümesine geri yüklenecek öğeleri tanımlayan geri yükleme yapılandırmasını hazırlamak için komutunu çalıştırın az dataprotection backup-instance initialize-restoreconfig .

az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json



{
  "conflict_policy": "Skip",
  "excluded_namespaces": null,
  "excluded_resource_types": null,
  "include_cluster_scope_resources": true,
  "included_namespaces": null,
  "included_resource_types": null,
  "label_selectors": null,
  "namespace_mappings": null,
  "object_type": "KubernetesClusterRestoreCriteria",
  "persistent_volume_restore_mode": "RestoreWithVolumeData"
}

Şimdi geri yükleme isteğini tüm ilgili ayrıntılarla hazırlayın. Yedeklemeyi özgün kümeye geri yüklüyorsanız aşağıdaki komutu çalıştırın:

az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json

Geri yükleme için Hedef AKS kümesi özgün kümeden farklıysa aşağıdaki komutu çalıştırın:

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json

Şimdi JSON nesnesini gereksinimlerinize göre güncelleştirebilir ve ardından aşağıdaki komutu çalıştırarak nesneyi doğrulayabilirsiniz:

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

Bu komut, AKS Kümesi ve Yedekleme kasasının geri yükleme gerçekleştirmek için birbirleri ve Anlık Görüntü kaynak grubu üzerinde gerekli izinlere sahip olup olmadığını denetler. Doğrulama eksik izinler nedeniyle başarısız olursa, aşağıdaki komutu çalıştırarak bunları atayabilirsiniz:

az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group  $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup

Geri yüklemeyi tetikleme

Rol ataması tamamlandıktan sonra geri yükleme nesnesini bir kez daha doğrulamanız gerekir. Bundan sonra, aşağıdaki komutu çalıştırarak bir geri yükleme işlemini tetikleyebilirsiniz:

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

Dekont

Geri yükleme işlemi sırasında Backup kasasının ve AKS kümesinin geri yüklemeyi gerçekleştirmek için belirli rollerin atanmış olması gerekir:

  1. Hedef AKS kümesinin Anlık Görüntü Kaynak Grubunda Katkıda Bulunan rolü olmalıdır.
  2. Yedekleme Uzantısı ile eklenen Kullanıcı Kimliği, yedeklemelerin depolandığı depolama hesabında Depolama Hesap Katkıda Bulunanı rollerine sahip olmalıdır.
  3. Backup kasasının Hedef AKS kümesindeve Anlık Görüntü Kaynak Grubunda Okuyucu rolü olmalıdır.

İzleme işi

komutunu kullanarak az dataprotection job geri yükleme işlerini izleyebilirsiniz. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.

Kaynak Grafı kullanarak tüm abonelikler, kaynak grupları ve Backup kasalarında tüm işleri izleyebilirsiniz. az dataprotection job list-from-resourcegraph İlgili işi almak için komutunu kullanın.

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

Sonraki adımlar