Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure CLI kullanarak Azure Kubernetes Service'i (AKS) yapılandırma ve yedekleme açıklanmaktadır. Aks'yi Azure PowerShell kullanarak da yedekleyebilirsiniz.
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.
Başlamadan önce
Şu anda AKS yedeklemesi yalnızca Azure Disk tabanlı kalıcı birimleri (CSI sürücüsü tarafından etkinleştirilmiştir) destekler. Yedeklemeler yalnızca operasyonel veri deposunda (kiracınızda) depolanır ve güvenli kasaya taşınmaz. Yedekleme kasası ve AKS kümesi aynı bölgede olmalıdır.
AKS yedeklemesi, yedeklemeleri depolamak için bir blob kapsayıcısı ve kaynak grubu kullanır. Blob kapsayıcısında AKS kümesi kaynakları depolanırken, kalıcı birim anlık görüntüleri kaynak grubunda depolanır. AKS kümesi ve depolama konumları aynı bölgede bulunmalıdır. Blob kapsayıcısı oluşturmayı öğrenin.
Şu anda AKS yedeklemesi günde bir kez yedeklemeyi destekler. Ayrıca günde daha sık yedeklemeleri (her 4, 8 ve 12 saatlik aralıklarla) destekler. Bu çözüm, verilerinizi 360 güne kadar geri yükleme için tutmanızı sağlar. Yedekleme ilkesi oluşturmayı öğrenin.
AKS kümesinde yedekleme ve geri yükleme işlemlerini yapılandırmak için Yedekleme Uzantısı'nı yüklemeniz gerekir. Yedekleme Uzantısı hakkında daha fazla bilgi edinin.
Aboneliğiniz için
Microsoft.KubernetesConfiguration,Microsoft.DataProtectionveMicrosoft.ContainerService'nin kayıtlı olduğundan emin olun, ardından yedekleme yapılandırmasını ve geri yükleme işlemlerini başlatın.AKS yedeklemesi için yedekleme veya geri yükleme işlemini başlatmadan önce tüm önkoşulları gerçekleştirdiğinden emin olun.
Desteklenen senaryolar, sınırlamalar ve kullanılabilirlik hakkında daha fazla bilgi için bkz . destek matrisi.
Backup kasası oluşturma
Backup kasası, Azure'da PostgreSQL için Azure Veritabanı sunucuları ve Azure Diskleri gibi Azure Backup'ın desteklediği daha yeni iş yükleri için yedekleme verilerini depolayan bir yönetim varlığıdır. Yedekleme kasaları, yedekleme verilerinizi düzenlemeyi kolaylaştırırken yönetim ek yükünü de en aza indirir. Yedekleme kasaları, yedekleme verilerinin güvenliğini sağlamaya yardımcı olmak için gelişmiş özellikler sağlayan Azure Resource Manager modelini temel alır.
Backup kasası oluşturmadan önce kasadaki verilerin depolama yedekliliğini seçin ve ardından bu depolama yedekliliği ve konumuyla Backup kasasını oluşturun. Backup kasası oluşturma hakkında daha fazla bilgi edinin.
Uyarı
Seçilen kasada genel yedeklilik ayarı olsa da AKS için yedekleme şu anda yalnızca İşlem Katmanı'nı destekler. Tüm yedeklemeler aboneliğinizde AKS kümesiyle aynı bölgede depolanır ve Backup kasası depolama alanına kopyalanmaz.
Backup kasasını oluşturmak için aşağıdaki komutu çalıştırın:
az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
Kasa oluşturma işlemi tamamlandıktan sonra AKS kümelerini korumak için bir yedekleme politikası oluşturun.
Yedekleme ilkesi oluşturma
AKS yedeklemesine yönelik bir yedekleme ilkesinin iç bileşenlerini anlamak için komutunu az dataprotection backup-policy get-default-policy-templatekullanarak ilke şablonunu alın. Bu komut, belirli bir veri kaynağı türü için varsayılan ilke şablonunu döndürür. Yeni bir ilke oluşturmak için bu ilke şablonunu kullanın.
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"
}
]
}
İlke şablonu bir tetikleyici ölçütlerinden (yedekleme işini tetikleme faktörlerine karar veren) ve bir yaşam döngüsünden (yedeklemelerin ne zaman silineceğine, kopyalandığına veya taşıneceğine karar veren) oluşur. AKS yedeklemesinde tetikleyici için varsayılan değer, her 4 saatte bir (PT4H) zamanlanmış bir işlem tetikleyicisidir ve her yedeklemenin saklama süresi yedi gündür.
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"
}
}
]
AKS için yedekleme, günde birden çok yedekleme sağlar. Daha sık yedeklemeye ihtiyacınız varsa, her 4, 6, 8 veya 12 saatte bir aralıklarla yedekleme alabilen Saatlik yedekleme sıklığını seçin. Yedeklemeler, seçtiğiniz Zaman aralığına göre zamanlanır.
Önemli
Günün saati, yedeklemenin tamamlanma zamanını değil yedekleme başlangıç saatini gösterir.
Yedekleme zamanlaması ISO 8601 süre biçimini izler. Ancak, yedeklemeler süresiz olarak çalışacak şekilde yapılandırıldığından yinelenen aralık ön eki R desteklenmez. **
R ile belirtilen herhangi bir değer yoksayılacaktır.
Şablonu JSON dosyası olarak indirdikten sonra, zamanlamak ve bekletmek için gerektiği gibi düzenleyebilirsiniz. Ardından, elde edilen JSON ile yeni bir ilke oluşturun. Saatlik sıklığı veya saklama süresini düzenlemek istiyorsanız, az dataprotection backup-policy trigger set ve/veya az dataprotection backup-policy retention-rule set komutlarını kullanın.
Uyarı
Yedekleme verilerinizi uyumluluk amacıyla uzun süreli veya bölgeler arası geri yükleme yoluyla bölgesel olağanüstü durum kurtarma amacıyla saklamak üzere Kasa katmanında depolamak için, varsayılan şablonda yedeklemenin kasada ne kadar süreyle depolanması gerektiğini tanımlayan yeni bir bekletme kuralı tanımlamanız gerekir.
Yedekleme ilkesi için varsayılan şablonu güncelleştireceğimiz ve Kasa katmanında günde ilk başarılı yedeklemeyi 30 gün boyunca tutmak için bir bekletme kuralı ekleyebileceğimiz bir örnek alalım.
Bekletme kuralı oluşturmak için komutunu az dataprotection backup-policy retention-rule create-lifecycle kullanın ve ardından '' komutuyla bekletme kuralını yedekleme ilkesi şablonuna ekleyin
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
İlke JSON tüm gerekli değerleri aldıktan sonra, komutunu kullanarak ilke nesnesinden yeni bir ilke oluşturmaya devam edin az dataprotection backup-policy create .
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
AKS kümesini yedekleme için hazırlama
Kasa ve politika oluşturma işlemi tamamlandıktan sonra AKS kümesini yedeklemeye hazır hale getirmek için aşağıdaki önkoşulları gerçekleştirmeniz gerekir:
Depolama hesabı ve blob kapsayıcısı oluşturun.
AKS için yedekleme, Kubernetes kaynaklarını bir blob kapsayıcısında yedek olarak depolar. AKS kümesini yedeklemeye hazırlamak için kümeye bir uzantı yüklemeniz gerekir. Bu uzantı için giriş olarak depolama hesabı ve blob kapsayıcısı gerekir.
Yeni bir depolama hesabı oluşturmak için aşağıdaki komutu çalıştırın:
az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRSDepolama hesabı oluşturma işlemi tamamlandıktan sonra, aşağıdaki komutu çalıştırarak içinde bir blob kapsayıcısı oluşturun:
az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode loginDepolama hesabı ve blob kapsayıcısı oluştururken özel uç nokta gibi belirli özellikleri etkinleştirmeyi veya devre dışı bırakmayı öğrenin.
Uyarı
- Depolama hesabı ve AKS kümesi aynı bölgede ve abonelikte olmalıdır.
- Blob kapsayıcısı daha önce oluşturulmuş hiçbir dosya sistemi (AKS için yedekleme tarafından oluşturulanlar dışında) içermemelidir.
- Kaynak veya hedef AKS kümeniz özel bir sanal ağdaysa, depolama hesabını AKS kümesine bağlamak için Özel Uç Nokta oluşturmanız gerekir.
Yedekleme Uzantısı'nı yükleyin.
Yedekleme ve geri yükleme işlemlerini gerçekleştirmek için AKS kümesine Yedekleme Uzantısının yüklenmesi zorunludur. Yedekleme Uzantısı, kümede bir ad alanı
dataprotection-microsoftoluşturur ve kaynaklarını dağıtmak için aynı ad alanını kullanır. Uzantı, yükleme için giriş olarak depolama hesabı ve blob kapsayıcısı gerektirir.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
AKS kümesinin bir sanal ağ içinde olması durumunda, depolama hesabını AKS kümesinin bulunduğu sanal ağa bağlayan özel bir uç nokta oluşturmanız gerekir.
#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"
Uzantı yüklemesinin bir parçası olarak AKS kümesinin Düğüm Havuzu Kaynak Grubunda bir kullanıcı kimliği oluşturulur. Uzantının depolama hesabına erişmesi için bu kimliğe Depolama Blobu Veri Katkıda Bulunanı rolünü tanımlamanız gerekir. Gerekli rolü atamak için aşağıdaki komutu çalıştırın:
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
Güvenilen Erişimi Etkinleştir
Backup kasasının AKS kümesine bağlanması için, Backup kasasının AKS kümesine doğrudan bir görüş hattına sahip olmasına izin verdiğinden Güvenilen Erişim'i etkinleştirmeniz gerekir.
Güvenilen Erişim'i etkinleştirmek için aşağıdaki komutu çalıştırın:
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
Yedeklemeleri yapılandırma
Oluşturulan Yedekleme kasası ve yedekleme ilkesi ve AKS kümesi yedeklenmeye hazır durumda olduğu için artık AKS kümenizi yedeklemeye başlayabilirsiniz.
İsteği hazırlama
Yedekleme yapılandırması iki adımda gerçekleştirilir:
Komutunu kullanarak
az dataprotection backup-instance initialize-backupconfighangi küme kaynaklarının yedekleneceklerini tanımlamak için yedekleme yapılandırmasını hazırlayın. komutu, AKS kümenizin yedekleme yapılandırmasını gerektiği gibi tanımlayacak şekilde güncelleştirebileceğiniz bir JSON oluşturur.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 }
Aşağıdaki ad alanları yedekleme yapılandırmasına dahil edilmez ve yedeklemeler için yapılandırılmaz: kube-system, kube-node-lease, kube-public.
İlgili isteği hazırlamak için
az dataprotection backup-instance initializekomutunu kullanarak ilgili kasayı, ilkeyi, AKS kümesini, yedekleme yapılandırmasını ve anlık görüntü kaynak grubunu kullanın.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
Şimdi aks kümesi için yedeklemeyi yapılandırmak için bu komutun JSON çıkışını kullanın.
Gerekli izinleri atama ve doğrulama
Yedekleme kasası, diğer Azure kaynaklarına erişmek için yönetilen kimliği kullanır. AKS kümesinin yedeklemesini yapılandırmak için Backup kasasının yönetilen kimliği, anlık görüntülerin oluşturulduğu ve yönetildiği AKS kümesi ve kaynak gruplarında bir dizi izin gerektirir. Ayrıca AKS kümesi, Anlık Görüntü Kaynak grubu üzerinde izin gerektirir.
Yalnızca sistem tarafından atanan yönetilen kimlik şu anda yedekleme için desteklenmektedir (hem Yedekleme kasası hem de AKS kümesi için). Sistem tarafından atanan yönetilen kimlik, kaynak başına bir kimlikle sınırlıdır ve bu kaynağın yaşam döngüsüne bağlıdır. Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak yönetilen kimliğe izin vekleyebilirsiniz. Yönetilen kimlik, yalnızca Azure kaynaklarıyla kullanılabilecek özelleşmiş bir hizmet ilkesi türüdür. Yönetilen kimlikler hakkında daha fazla bilgi edinin.
İstek hazırlandığında, önce aşağıdaki komutu çalıştırarak gerekli rollerin yukarıda belirtilen kaynaklara atandığını doğrulamanız gerekir:
az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault
Doğrulama başarısız olursa ve bazı izinler eksikse, aşağıdaki komutu çalıştırarak bunları atayabilirsiniz:
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
İzinler atandıktan sonra aşağıdaki yedekleme için doğrula komutunu kullanarak yeniden doğrulayın:
az dataprotection backup-instance create --backup-instance backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault
İsteğe bağlı yedekleme çalıştırma
Yedeklemeyi tetiklemesini istediğiniz ilgili yedekleme örneğini getirmek için komutunu çalıştırın az dataprotection backup-instance list-from-resourcegraph -- .
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id
Şimdi aşağıdaki komutu çalıştırarak yedekleme örneği için isteğe bağlı bir yedekleme tetikleyin:
az dataprotection backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid
İşleri izleme
komutunu çalıştıran az dataprotection job yedekleme işlerini izleyin. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.
ayrıca ilgili işi almak için komutunu çalıştırarak az dataprotection job list-from-resourcegraph tüm abonelikler, kaynak grupları ve Backup kasaları genelindeki tüm işleri izlemek için Kaynak Grafı kullanabilirsiniz
İsteğe bağlı yedekleme için:
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation OnDemandBackup
Zamanlanmış yedekleme için:
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation ScheduledBackup
Sonraki adımlar
- Azure CLI, Azure PowerShell kullanarak Azure Kubernetes Service kümesini geri yükleme
- Azure Kubernetes Service küme yedeklemelerini yönetme
- Azure Kubernetes Service küme yedeklemesi hakkında