Velero kullanarak iş yükü kümelerini yedekleme, geri yükleme
Şunlar için geçerlidir: Azure Stack HCI 22H2 üzerinde AKS, Windows Server'da AKS
Bu makalede, Azure Arc tarafından etkinleştirilen AKS'de Azure Blob Depolama veya MinIO depolama kullanarak iş yükünü ve hedef kümeleri yedeklemek ve geri yüklemek için Velero'nun nasıl yükleneceği ve kullanılacağı açıklanmaktadır.
Velero , Kubernetes küme nesnelerini ve kalıcı birimleri yedeklemeye ve geri yüklemeye yönelik açık kaynak topluluk standart aracıdır. Yedeklemelerini depolamak için çeşitli depolama sağlayıcılarını destekler. AKS Arc hedef Kubernetes kümesi kilitlenir ve kurtarılamazsa, içeriğini ve iç API nesnelerini yeni bir kümeye geri yüklemek için Bir Velero yedeklemesi kullanabilirsiniz.
Yedeklemelerinizi Azure Blob Depolama depolamak istemiyorsanız Velero ile MinIO kullanabilirsiniz. Bu makalede Velero'yu Azure Blob Depolama kullanacak veya Velero'yu MinIO depolama kullanacak şekilde yükleyip yapılandıracak şekilde nasıl yapılandıracakları açıklanır.
Not
Velero, Microsoft Windows'u resmi olarak desteklemez. Testlerde Velero ekibi yalnızca durum bilgisi olmayan Windows uygulamalarını yedekleyebildi. Restic
durum bilgisi olan uygulamaların veya kalıcı birimlerin tümleştirmesi ve yedeklemeleri desteklenmiyordu.
Önkoşullar
Velero dağıtımınıza başlamadan önce şu önkoşulları tamamlayın:
- Azure CLI'yi yükleyin.
- yükleyin
Chocolatey
. Velero CLI'yı içeren Velero istemcisini bir Windows makinesine yüklemek için kullanabilirsinizChocolatey
.
velero'yu Azure Blob Depolama ile yükleme
Bu bölümdeki yordamlarda Velero'yu yükleme ve yedeklemeler için Azure Blob Depolama kullanma işlemleri açıklanmaktadır. Yedeklemelerinizi Azure'da depolamak istemiyorsanız Velero'yu MiniO depolama ile yükleme bölümüne gidin.
PowerShell'i yönetici olarak açın.
Azure CLI'yi kullanarak Azure'da oturum açın:
az login --use-device-code
Aşağıdaki komutu çalıştırarak Velero CLI'yi yükleyin:
Not
Bayrak
--use-restic
, Velero sürüm 1.10 ve sonraki sürümlerde desteklenmez. Bayrağı yalnızca 1.9.x sürümünde desteklenir.choco install velero
Gerekirse, yedeklemeler için kullanmak istediğiniz Azure aboneliğine geçin.
Varsayılan olarak Velero, yedeklemeleri VM'leriniz ve disklerinizle aynı Azure aboneliğinde depolar ve yedekleri farklı bir abonelikteki bir kaynak grubuna geri yüklemenize izin vermez. Abonelikler arasında yedekleme ve geri yükleme işlemlerini etkinleştirmek için, yedeklemeleriniz için kullanılacak bir abonelik belirtin. Yedeklemeleriniz için kullanmak istediğiniz abonelikteyseniz bu adımı atlayabilirsiniz.
Yedeklemeleriniz için kullanmak istediğiniz aboneliğe geçin:
Abonelik kimliğini bulmak için abonelik adını kullanın:
$AZURE_BACKUP_SUBSCRIPTION_NAME="<NAME_OF_TARGET_SUBSCRIPTION>" $AZURE_BACKUP_SUBSCRIPTION_ID=$(az account list --query="[?name=='$AZURE_BACKUP_SUBSCRIPTION_NAME'].id | [0]" -o tsv)
Ardından aboneliği değiştirin:
az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
Bir Azure depolama hesabı ve blob kapsayıcısı oluşturun.
Yedeklemeler için Azure Blob Depolama kullandığınızda Velero, yedeklemeleri depolamak için bir depolama hesabı ve blob kapsayıcısı gerektirir. Aşağıdaki örnekte, yeni bir Velero_Backups kaynak grubunda oluşturulan depolama hesabı gösterilmektedir.
Depolama hesabını DNS'de kullanılabilecek genel benzersiz bir kimlikle oluşturmanız gerekir. Örnek betik, rastgele benzersiz bir ad oluşturmak için uygulamayı kullanır
uuidgen
. Ad, depolama hesapları için Azure adlandırma kurallarına uygun olduğu sürece herhangi bir yöntemi kullanabilirsiniz.Depolama hesabı, bekleme durumunda şifreleme özellikleriyle (Microsoft tarafından yönetilen anahtarlar kullanılarak) oluşturulur ve yalnızca HTTPS bağlantıları üzerinden erişime izin verecek şekilde yapılandırılır.
Depolama hesabını ve blob kapsayıcısını oluşturmak için şu adımları izleyin:
Yedekleme depolama hesabı için bir kaynak grubu oluşturun. Gerekirse dizinleri tercih ettiğiniz konuma değiştirin ve aşağıdaki komutları çalıştırın:
$AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups" az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
Depolama hesabını oluşturun:
$AZURE_STORAGE_ACCOUNT_ID="<NAME_OF_ACCOUNT_TO_ASSIGN>" az storage account create --name $AZURE_STORAGE_ACCOUNT_ID --resource-group $AZURE_BACKUP_RESOURCE_GROUP --sku Standard_GRS --encryption-services blob --https-only true --kind BlobStorage --access-tier Hot
Blob kapsayıcısı oluşturma:
$BLOB_CONTAINER="velero" az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
Örnekte adlı
velero
bir blob kapsayıcısı kullanılır. Tercihen tek bir Kubernetes kümesi için benzersiz olan farklı bir ad kullanabilirsiniz.
Hizmet sorumlusu oluşturma:
Azure hesabınızın abonelik kimliğini ve kiracı kimliğini alın:
$AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv) $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv)
Katkıda Bulunan ayrıcalıklarına sahip bir hizmet sorumlusu oluşturun.
Katkıda Bulunan rolüyle bir hizmet sorumlusu oluşturabilir veya özel bir rol kullanabilirsiniz:
- Katkıda bulunan rolü: Katkıda Bulunan rolü abonelik genelinde erişim verir, bu nedenle bu rolü atarsanız bu kimlik bilgilerini koruduğundan emin olun.
- Özel rol: Daha kısıtlayıcı bir role ihtiyacınız varsa özel bir rol kullanın.
Katkıda Bulunan rolünü atayın:
Birden çok blob kapsayıcısı ile birden çok kümeyi yedeklemek için Velero'yu kullanıyorsanız, adını
velero
kullanmak yerine her küme için benzersiz bir kullanıcı adı oluşturmak isteyebilirsiniz.Katkıda Bulunan rolüne sahip bir hizmet sorumlusu oluşturmak için aşağıdaki komutu kullanın. Kendi abonelik kimliğinizi ve isteğe bağlı olarak kendi hizmet asıl adınızı değiştirin. Microsoft Entra Id sizin için bir gizli dizi oluşturur.
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
Gerekirse komutunda şu ayarlamaları yapın:
İş yükü kümeniz ve Velero yedekleme dosyalarınız için farklı abonelikler kullanmayı planlıyorsanız, aşağıdaki örnekte olduğu gibi her iki abonelik kimliklerini de sağlayın:
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID /subscriptions/$AZURE_BACKUP_SUBSCRIPTION_ID)
Hizmet asıl adınız olarak kullanmak
velero
istemiyorsanız, seçtiğiniz hizmetin Microsoft Entra Kimliği'nde benzersiz olduğundan ve diğer hizmet sorumlularıyla veya uygulama kayıtlarıyla çakışmadığından emin olun--name
.
Önemli
Gizli dizi yalnızca hizmet sorumlusu oluşturulduğunda bu adım sırasında gösterilir. Gelecek adımlarda kullanmak üzere gizli diziyi not edin.
Özel bir rol kullanın:
En düşük kaynak sağlayıcısı eylemlerini etkinleştirmek istiyorsanız, özel bir rol oluşturun ve bu rolü hizmet sorumlusuna atayın.
Aşağıdaki içeriklere sahip azure-role.json adlı bir dosya oluşturun. Kendi özel rol adınızı ve abonelik kimliğinizi değiştirin:
{ "Name": <CUSTOM_ROLE_NAME>, "Id": null, "IsCustom": true, "Description": "Velero related permissions to perform backups, restores and deletions", "Actions": [ "Microsoft.Compute/disks/read", "Microsoft.Compute/disks/write", "Microsoft.Compute/disks/endGetAccess/action", "Microsoft.Compute/disks/beginGetAccess/action", "Microsoft.Compute/snapshots/read", "Microsoft.Compute/snapshots/write", "Microsoft.Compute/snapshots/delete", "Microsoft.Storage/storageAccounts/listkeys/action", "Microsoft.Storage/storageAccounts/regeneratekey/action" ], "NotActions": [], "AssignableScopes": [ "<SUBSCRIPTION_ID>" ] }
Özel rolü ve hizmet sorumlusunu oluşturun:
az role definition create --role-definition azure-role.json $AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "<CUSTOM_ROLE>" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
Özel roller oluşturma hakkında daha fazla bilgi için bkz . Velero için izinleri ayarlama.
Hizmet asıl adını alın ve bu adı AZURE_CLIENT_ID değişkenine atayın:
$AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
Not
Hizmet sorumlularının süresi dolar. Yeni hizmet sorumlunuzun süresinin ne zaman dolduğunda öğrenmek için şu komutu çalıştırın:
az ad sp show --id $AZURE_CLIENT_ID
.Velero yüklemesinin gerektirdiği değişkenleri içeren bir dosya oluşturun. Komut aşağıdakine benzer:
AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID} AZURE_TENANT_ID=${AZURE_TENANT_ID} AZURE_CLIENT_ID=${AZURE_CLIENT_ID} AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} AZURE_RESOURCE_GROUP=${AZURE_BACKUP_RESOURCE_GROUP} AZURE_CLOUD_NAME=AzurePublicCloud" | Out-File -FilePath ./credentials-velero.txt
Önemli
Velero'yu yükledikten sonra bu dosyayı silin. İstemci gizli dizisi düz metin biçimindedir ve bu da güvenlik riski oluşturabilir.
Devam etmeden önce, dosyanın düzgün biçimlendirildiğini doğrulayın. Dosya adı uzantısı önemli değildir.
- Ek boşlukları veya sekmeleri kaldırın.
- Değişken adlarının doğru olduğundan emin olun.
Velero'yu yükleyin ve başlatın.
Kümeye Velero'yu yükleyin ve dağıtımı başlatın. Bu yordam adlı bir ad alanı oluşturur ve ad
velero
alanına adlıvelero
bir dağıtım ekler.Aşağıdaki komutu kullanarak Velero'yu yükleyin. Örnek komutunu özelleştirmeniz gerekir.
velero install --provider azure --plugins velero/velero-plugin-for-microsoft-azure:v1.5.0 --bucket $BLOB_CONTAINER --secret-file ./credentials-velero.txt --backup-location-config resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID,subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID --use-restic
Aşağıdaki değişkenleri gerektiği gibi ayarlayın:
Komutu, kullandığınız Velero CLI sürümüyle uyumlu olması gereken Microsoft Azure eklentisini yükler. Örnek komut, en son Velero CLI sürümü 1.9.0 ile uyumlu olan Microsoft Azure eklentisi sürüm 1.5.0'ı kullanır. Microsoft Azure eklentisinin hangi sürümünü Valero CLI sürümünüzle yükleneceğini öğrenmek için uyumluluk matrisine bakın.
kullanarak
Restic
Kubernetes birimlerinin--use-restic
dosya sistemi düzeyinde yedeklemesini etkinleştirmek için parametresini eklediğinizden emin olun.Restic
her tür Kubernetes birimini yedeklemek için kullanılabilir. Varsayılan olarak Velero, Amazon EBS Birimleri, Azure Yönetilen Diskler ve Google Kalıcı Diskler için kalıcı birimlerin anlık görüntülerini almayı destekler. AKS Arc'ta Kubernetes birimleri verileri depolamak için Küme Paylaşılan Birimlerini (CSV) kullanır. Bu nedenle,Restic
kalıcı birim anlık görüntülerini etkinleştirmek için gereklidir. AKS Arc şu anda birim anlık görüntülerini desteklememektedir.subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID
isteğe bağlıdır. Bunu yalnızca Velero ve iş yükü kümesinin farklı abonelik kimlikleri varsa eklemeniz gerekir. Aynı Azure aboneliğini kullanıyorlarsa parametresinisubscriptionId
kaldırabilirsiniz ve credentials-velero.txt dosyası bu bilgileri sağlar.
Velero hizmeti, yüklemede otomatik olarak başlatılır.
Velero hizmetinin düzgün çalışıp çalışmadığını denetleyin:
kubectl -n velero get pods kubectl logs deployment/velero -n velero
Komutun
get pods
Velero podlarının çalıştığını göstermesi gerekir.
MinIO depolama ile Velero'yu yükleme
Bu bölümdeki yordamlarda Velero'yu yükleme ve yedeklemeler için MinIO depolamanın nasıl kullanılacağı açıklanmaktadır. Yedeklemeleriniz için Azure Blob Depolama kullanmayı tercih ediyorsanız Velero'yu Azure Blob Depolama ile yükleme bölümüne gidin.
Yedeklemelerinizi MinIO'da depolamak istemiyorsanız Velero'yu Azure Blob Depolama kullanacak şekilde ayarlama bölümüne gidin.
Aşağıdaki komutu çalıştırarak Velero CLI'yi yükleyin. Henüz yüklemediyseniz yükleyin
Chocolately
.choco install velero
MinIO'yu yükleme:
MinIO yedeklemesini depolamak için kalıcı bir birim oluşturun. Örnek, AKS Arc'taki varsayılan depolama sınıfında zaten var olan kalıcı bir birim oluşturur.
Aşağıdaki içeriklerle minio-pvc-storage.yaml adlı bir YAML dosyası oluşturun:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio-pv-claim spec: storageClassName: default accessModes: - ReadWriteOnce resources: requests: storage: 100Gi
Bu komutu çalıştırarak kalıcı birimi oluşturun:
kubectl create -f minio-pvc-storage.yaml
MinIO'yu başlatmak için minio-deployment.yaml adlı bir dağıtım dosyası oluşturun. Aşağıdaki içeriği ekleyin. Dağıtım, oluşturduğunuz kalıcı birimi kullanır.
apiVersion: apps/v1 kind: Deployment metadata: name: minio-deployment spec: selector: matchLabels: app: minio strategy: type: Recreate template: metadata: labels: app: minio spec: volumes: - name: storage persistentVolumeClaim: claimName: minio-pv-claim containers: - name: minio image: minio/minio:latest args: - server - /storage env: - name: MINIO_ACCESS_KEY value: "<you can define this>" - name: MINIO_SECRET_KEY value: "<you can define this>" ports: - containerPort: 9000 hostPort: 9000 volumeMounts: - name: storage mountPath: "/storage"
Ardından dağıtımı oluşturun:
kubectl create -f minio-deployment.yaml
minio-service.yaml adlı bir Kubernetes hizmeti oluşturun. Bu hizmet, MinIO pod'una dış IP adresleri sağlar.
Hizmeti yapılandırmak için aşağıdaki ayarlarla bir YAML dosyası oluşturun:
apiVersion: v1 kind: Service metadata: name: minio-service spec: type: LoadBalancer ports: - port: 9000 targetPort: 9000 protocol: TCP selector: app: minio
Ardından hizmeti oluşturun:
kubectl create -f mino-service.yaml
Aşağıdaki komutu çalıştırarak MinIO podunun dış IP adresini alın. Velero'yu yüklemek için bu adresi kullanacaksınız.
kubectl get svc
MinIO'nın çalışır durumda olup olmadığını denetlemek için, tarayıcıda IP adresinde oturum açın veya aşağıda açıklandığı gibi MinIO istemcisini kullanın.
MinIO istemcisini yükleyin ve MinIO dosyalarına göz atın.
MinIO istemcisini indirin:
Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
Ardından bir diğer ad ayarlayın:
mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
Son olarak MinIO yüklemesine göz atın:
mc ls minio
Velero dosyalarını depolamak için bir demet oluşturun. Bu demet Velero kurulumunda kullanılacaktır.
mc mb minio/velero-backup
Aşağıdaki bilgilerle bir MinIO kimlik bilgileri dosyası minio.credentials oluşturun:
[default] aws_access_key_id=<minio_access_key> aws_secret_access_key=<minio_secret_key>
Velero'yu yükleyin:
velero install --provider aws --bucket velero-backup --secret-file .\minio.credentials --backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://10.10.77.6:9000 --plugins velero/velero-plugin-for-aws:v1.1.0 --use-restic
Bu komutu çalıştırmadan önce demet adını, MinIO kimlik bilgilerinizi ve MinIO dış IP adresini denetleyin.
Velero hizmetinin düzgün çalışıp çalışmadığını denetleyin:
kubectl -n velero get pods kubectl logs deployment/velero -n Velero
Komutun
get pods
Velero podlarının çalıştığını göstermesi gerekir.
Kümeyi yedekleme
Kümenizdeki tüm nesneleri yedekleyebilir veya geri yükleyebilir veya nesneleri türe, ad alanına ve/veya etikete göre filtreleyebilirsiniz.
Yedekleme oluşturma
Seçtiğiniz depolama alanına yedeklemeler oluşturmak için Velero backup create
komutunu kullanın. Aşağıdaki örneklerde, kalıcı birimlerin --default-volumes-to-restic
anlık görüntüsünü oluşturan bayrağı kullanılır. Diğer yedekleme seçenekleri için bkz . Velero Yedekleme Başvurusu.
Kümenizdeki tüm ad alanlarının isteğe bağlı yedeklemesi:
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Kümenizdeki tek bir ad alanının isteğe bağlı yedeklemesi:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
Kümenizde seçili birden çok ad alanının isteğe bağlı yedeklemesi:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
Yedekleme ilerleme durumunu denetleme
Yedeklemenin ilerleme durumunu denetlemek için şu komutu çalıştırın:
velero backup describe <BACKUP-NAME>
Yedeklemeleriniz için Azure Blob Depolama kullanıyorsanız, azure depolama hesabınızda oluşturduğunuz blob/kapsayıcının altında yedeklemenizi görüntüleyebilirsiniz.
Kümeyi geri yükleme
Bir kümeyi geri yüklemek için, eski kümeyi geri yüklemek için yeni bir küme oluşturmanız gerekir. Küme yedeklemesini mevcut bir kümeye geri yükleyemezsiniz.
komutu, restore
önceden oluşturulmuş bir yedeklemeden tüm nesneleri ve kalıcı birimleri geri yüklemenize olanak tanır. Ayrıca, nesnelerin ve kalıcı birimlerin yalnızca filtrelenmiş bir alt kümesini geri yükleyebilirsiniz. Diğer yedekleme seçenekleri için bkz . Kaynak filtreleme.
Yedeklemeyi geri yüklemek istediğiniz kümede ( hedef küme):
Yukarıdaki yönergeleri kullanarak Velero'yu dağıtın. Kaynak küme için kullandığınız Azure kimlik bilgilerini kullanın.
Aşağıdaki komutu çalıştırarak Velero yedekleme nesnesinin oluşturulduğundan emin olun. Velero kaynakları, bulut depolamadaki yedekleme dosyalarıyla eşitlenir.
velero backup describe <BACKUP-NAME>
Doğru yedeklemenin (
BACKUP-NAME
) mevcut olduğunu onayladıktan sonra yedeklemedeki tüm nesneleri geri yükleyin:velero restore create --from-backup <BACKUP-NAME>
Velero komutları ile ilgili yardım alma
Belirli bir Velero komutuyla ilişkili tüm seçenekleri görmek için komutuyla bayrağını kullanın --help
. Örneğin, velero restore create --help
komutuyla velero restore create
ilişkili tüm seçenekleri gösterir.
Örneğin, tüm seçeneklerini velero restore
listelemek için aşağıdaki bilgileri döndüren komutunu çalıştırın velero restore --help
:
velero restore [command]
Available Commands:
create Create a restore
delete Delete restores
describe Describe restores
get Get restores
logs Get restore logs
Velero'yu kaldırma
Velero'yu kümenizden kaldırmak ve Velero yüklemesi tarafından oluşturulan tüm kaynakları kaldırmak için aşağıdaki komutları çalıştırın:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin