Tworzenie kopii zapasowej, przywracanie klastrów obciążeń przy użyciu platformy Velero
Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server
W tym artykule opisano sposób instalowania i używania platformy Velero do tworzenia kopii zapasowych i przywracania klastrów obciążeń i klastrów docelowych przy użyciu magazynu Azure Blob Storage lub MinIO w usłudze AKS włączonej przez usługę Azure Arc.
Velero to standardowe narzędzie społeczności open source do tworzenia kopii zapasowych i przywracania obiektów klastra Kubernetes i woluminów trwałych. Obsługuje ona różnych dostawców magazynu do przechowywania kopii zapasowych. Jeśli docelowy klaster Kubernetes usługi AKS Arc ulegnie awarii i nie można go odzyskać, możesz użyć kopii zapasowej platformy Velero, aby przywrócić jego zawartość i wewnętrzne obiekty interfejsu API do nowego klastra.
Jeśli nie chcesz przechowywać kopii zapasowych w Azure Blob Storage, możesz użyć funkcji MinIO z platformą Velero. W tym artykule opisano sposób instalowania i konfigurowania platformy Velero do używania Azure Blob Storage lub instalowania i konfigurowania platformy Velero do korzystania z magazynu MinIO.
Uwaga
Velero nie obsługuje oficjalnie systemu Microsoft Windows. Podczas testowania zespół Velero mógł tworzyć kopie zapasowe tylko bezstanowych aplikacji systemu Windows. Restic
integracja i tworzenie kopii zapasowych aplikacji stanowych lub woluminów trwałych nie było obsługiwane.
Wymagania wstępne
Przed rozpoczęciem wdrażania platformy Velero należy spełnić następujące wymagania wstępne:
- Zainstaluj interfejs wiersza polecenia platformy Azure.
- Zainstaluj program
Chocolatey
. Możesz użyćChocolatey
polecenia , aby zainstalować klienta Velero, który zawiera interfejs wiersza polecenia platformy Velero na maszynie z systemem Windows.
Instalowanie platformy Velero przy użyciu Azure Blob Storage
Procedury opisane w tej sekcji opisują sposób instalowania platformy Velero i używania Azure Blob Storage do tworzenia kopii zapasowych. Jeśli nie chcesz przechowywać kopii zapasowych na platformie Azure, przejdź do sekcji Instalowanie usługi Velero z magazynem MiniO.
Otwórz program PowerShell jako administrator.
Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:
az login --use-device-code
Zainstaluj interfejs wiersza polecenia platformy Velero , uruchamiając następujące polecenie:
Uwaga
Flaga --use-restic nie jest już obsługiwana w wersji velero 1.10+, aby móc używać flagi w wersji 1.9.x jest wymagana
choco install velero
W razie potrzeby przejdź do subskrypcji platformy Azure, której chcesz użyć dla kopii zapasowych.
Domyślnie usługa Velero przechowuje kopie zapasowe w tej samej subskrypcji platformy Azure co maszyny wirtualne i dyski i nie umożliwia przywracania kopii zapasowych do grupy zasobów w innej subskrypcji. Aby włączyć tworzenie kopii zapasowych i przywracanie w ramach subskrypcji, określ subskrypcję do użycia dla kopii zapasowych. Możesz pominąć ten krok, jeśli jesteś już w subskrypcji, której chcesz użyć do tworzenia kopii zapasowych.
Przejdź do subskrypcji, której chcesz użyć dla kopii zapasowych:
Użyj nazwy subskrypcji, aby znaleźć identyfikator subskrypcji:
$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)
Następnie zmień subskrypcję:
az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
Utwórz konto usługi Azure Storage i kontener obiektów blob.
W przypadku używania Azure Blob Storage do tworzenia kopii zapasowych usługa Velero wymaga konta magazynu i kontenera obiektów blob do przechowywania kopii zapasowych. W poniższym przykładzie pokazano konto magazynu utworzone w nowej grupie zasobów Velero_Backups .
Musisz utworzyć konto magazynu z globalnie unikatowym identyfikatorem, który może być używany w systemie DNS. Przykładowy skrypt używa
uuidgen
aplikacji do losowego generowania unikatowej nazwy. Można użyć dowolnej metody, o ile nazwa jest zgodna z regułami nazewnictwa platformy Azure dla kont magazynu.Konto magazynu jest tworzone przy użyciu funkcji szyfrowania magazynowanych (przy użyciu kluczy zarządzanych przez firmę Microsoft) i jest skonfigurowane tak, aby zezwalać tylko na dostęp za pośrednictwem połączeń HTTPS.
Aby utworzyć konto magazynu i kontener obiektów blob, wykonaj następujące kroki:
Utwórz grupę zasobów dla konta magazynu kopii zapasowej. W razie potrzeby zmień katalogi na preferowaną lokalizację i uruchom następujące polecenia:
$AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups" az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
Utwórz konto magazynu:
$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
Utwórz kontener obiektów blob:
$BLOB_CONTAINER="velero" az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
W przykładzie użyto kontenera obiektów blob o nazwie
velero
. Możesz użyć innej nazwy, najlepiej unikatowej dla pojedynczego klastra Kubernetes.
Utwórz jednostkę usługi:
Pobierz identyfikator subskrypcji i identyfikator dzierżawy dla konta platformy Azure:
$AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv) $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv)
Utwórz jednostkę usługi z uprawnieniami współautora.
Jednostkę usługi można utworzyć z rolą Współautor lub użyć roli niestandardowej:
- Rola współautora: Rola Współautor udziela dostępu w całej subskrypcji, dlatego upewnij się, że należy chronić to poświadczenie, jeśli przypiszesz tę rolę.
- Rola niestandardowa: Jeśli potrzebujesz bardziej restrykcyjnej roli, użyj roli niestandardowej.
Przypisz rolę Współautor:
Jeśli będziesz używać platformy Velero do tworzenia kopii zapasowych wielu klastrów z wieloma kontenerami obiektów blob, możesz utworzyć unikatową nazwę użytkownika dla każdego klastra zamiast używać nazwy
velero
.Aby utworzyć jednostkę usługi z rolą Współautor, użyj następującego polecenia. Zastąp własny identyfikator subskrypcji i opcjonalnie własną nazwą główną usługi. Tożsamość Microsoft Entra wygeneruje dla Ciebie wpis tajny.
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
W razie potrzeby wprowadź następujące korekty w poleceniu:
Jeśli planujesz używać różnych subskrypcji dla klastra obciążeń i plików kopii zapasowych platformy Velero, podaj oba identyfikatory subskrypcji, jak w poniższym przykładzie:
$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)
Jeśli nie chcesz używać
velero
jako nazwy głównej usługi, upewnij się, że--name
wybrana nazwa jest unikatowa w Tożsamość Microsoft Entra i nie powoduje konfliktu z innymi jednostkami usługi ani rejestracjami aplikacji.
Ważne
Wpis tajny jest wyświetlany tylko w tym kroku po utworzeniu jednostki usługi. Pamiętaj, aby zanotować wpis tajny do użycia w przyszłych krokach.
Użyj roli niestandardowej:
Jeśli chcesz włączyć minimalne akcje dostawcy zasobów, utwórz rolę niestandardową i przypisz tę rolę do jednostki usługi.
Utwórz plik o nazwie azure-role.json z następującą zawartością. Zastąp własną niestandardową nazwą roli i identyfikatorem subskrypcji.
{ "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>" ] }
Utwórz rolę niestandardową i jednostkę usługi:
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)
Aby uzyskać więcej informacji na temat tworzenia ról niestandardowych, zobacz Ustawianie uprawnień dla platformy Velero.
Pobierz nazwę główną usługi i przypisz tę nazwę do zmiennej AZURE_CLIENT_ID :
$AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
Uwaga
Jednostki usługi wygasają. Aby dowiedzieć się, kiedy nowa jednostka usługi wygaśnie, uruchom następujące polecenie:
az ad sp show --id $AZURE_CLIENT_ID
.Utwórz plik zawierający zmienne wymagane przez instalację platformy Velero. Polecenie wygląda podobnie do następującego:
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
Ważne
Usuń ten plik po zainstalowaniu platformy Velero. Wpis tajny klienta jest w postaci zwykłego tekstu, co może stanowić zagrożenie bezpieczeństwa.
Przed kontynuowaniem sprawdź, czy plik jest poprawnie sformatowany. Rozszerzenie nazwy pliku nie ma znaczenia.
- Usuń wszelkie dodatkowe spacje lub karty.
- Upewnij się, że nazwy zmiennych są poprawne.
Zainstaluj i uruchom platformę Velero.
Zainstaluj platformę Velero w klastrze i uruchom wdrożenie. Ta procedura tworzy przestrzeń nazw o nazwie
velero
i dodaje wdrożenie o nazwievelero
do przestrzeni nazw.Zainstaluj platformę Velero przy użyciu następującego polecenia. Musisz dostosować przykładowe polecenie.
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
Ustaw następujące zmienne zgodnie z potrzebami:
Polecenie instaluje wtyczkę platformy Microsoft Azure, która musi być zgodna z używaną wersją interfejsu wiersza polecenia platformy Velero. Przykładowe polecenie używa wtyczki platformy Microsoft Azure w wersji 1.5.0, która jest zgodna z najnowszą wersją interfejsu wiersza polecenia platformy Velero, 1.9.0. Aby dowiedzieć się, która wersja wtyczki platformy Microsoft Azure ma zostać zainstalowana przy użyciu wersji interfejsu wiersza polecenia Valero, zobacz macierz zgodności.
Pamiętaj o dołączeniu parametru
--use-restic
, aby włączyć tworzenie kopii zapasowych woluminów Kubernetes na poziomie systemu plików przy użyciu poleceniaRestic
.Restic
może służyć do tworzenia kopii zapasowej dowolnego typu woluminu Kubernetes. Domyślnie usługa Velero obsługuje tworzenie migawek woluminów trwałych dla woluminów Amazon EBS, platformy Azure Dyski zarządzane i dysków trwałych Google. W usłudze AKS Arc woluminy Kubernetes używają udostępnionych woluminów klastra (CSV) do przechowywania danych.Restic
W związku z tym jest konieczne włączenie trwałych migawek woluminów. Usługa AKS Arc obecnie nie obsługuje migawek woluminów.Parametr
subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID
jest opcjonalny. Należy je uwzględnić tylko wtedy, gdy Velero i klaster obciążeń mają różne identyfikatory subskrypcji. Jeśli korzystają z tej samej subskrypcji platformy Azure, możesz usunąćsubscriptionId
parametr , a plik credentials-velero.txt dostarczy te informacje.
Usługa Velero jest uruchamiana automatycznie podczas instalacji.
Sprawdź, czy usługa Velero działa prawidłowo:
kubectl -n velero get pods kubectl logs deployment/velero -n velero
Polecenie
get pods
powinno pokazać, że zasobniki Velero są uruchomione.
Instalowanie usługi Velero z magazynem MinIO
Procedury opisane w tej sekcji opisują sposób instalowania platformy Velero i używania magazynu MinIO na potrzeby kopii zapasowych. Jeśli wolisz używać Azure Blob Storage do tworzenia kopii zapasowych, przejdź do sekcji Instalowanie platformy Velero przy użyciu Azure Blob Storage.
Jeśli nie chcesz przechowywać kopii zapasowych w usłudze MinIO, przejdź do sekcji Konfigurowanie platformy Velero, aby używać Azure Blob Storage.
Zainstaluj interfejs wiersza polecenia platformy Velero, uruchamiając następujące polecenie. Zainstalować
Chocolately
jeśli jeszcze tego nie zrobiono.choco install velero
Zainstaluj polecenie MinIO:
Utwórz trwały wolumin do przechowywania kopii zapasowej MinIO. W przykładzie tworzony jest wolumin trwały w domyślnej klasie magazynu w usłudze AKS Arc, która już istnieje.
Utwórz plik YAML o nazwie minio-pvc-storage.yaml z następującą zawartością:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio-pv-claim spec: storageClassName: default accessModes: - ReadWriteOnce resources: requests: storage: 100Gi
Utwórz wolumin trwały, uruchamiając następujące polecenie:
kubectl create -f minio-pvc-storage.yaml
Utwórz plik wdrożenia minio-deployment.yaml na potrzeby uruchamiania funkcji MinIO. Dołącz następującą zawartość. Wdrożenie będzie używać utworzonego trwałego woluminu.
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"
Następnie utwórz wdrożenie:
kubectl create -f minio-deployment.yaml
Utwórz usługę Kubernetes o nazwie minio-service.yaml. Ta usługa zapewni zewnętrzne adresy IP zasobnikowi MinIO.
Utwórz plik YAML z następującymi ustawieniami, aby skonfigurować usługę:
apiVersion: v1 kind: Service metadata: name: minio-service spec: type: LoadBalancer ports: - port: 9000 targetPort: 9000 protocol: TCP selector: app: minio
Następnie utwórz usługę:
kubectl create -f mino-service.yaml
Pobierz zewnętrzny adres IP zasobnika MinIO, uruchamiając następujące polecenie. Użyjesz tego adresu do zainstalowania platformy Velero.
kubectl get svc
Aby sprawdzić, czy funkcja MinIO jest uruchomiona, zaloguj się do adresu IP w przeglądarce lub użyj klienta MinIO, zgodnie z poniższym opisem.
Zainstaluj klienta MinIO i przejrzyj pliki MinIO.
Pobierz klienta MinIO:
Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
Następnie ustaw alias:
mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
Na koniec przejrzyj instalację MinIO:
mc ls minio
Utwórz zasobnik do przechowywania plików Velero. Ten zasobnik będzie używany w instalacji platformy Velero.
mc mb minio/velero-backup
Utwórz plik poświadczeń MinIO z następującymi informacjami:
minio.credentials [default] aws_access_key_id=<minio_access_key> aws_secret_access_key=<minio_secret_key>
Zainstaluj platformę Velero:
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
Przed uruchomieniem tego polecenia sprawdź nazwę zasobnika, poświadczenia MinIO i zewnętrzny adres IP MinIO.
Sprawdź, czy usługa Velero działa prawidłowo:
kubectl -n velero get pods kubectl logs deployment/velero -n Velero
Polecenie
get pods
powinno pokazać, że zasobniki Velero są uruchomione.
Tworzenie kopii zapasowej klastra
Możesz utworzyć kopię zapasową lub przywrócić wszystkie obiekty w klastrze albo filtrować obiekty według typu, przestrzeni nazw i/lub etykiety.
Tworzenie kopii zapasowej
Użyj polecenia Velero backup create
, aby utworzyć kopie zapasowe w wybranym magazynie. W poniższych przykładach użyto flagi --default-volumes-to-restic
, która tworzy migawkę woluminów trwałych. Aby uzyskać informacje o innych opcjach tworzenia kopii zapasowych, zobacz Velero Backup Reference (Dokumentacja kopii zapasowych w usłudze Velero).
Kopia zapasowa na żądanie wszystkich przestrzeni nazw w klastrze:
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Kopia zapasowa na żądanie pojedynczej przestrzeni nazw w klastrze:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
Kopia zapasowa na żądanie wielu wybranych przestrzeni nazw w klastrze:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
Sprawdzanie postępu tworzenia kopii zapasowej
Aby sprawdzić postęp tworzenia kopii zapasowej, uruchom następujące polecenie:
velero backup describe <BACKUP-NAME>
Jeśli używasz Azure Blob Storage dla kopii zapasowych, możesz wyświetlić kopię zapasową na koncie usługi Azure Storage w utworzonym obiekcie blob/kontenerze.
Przywracanie klastra
Aby przywrócić klaster, należy utworzyć nowy klaster, aby przywrócić stary klaster. Nie można przywrócić kopii zapasowej klastra do istniejącego klastra.
Polecenie restore
umożliwia przywrócenie wszystkich obiektów i woluminów trwałych z wcześniej utworzonej kopii zapasowej. Można również przywrócić tylko filtrowany podzbiór obiektów i woluminów trwałych. Aby uzyskać więcej opcji tworzenia kopii zapasowych, zobacz Filtrowanie zasobów.
W klastrze, do którego chcesz przywrócić kopię zapasową ( klaster docelowy):
Wdróż usługę Velero, korzystając z powyższych instrukcji. Użyj tych samych poświadczeń platformy Azure, które były używane dla klastra źródłowego.
Upewnij się, że obiekt kopii zapasowej Velero został utworzony, uruchamiając następujące polecenie. Zasoby Velero są synchronizowane z plikami kopii zapasowych w magazynie w chmurze.
velero backup describe <BACKUP-NAME>
Po potwierdzeniu, że jest obecna właściwa kopia zapasowa (
BACKUP-NAME
), przywróć wszystkie obiekty w kopii zapasowej:velero restore create --from-backup <BACKUP-NAME>
Uzyskiwanie pomocy dotyczącej poleceń platformy Velero
Aby wyświetlić wszystkie opcje skojarzone z określonym poleceniem Velero, użyj --help
flagi z poleceniem . Na przykład velero restore create --help
pokazuje wszystkie opcje skojarzone z poleceniem velero restore create
.
Aby na przykład wyświetlić listę wszystkich opcji velero restore
polecenia , uruchom velero restore --help
polecenie , które zwraca następujące informacje:
velero restore [command]
Available Commands:
create Create a restore
delete Delete restores
describe Describe restores
get Get restores
logs Get restore logs
Odinstalowywanie platformy Velero
Aby odinstalować aplikację Velero z klastra i usunąć wszystkie zasoby utworzone przez instalację platformy Velero, uruchom następujące polecenia:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla