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 usługi Velero do tworzenia kopii zapasowych i przywracania klastrów obciążeń i klastrów docelowych przy użyciu usługi Azure Blob Storage lub magazynu MinIO w usłudze AKS włączonej przez usługę Azure Arc.
Velero to standardowe narzędzie społeczności typu open source do tworzenia kopii zapasowych i przywracania obiektów klastra Kubernetes i woluminów trwałych. Obsługuje różnych dostawców magazynu do przechowywania kopii zapasowych. Jeśli docelowy klaster Kubernetes usługi AKS Arc ulegnie awarii i nie uda się 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 usłudze Azure Blob Storage, możesz użyć funkcji MinIO z usługą Velero. W tym artykule opisano sposób instalowania i konfigurowania usługi Velero do korzystania z usługi Azure Blob Storage lub instalowania i konfigurowania usługi 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ły obsługiwane.
Wymagania wstępne
Przed rozpoczęciem wdrażania usługi 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 platformy Velero, który zawiera interfejs wiersza polecenia platformy Velero na maszynie z systemem Windows.
Instalowanie platformy Velero za pomocą usługi Azure Blob Storage
W procedurach w tej sekcji opisano sposób instalowania platformy Velero i używania usługi 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 nie jest obsługiwana
--use-restic
w systemie Velero w wersji 1.10 lub nowszej. Flaga jest obsługiwana tylko w wersji 1.9.x.choco install velero
W razie potrzeby przejdź do subskrypcji platformy Azure, której chcesz użyć na potrzeby 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ć operacje tworzenia kopii zapasowych i przywracania w ramach subskrypcji, określ subskrypcję, która ma być używana dla kopii zapasowych. Możesz pominąć ten krok, jeśli jesteś już w subskrypcji, której chcesz użyć na potrzeby 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 korzystania z usługi 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 wygenerowania unikatowej nazwy. Możesz 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
Tworzenie kontenera 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 dla 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ć usługi 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. Identyfikator Entra firmy Microsoft 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 zmiany w poleceniu:
Jeśli planujesz używać różnych subskrypcji dla klastra obciążenia 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
nazwy głównej usługi, upewnij się, że--name
wybrana nazwa jest unikatowa w identyfikatorze Entra firmy Microsoft i nie powoduje konfliktu z innymi jednostkami usługi ani rejestracjami aplikacji.
Ważne
Wpis tajny jest wyświetlany tylko w tym kroku, gdy zostanie utworzona jednostka 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", "Microsoft.Storage/storageAccounts/read" ], "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 wygasa nowa jednostka usługi, 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 narzędzia 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 program Velero.
Zainstaluj rozwiązanie 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 do zainstalowania z wersją interfejsu wiersza polecenia Valero znajduje się w macierzy zgodności.
Pamiętaj, aby uwzględnić
--use-restic
parametr , 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 platforma Velero obsługuje tworzenie migawek woluminów trwałych dla woluminów Amazon EBS, usługi 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 należy włączyć trwałe migawki woluminów. Usługa AKS Arc obecnie nie obsługuje migawek woluminów.Element
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 używają 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 za pomocą magazynu MinIO
W procedurach w tej sekcji opisano sposób instalowania usługi Velero i używania magazynu MinIO na potrzeby kopii zapasowych. Jeśli wolisz używać usługi Azure Blob Storage do tworzenia kopii zapasowych, przejdź do sekcji Instalowanie usługi Velero z usługą Azure Blob Storage.
Jeśli nie chcesz przechowywać kopii zapasowych w usłudze MinIO, przejdź do sekcji Konfigurowanie usługi Velero w celu korzystania z usługi Azure Blob Storage.
Zainstaluj interfejs wiersza polecenia platformy Velero, uruchamiając następujące polecenie. Zainstaluj
Chocolately
, jeśli jeszcze tego nie zrobiono.choco install velero
Zainstaluj polecenie MinIO:
Utwórz wolumin trwały do przechowywania kopii zapasowej MinIO. W przykładzie tworzony jest wolumin trwały w domyślnej klasie magazynu w usłudze AKS Arc, który 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 woluminu trwałego.
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, jak opisano poniżej.
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 minio.credentials z następującymi informacjami:
[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 zapoznać się z innymi opcjami tworzenia kopii zapasowych, zobacz Velero Backup Reference (Dokumentacja kopii zapasowej Velero).
Kopia zapasowa na żądanie wszystkich przestrzeni nazw w klastrze:
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Kopia zapasowa pojedynczej przestrzeni nazw w klastrze na żądanie:
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 usługi Azure Blob Storage do tworzenia 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 podzestaw 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 platformy Velero są synchronizowane z plikami kopii zapasowych w magazynie w chmurze.
velero backup describe <BACKUP-NAME>
Po potwierdzeniu obecności odpowiedniej kopii zapasowej (
BACKUP-NAME
) przywróć wszystkie obiekty w kopii zapasowej:velero restore create --from-backup <BACKUP-NAME>
Uzyskaj pomoc dotyczącą poleceń 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ć usługę 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