Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: usługa 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 systemie Windows Server.
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 przechowywania danych do tworzenia 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 testów zespół Velero był w stanie utworzyć kopie zapasowe wyłącznie bezstanowych aplikacji 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 upewnij się, że masz 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 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, zobacz Instalowanie usługi Velero przy użyciu magazynu 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 Velero, uruchamiając następujące polecenie:
Uwaga
Flaga
--use-restic
nie jest obsługiwana w wersji Velero 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 utworzenie konta do przechowywania w nowej grupie zasobów Velero_Backups.
Musisz utworzyć konto pamięci masowej z globalnie unikatowym identyfikatorem, który może być używany w 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 Azure dla kont magazynowania.Konto magazynowe jest tworzone z funkcjami szyfrowania danych w spoczynku (przy użyciu kluczy zarządzanych przez firmę Microsoft) i jest skonfigurowane tak, aby dopuścić dostęp wyłącznie 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 magazynowe
$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 blobów:
$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 nazwę usługi z uprawnieniami współtwórcy.
Podmiot usługi można utworzyć z rolą Kontrybutor lub użyć roli niestandardowej:
- Rola współautora: Rola współautora zapewnia dostęp w ramach całej subskrypcji, dlatego upewnij się, że należy chronić te dane uwierzytelniające, jeśli przypiszesz tę rolę.
- Rola niestandardowa: jeśli potrzebujesz bardziej restrykcyjnej roli, użyj roli niestandardowej.
Przypisz rolę współautor:
Jeśli używasz 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, uruchom następujące polecenie. Zastąp własny identyfikator subskrypcji i opcjonalnie własną nazwą główną usługi. Microsoft Entra ID generuje dla Ciebie tajny klucz:
$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 wartość jest unikatowa w identyfikatorze Entra firmy Microsoft i nie powoduje konfliktu z innymi jednostkami usługi ani rejestracjami aplikacji.
Ważne
Tajemnica jest wyświetlana tylko w tym kroku, gdy zostaje utworzona zasada usługi. Pamiętaj, aby zanotować tajemnicę do wykorzystania w przyszłych krokach.
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 nowy główny składnik 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ń zbędne spacje lub tabulatory.
- Upewnij się, że nazwy zmiennych są poprawne.
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. Pamiętaj, aby zastąpić symbole zastępcze w przykładowym poleceniu własnymi wartościami:
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órą wersję wtyczki Microsoft Azure zainstalować z wersją Valero CLI, zobacz w macierzy zgodności.
Pamiętaj, aby uwzględnić parametr
--use-restic
, aby włączyć kopię zapasową woluminów Kubernetes na poziomie systemu plików przy użyciuRestic
.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 AKS Arc woluminy Kubernetes korzystają z Cluster Shared Volumes (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 zawiera 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 pody 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. Instalować
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 korzystać z 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. Ten adres służy do instalowania 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 opisem w tej sekcji. 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ącą zawartością:
[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 pody 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).
Utworzenie kopii zapasowych na żądanie wszystkich przestrzeni nazw waszego klastra.
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
Tworzenie kopii zapasowej na żądanie dla 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 Velero są synchronizowane z plikami kopii zapasowych 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
, uruchom velero restore --help
, 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
Odinstaluj 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