Back-ups maken van workloadclusters met Behulp van Velero
Van toepassing op: AKS in Azure Local 22H2, AKS op Windows Server
In dit artikel wordt beschreven hoe u Velero installeert en gebruikt voor het maken en herstellen van workloads en doelclusters met behulp van Azure Blob Storage of MinIO-opslag in AKS waarvoor Azure Arc is ingeschakeld.
Velero is een opensource-communitystandaardhulpprogramma voor het maken en herstellen van Kubernetes-clusterobjecten en permanente volumes. Het ondersteunt verschillende opslagproviders om de back-ups op te slaan. Als een Kubernetes-doelcluster van AKS Arc vastloopt en niet kan worden hersteld, kunt u een Velero-back-up gebruiken om de inhoud en interne API-objecten te herstellen naar een nieuw cluster.
Als u uw back-ups niet wilt opslaan in Azure Blob Storage, kunt u MinIO gebruiken met Velero. In dit artikel wordt beschreven hoe u Velero installeert en configureert voor het gebruik van Azure Blob Storage of het installeren en configureren van Velero voor het gebruik van MinIO-opslag.
Notitie
Velero biedt geen officiële ondersteuning voor Microsoft Windows. Tijdens het testen kon het Velero-team alleen back-ups maken van stateless Windows-toepassingen.
Restic
integratie en back-ups van stateful toepassingen of permanente volumes werden niet ondersteund.
Vereisten
Voltooi deze vereisten voordat u begint met uw Velero-implementatie:
- Installeer de Azure CLI.
-
Installeren
Chocolatey
. U kuntChocolatey
de Velero-client, die de Velero CLI bevat, installeren op een Windows-computer.
Velero installeren met Azure Blob Storage
In de procedures in deze sectie wordt beschreven hoe u Velero installeert en Azure Blob Storage gebruikt voor back-ups. Als u uw back-ups niet wilt opslaan in Azure, gaat u naar Velero installeren met MiniO-opslag.
Open PowerShell als beheerder.
Meld u aan bij Azure met behulp van de Azure CLI:
az login --use-device-code
Installeer de Velero CLI door de volgende opdracht uit te voeren:
Notitie
De
--use-restic
vlag wordt niet ondersteund op Velero versie 1.10 en hoger. De vlag wordt alleen ondersteund op versie 1.9.x.choco install velero
Wijzig indien nodig het Azure-abonnement dat u wilt gebruiken voor de back-ups.
Standaard worden back-ups opgeslagen in hetzelfde Azure-abonnement als uw VM's en schijven en kunt u geen back-ups herstellen naar een resourcegroep in een ander abonnement. Als u back-up- en herstelbewerkingen tussen abonnementen wilt inschakelen, geeft u een abonnement op dat moet worden gebruikt voor uw back-ups. U kunt deze stap overslaan als u zich al in het abonnement bevindt dat u wilt gebruiken voor uw back-ups.
Schakel over naar het abonnement dat u wilt gebruiken voor uw back-ups:
Gebruik de naam van het abonnement om de abonnements-id te vinden:
$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)
Wijzig vervolgens het abonnement:
az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
Maak een Azure Storage-account en blobcontainer.
Wanneer u Azure Blob Storage gebruikt voor back-ups, vereist Velero een opslagaccount en een blobcontainer om de back-ups op te slaan. In het volgende voorbeeld ziet u het opslagaccount dat is gemaakt in een nieuwe Velero_Backups resourcegroep.
U moet het opslagaccount maken met een wereldwijd unieke id die kan worden gebruikt in DNS. Het voorbeeldscript gebruikt de
uuidgen
app om willekeurig een unieke naam te genereren. U kunt elke methode gebruiken zolang de naam de Azure-naamgevingsregels voor opslagaccounts volgt.Het opslagaccount wordt gemaakt met versleuteling-at-rest-mogelijkheden (met behulp van door Microsoft beheerde sleutels) en is geconfigureerd om alleen toegang via HTTPS-verbindingen toe te staan.
Voer de volgende stappen uit om het opslagaccount en de blobcontainer te maken:
Maak een resourcegroep voor het back-upopslagaccount. Wijzig indien nodig de directory's naar de gewenste locatie en voer de volgende opdrachten uit:
$AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups" az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
Maak het opslagaccount:
$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
Een blobcontainer maken:
$BLOB_CONTAINER="velero" az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
In het voorbeeld wordt een blobcontainer met de naam
velero
gebruikt. U kunt een andere naam gebruiken, bij voorkeur uniek voor één Kubernetes-cluster.
Een service-principal maken:
Haal de abonnements-id en tenant-id voor uw Azure-account op:
$AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv) $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv)
Maak een service-principal met inzenderbevoegdheden.
U kunt een service-principal maken met de rol Inzender of een aangepaste rol gebruiken:
- Rol Inzender: De rol Inzender verleent abonnementsbrede toegang, dus zorg ervoor dat u deze referentie beveiligt als u die rol toewijst.
- Aangepaste rol: Als u een meer beperkende rol nodig hebt, gebruikt u een aangepaste rol.
Wijs de rol Inzender toe:
Als u Velero gebruikt om een back-up te maken van meerdere clusters met meerdere blobcontainers, kunt u een unieke gebruikersnaam voor elk cluster maken in plaats van de naam
velero
te gebruiken.Gebruik de volgende opdracht om een service-principal te maken met de rol Inzender. Vervang uw eigen abonnements-id en eventueel uw eigen service-principalnaam. Microsoft Entra ID genereert een geheim voor u.
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
Breng indien nodig de volgende wijzigingen aan in de opdracht:
Als u van plan bent om verschillende abonnementen te gebruiken voor uw workloadcluster en uw Velero-back-upbestanden, geeft u beide abonnements-id's op, zoals in het volgende voorbeeld:
$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)
Als u de naam van uw service-principal niet wilt gebruiken
velero
, moet u ervoor zorgen dat de--name
door u gekozen id uniek is in Microsoft Entra-id en niet conflicteert met andere service-principals of app-registraties.
Belangrijk
Het geheim wordt alleen tijdens deze stap weergegeven wanneer de service-principal wordt gemaakt. Noteer het geheim voor gebruik in toekomstige stappen.
Een aangepaste rol gebruiken:
Als u de minimale resourceprovideracties wilt inschakelen, maakt u een aangepaste rol en wijst u die rol toe aan de service-principal.
Maak een bestand met de naam azure-role.json met de volgende inhoud. Vervang uw eigen aangepaste rolnaam en abonnements-id:
{ "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>" ] }
Maak de aangepaste rol en service-principal:
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)
Zie Machtigingen instellen voor Velero voor meer informatie over het maken van aangepaste rollen.
Haal de naam van de service-principal op en wijs die naam toe aan de AZURE_CLIENT_ID variabele:
$AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
Notitie
Service-principals verlopen. Voer deze opdracht uit om erachter te komen wanneer uw nieuwe service-principal verloopt:
az ad sp show --id $AZURE_CLIENT_ID
Maak een bestand dat de variabelen bevat die de Velero-installatie vereist. De opdracht ziet er ongeveer als volgt uit:
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
Belangrijk
Verwijder dit bestand nadat u Velero hebt geïnstalleerd. Het clientgeheim is in tekst zonder opmaak, wat een beveiligingsrisico kan vormen.
Controleer voordat u doorgaat of het bestand juist is opgemaakt. De bestandsnaamextensie maakt niet uit.
- Verwijder eventuele extra spaties of tabbladen.
- Zorg ervoor dat de namen van de variabelen juist zijn.
Installeer En start Velero.
Installeer Velero op het cluster en start de implementatie. Met deze procedure maakt u een naamruimte
velero
met de naamruimte en voegt u een implementatie toe met de naamruimtevelero
.Installeer Velero met behulp van de volgende opdracht. U moet de voorbeeldopdracht aanpassen.
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
Stel indien nodig de volgende variabelen in:
Met de opdracht wordt de Microsoft Azure-invoegtoepassing geïnstalleerd, die compatibel moet zijn met de Velero CLI-versie die u gebruikt. De voorbeeldopdracht maakt gebruik van Microsoft Azure-invoegtoepassing versie 1.5.0, die compatibel is met de nieuwste Velero CLI-versie, 1.9.0. Zie de compatibiliteitsmatrix voor meer informatie over welke versie van de Microsoft Azure-invoegtoepassing moet worden geïnstalleerd met uw Valero CLI-versie.
Zorg ervoor dat u de parameter opneemt voor het
--use-restic
inschakelen van back-ups van Kubernetes-volumes op bestandssysteemniveau met behulp vanRestic
.Restic
kan worden gebruikt om een back-up te maken van elk type Kubernetes-volume. Standaard biedt Velero ondersteuning voor het maken van momentopnamen van permanente volumes voor Amazon EBS Volumes, Azure Managed Disks en Google Persistent Disks. In AKS Arc maken Kubernetes-volumes gebruik van CSV's (Cluster Shared Volumes) om gegevens op te slaan.Restic
Daarom is het nodig om permanente momentopnamen van volumes in te schakelen. AKS Arc biedt momenteel geen ondersteuning voor momentopnamen van volumes.subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID
is optioneel. U hoeft het alleen op te nemen als Velero en het workloadcluster verschillende abonnements-id's hebben. Als ze hetzelfde Azure-abonnement gebruiken, kunt u desubscriptionId
parameter verwijderen en geeft het bestand credentials-velero.txt die informatie.
De Velero-service wordt automatisch gestart bij de installatie.
Controleer of de Velero-service correct wordt uitgevoerd:
kubectl -n velero get pods kubectl logs deployment/velero -n velero
De
get pods
opdracht moet laten zien dat de Velero-pods worden uitgevoerd.
Velero installeren met MinIO-opslag
In de procedures in deze sectie wordt beschreven hoe u Velero installeert en MinIO-opslag gebruikt voor back-ups. Als u liever Azure Blob Storage gebruikt voor uw back-ups, gaat u naar Velero installeren met Azure Blob Storage.
Als u uw back-ups niet wilt opslaan in MinIO, gaat u naar Velero instellen om Azure Blob Storage te gebruiken.
Installeer de Velero CLI door de volgende opdracht uit te voeren. Installeer
Chocolately
deze als u dat nog niet hebt gedaan.choco install velero
MinIO installeren:
Maak een permanent volume om de MinIO-back-up op te slaan. In het voorbeeld wordt een permanent volume gemaakt in de standaardopslagklasse in AKS Arc, die al bestaat.
Maak een YAML-bestand met de naam minio-pvc-storage.yaml met de volgende inhoud:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio-pv-claim spec: storageClassName: default accessModes: - ReadWriteOnce resources: requests: storage: 100Gi
Maak het permanente volume door deze opdracht uit te voeren:
kubectl create -f minio-pvc-storage.yaml
Maak een implementatiebestand, minio-deployment.yaml, om MinIO te starten. Neem de volgende inhoud op. De implementatie gebruikt het permanente volume dat u hebt gemaakt.
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"
Maak vervolgens de implementatie:
kubectl create -f minio-deployment.yaml
Maak een Kubernetes-service met de naam minio-service.yaml. Deze service levert externe IP-adressen aan de MinIO-pod.
Maak een YAML-bestand met de volgende instellingen om de service te configureren:
apiVersion: v1 kind: Service metadata: name: minio-service spec: type: LoadBalancer ports: - port: 9000 targetPort: 9000 protocol: TCP selector: app: minio
Maak vervolgens de service:
kubectl create -f mino-service.yaml
Haal het externe IP-adres van de MinIO-pod op door de volgende opdracht uit te voeren. U gebruikt dat adres om Velero te installeren.
kubectl get svc
Als u wilt controleren of MinIO actief is, meldt u zich aan bij het IP-adres in een browser of gebruikt u de MinIO-client, zoals hieronder wordt beschreven.
Installeer de MinIO-client en blader door de MinIO-bestanden.
Download de MinIO-client:
Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
Stel vervolgens een alias in:
mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
Blader tot slot door de MinIO-installatie:
mc ls minio
Maak een bucket om Velero-bestanden op te slaan. Deze bucket wordt gebruikt in de Velero-installatie.
mc mb minio/velero-backup
Maak een MinIO-referentiebestand minio.credentials met de volgende informatie:
[default] aws_access_key_id=<minio_access_key> aws_secret_access_key=<minio_secret_key>
Velero installeren:
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
Voordat u deze opdracht uitvoert, controleert u de naam van de bucket, uw MinIO-referenties en het externe IP-adres van MinIO.
Controleer of de Velero-service correct wordt uitgevoerd:
kubectl -n velero get pods kubectl logs deployment/velero -n Velero
De
get pods
opdracht moet laten zien dat de Velero-pods worden uitgevoerd.
Een back-up maken van een cluster
U kunt een back-up maken van alle objecten in uw cluster of objecten filteren op type, naamruimte en/of label.
Maak een back-up
Gebruik de Opdracht Velero backup create
om back-ups te maken naar uw gekozen opslag. In de volgende voorbeelden wordt de --default-volumes-to-restic
vlag gebruikt, waarmee een momentopname van de permanente volumes wordt gemaakt. Zie de Velero Backup Reference voor andere back-upopties.
Back-up op aanvraag van alle naamruimten in uw cluster:
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Back-up op aanvraag van één naamruimte in uw cluster:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
Back-up op aanvraag van meerdere geselecteerde naamruimten in uw cluster:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
Back-upvoortgang controleren
Voer deze opdracht uit om de voortgang van een back-up te controleren:
velero backup describe <BACKUP-NAME>
Als u Azure Blob Storage gebruikt voor uw back-ups, kunt u uw back-up bekijken in uw Azure Storage-account onder de blob/container die u hebt gemaakt.
Een cluster herstellen
Als u een cluster wilt herstellen, moet u een nieuw cluster maken om het oude cluster te herstellen naar. U kunt een back-up van een cluster niet herstellen naar een bestaand cluster.
Met de restore
opdracht kunt u alle objecten en permanente volumes herstellen op basis van een eerder gemaakte back-up. U kunt ook alleen een gefilterde subset van objecten en permanente volumes herstellen. Zie Resourcefiltering voor meer back-upopties.
Op het cluster waarnaar u de back-up wilt herstellen (het doelcluster):
Implementeer Velero met behulp van de bovenstaande instructies. Gebruik dezelfde Azure-referenties die u hebt gebruikt voor het broncluster.
Zorg ervoor dat het Velero-back-upobject is gemaakt door de volgende opdracht uit te voeren. Velero-resources worden gesynchroniseerd met de back-upbestanden in cloudopslag.
velero backup describe <BACKUP-NAME>
Nadat u hebt bevestigd dat de juiste back-up (
BACKUP-NAME
) aanwezig is, herstelt u alle objecten in de back-up:velero restore create --from-backup <BACKUP-NAME>
Hulp krijgen bij Velero-opdrachten
Als u alle opties wilt zien die zijn gekoppeld aan een specifieke Velero-opdracht, gebruikt u de --help
vlag met de opdracht. Toont bijvoorbeeld velero restore create --help
alle opties die zijn gekoppeld aan de velero restore create
opdracht.
Als u bijvoorbeeld alle opties van velero restore
, voert u uit velero restore --help
, waarmee de volgende informatie wordt geretourneerd:
velero restore [command]
Available Commands:
create Create a restore
delete Delete restores
describe Describe restores
get Get restores
logs Get restore logs
Velero verwijderen
Als u Velero wilt verwijderen uit uw cluster en alle resources wilt verwijderen die zijn gemaakt door de Installatie van Velero, voert u de volgende opdrachten uit:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero