Zálohování, obnovení clusterů úloh pomocí Velero
Platí pro: AKS v Azure Stack HCI 22H2, AKS na Windows Serveru
Tento článek popisuje, jak nainstalovat a používat Velero k zálohování a obnovení úloh a cílových clusterů pomocí služby Azure Blob Storage nebo MinIO Storage v AKS, které podporuje Azure Arc.
Velero je opensourcový standardní nástroj komunity pro zálohování a obnovení objektů clusteru Kubernetes a trvalých svazků. Podporuje různé poskytovatele úložiště pro ukládání záloh. Pokud dojde k chybovému ukončení clusteru Kubernetes cílové služby AKS Arc a nepodaří se obnovení, můžete pomocí zálohy Velero obnovit jeho obsah a interní objekty rozhraní API do nového clusteru.
Pokud nechcete ukládat zálohy ve službě Azure Blob Storage, můžete s Velerem použít MinIO. Tento článek popisuje, jak nainstalovat a nakonfigurovat Velero pro použití služby Azure Blob Storage nebo instalaci a konfiguraci Velero pro použití úložiště MinIO.
Poznámka:
Velero oficiálně nepodporuje Microsoft Windows. V rámci testování byl tým Velero schopen zálohovat pouze bezstavové aplikace pro Windows. Restic
integrace a zálohování stavových aplikací nebo trvalých svazků se nepodporují.
Požadavky
Před zahájením nasazení Velero proveďte tyto požadavky:
- Nainstalujte Azure CLI.
- Nainstalovat
Chocolatey
. Můžete použítChocolatey
k instalaci klienta Velero, který zahrnuje Rozhraní příkazového řádku Velero, na počítači s Windows.
Instalace Velera se službou Azure Blob Storage
Postupy v této části popisují, jak nainstalovat Velero a použít Azure Blob Storage pro zálohování. Pokud nechcete ukládat zálohy v Azure, přejděte do instalace Velero s úložištěm MiniO.
Spusťte PowerShell jako správce.
Přihlaste se k Azure pomocí Azure CLI:
az login --use-device-code
Nainstalujte Rozhraní příkazového řádku Velero spuštěním následujícího příkazu:
Poznámka:
Příznak
--use-restic
není podporován ve Velero verze 1.10 a novější. Příznak je podporován pouze ve verzi 1.9.x.choco install velero
V případě potřeby změňte předplatné Azure, které chcete použít pro zálohování.
Velero ve výchozím nastavení ukládá zálohy ve stejném předplatném Azure jako virtuální počítače a disky a neumožňuje obnovení záloh do skupiny prostředků v jiném předplatném. Pokud chcete povolit operace zálohování a obnovení napříč předplatnými, zadejte předplatné, které se má použít pro vaše zálohy. Tento krok můžete přeskočit, pokud už jste v předplatném, které chcete použít pro zálohy.
Přepněte na předplatné, které chcete použít pro zálohy:
Pomocí názvu předplatného vyhledejte ID předplatného:
$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)
Potom změňte předplatné:
az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
Vytvořte účet úložiště Azure a kontejner objektů blob.
Při použití služby Azure Blob Storage pro zálohování vyžaduje Velero k ukládání záloh účet úložiště a kontejner objektů blob. Následující příklad ukazuje účet úložiště vytvořený v nové skupině prostředků Velero_Backups .
Musíte vytvořit účet úložiště s globálně jedinečným ID, které je možné použít v DNS. Ukázkový skript používá
uuidgen
aplikaci k náhodnému vygenerování jedinečného názvu. Libovolnou metodu můžete použít, pokud název odpovídá pravidlu pojmenování Azure pro účty úložiště.Účet úložiště se vytvoří s možnostmi šifrování neaktivních uložených dat (pomocí spravovaných klíčů Microsoftu) a je nakonfigurovaný tak, aby povoloval přístup jenom přes připojení HTTPS.
Pokud chcete vytvořit účet úložiště a kontejner objektů blob, postupujte takto:
Vytvořte skupinu prostředků pro účet úložiště zálohování. V případě potřeby změňte adresáře na upřednostňované umístění a spusťte následující příkazy:
$AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups" az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
Vytvořte účet úložiště:
$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
Vytvoření kontejneru objektů blob:
$BLOB_CONTAINER="velero" az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
Příklad používá kontejner objektů blob s názvem
velero
. Můžete použít jiný název, nejlépe jedinečný pro jeden cluster Kubernetes.
Vytvoření instančního objektu:
Získejte ID předplatného a ID tenanta pro váš účet Azure:
$AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv) $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv)
Vytvořte instanční objekt s oprávněními přispěvatele.
Instanční objekt můžete vytvořit s rolí Přispěvatel nebo použít vlastní roli:
- Role přispěvatele: Role Přispěvatel uděluje přístup na úrovni předplatného, proto při přiřazování této role nezapomeňte tyto přihlašovací údaje chránit.
- Vlastní role: Pokud potřebujete více omezující roli, použijte vlastní roli.
Přiřaďte roli Přispěvatel:
Pokud budete používat Velero k zálohování více clusterů s více kontejnery objektů blob, můžete místo názvu
velero
vytvořit jedinečné uživatelské jméno pro každý cluster.K vytvoření instančního objektu s rolí Přispěvatel použijte následující příkaz. Nahraďte vlastní ID předplatného a volitelně i vlastní název instančního objektu. Microsoft Entra ID pro vás vygeneruje tajný kód.
$AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID)
V případě potřeby proveďte tyto úpravy příkazu:
Pokud pro cluster úloh a záložní soubory Velero plánujete používat různá předplatná, zadejte obě ID předplatného, jak je znázorněno v následujícím příkladu:
$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)
Pokud nechcete jako hlavní název služby používat
velero
, ujistěte se, že--name
je v ID Microsoft Entra jedinečný a není v konfliktu s jinými instančními objekty nebo registracemi aplikací.
Důležité
Tajný kód se zobrazí pouze během tohoto kroku při vytvoření instančního objektu. Nezapomeňte si poznamenejte tajný kód pro použití v budoucích krocích.
Použijte vlastní roli:
Pokud chcete povolit minimální akce poskytovatele prostředků, vytvořte vlastní roli a přiřaďte tuto roli instančnímu objektu.
Vytvořte soubor s názvem azure-role.json s následujícím obsahem. Nahraďte vlastní název role a ID předplatného:
{ "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>" ] }
Vytvořte vlastní roli a instanční objekt:
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)
Další informace o vytváření vlastních rolí najdete v tématu Nastavení oprávnění pro Velero.
Získejte název instančního objektu a přiřaďte ho AZURE_CLIENT_ID proměnné:
$AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
Poznámka:
Platnost instančních objektů vyprší. Pokud chcete zjistit, kdy vyprší platnost nového instančního objektu, spusťte tento příkaz:
az ad sp show --id $AZURE_CLIENT_ID
.Vytvořte soubor obsahující proměnné, které vyžaduje instalace Velero. Příkaz vypadá nějak takto:
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
Důležité
Odstraňte tento soubor po instalaci Velero. Tajný klíč klienta je v prostém textu, což může představovat bezpečnostní riziko.
Než budete pokračovat, ověřte, že je soubor správně naformátovaný. Přípona názvu souboru nezáleží.
- Odeberte všechny nadbytečné mezery nebo tabulátory.
- Ujistěte se, že jsou názvy proměnných správné.
Nainstalujte a spusťte Velero.
Nainstalujte Do clusteru Velero a spusťte nasazení. Tento postup vytvoří volaný
velero
obor názvů a přidá nasazení pojmenovanévelero
do oboru názvů.Nainstalujte Velero pomocí následujícího příkazu. Ukázkový příkaz budete muset přizpůsobit.
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
Podle potřeby nastavte následující proměnné:
Příkaz nainstaluje modul plug-in Microsoft Azure, který musí být kompatibilní s verzí Rozhraní příkazového řádku Velero, kterou používáte. Ukázkový příkaz používá modul plug-in Microsoft Azure verze 1.5.0, který je kompatibilní s nejnovější verzí Rozhraní příkazového řádku Velero 1.9.0. Pokud chcete zjistit, jakou verzi modulu plug-in Microsoft Azure chcete nainstalovat s vaší verzí rozhraní příkazového řádku Valero, podívejte se na matici kompatibility.
Nezapomeňte zahrnout
--use-restic
parametr pro povolení zálohování svazků Kubernetes na úrovni systému souborů pomocíRestic
.Restic
lze použít k zálohování libovolného typu svazku Kubernetes. Velero ve výchozím nastavení podporuje pořizování snímků trvalých svazků pro svazky Amazon EBS, Azure Spravované disky a Trvalé disky Google. Svazky Kubernetes v AKS Arc používají sdílené svazky clusteru k ukládání dat.Restic
Proto je potřeba povolit snímky trvalých svazků. AKS Arc v současné době nepodporuje snímky svazků.subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID
je volitelné. Musíte ho zahrnout jenom v případě, že Velero a cluster úloh mají různá ID předplatného. Pokud používají stejné předplatné Azure, můžete parametr odebratsubscriptionId
a soubor credentials-velero.txt tyto informace poskytne.
Služba Velero se spustí automaticky při instalaci.
Zkontrolujte, jestli je služba Velero spuštěná správně:
kubectl -n velero get pods kubectl logs deployment/velero -n velero
Příkaz
get pods
by měl zobrazit, že jsou spuštěné pody Velero.
Instalace Velera s úložištěm MinIO
Postupy v této části popisují, jak nainstalovat Velero a použít úložiště MinIO pro zálohy. Pokud dáváte přednost použití služby Azure Blob Storage pro vaše zálohy, přejděte do instalace Velero se službou Azure Blob Storage.
Pokud nechcete ukládat zálohy v MinIO, přejděte na Nastavení Velera pro použití služby Azure Blob Storage.
Nainstalujte Rozhraní příkazového řádku Velero spuštěním následujícího příkazu. Pokud jste to ještě neudělali, nainstalujte
Chocolately
ji.choco install velero
Nainstalovat MinIO:
Vytvořte trvalý svazek pro uložení zálohy MinIO. Příklad vytvoří trvalý svazek ve výchozí třídě úložiště v AKS Arc, který již existuje.
Vytvořte soubor YAML s názvem minio-pvc-storage.yaml s následujícím obsahem:
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: minio-pv-claim spec: storageClassName: default accessModes: - ReadWriteOnce resources: requests: storage: 100Gi
Spuštěním tohoto příkazu vytvořte trvalý svazek:
kubectl create -f minio-pvc-storage.yaml
Vytvořte soubor nasazení minio-deployment.yaml pro spuštění MinIO. Zahrňte následující obsah. Nasazení bude používat trvalý svazek, který jste vytvořili.
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"
Pak vytvořte nasazení:
kubectl create -f minio-deployment.yaml
Vytvořte službu Kubernetes s názvem minio-service.yaml. Tato služba poskytne externí IP adresy podu MinIO.
Vytvořte soubor YAML s následujícím nastavením pro konfiguraci služby:
apiVersion: v1 kind: Service metadata: name: minio-service spec: type: LoadBalancer ports: - port: 9000 targetPort: 9000 protocol: TCP selector: app: minio
Pak vytvořte službu:
kubectl create -f mino-service.yaml
Spuštěním následujícího příkazu získejte externí IP adresu podu MinIO. Tuto adresu použijete k instalaci Velero.
kubectl get svc
Pokud chcete zkontrolovat, jestli je MinIO v provozu, přihlaste se k IP adrese v prohlížeči nebo použijte klienta MinIO, jak je popsáno níže.
Nainstalujte klienta MinIO a projděte si soubory MinIO.
Stáhněte si klienta MinIO:
Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
Dále nastavte alias:
mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
Nakonec si projděte instalaci MinIO:
mc ls minio
Vytvořte kontejner pro ukládání souborů Velero. Tento kbelík se použije v instalaci Velero.
mc mb minio/velero-backup
Vytvořte soubor s přihlašovacími údaji MinIO minio.credentials s následujícími informacemi:
[default] aws_access_key_id=<minio_access_key> aws_secret_access_key=<minio_secret_key>
Nainstalujte 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
Před spuštěním tohoto příkazu zkontrolujte název kontejneru, přihlašovací údaje MinIO a externí IP adresu MinIO.
Zkontrolujte, jestli je služba Velero spuštěná správně:
kubectl -n velero get pods kubectl logs deployment/velero -n Velero
Příkaz
get pods
by měl zobrazit, že jsou spuštěné pody Velero.
Zálohování clusteru
Můžete zálohovat nebo obnovovat všechny objekty v clusteru nebo filtrovat objekty podle typu, oboru názvů a/nebo popisku.
Vytvoření zálohy
Pomocí příkazu Velero backup create
vytvořte zálohy do zvoleného úložiště. Následující příklady používají --default-volumes-to-restic
příznak, který vytvoří snímek trvalých svazků. Další možnosti zálohování najdete v referenčních informacích k zálohování Velero.
Zálohování všech oborů názvů v clusteru na vyžádání:
velero backup create <BACKUP-NAME> --default-volumes-to-restic
Zálohování jednoho oboru názvů na vyžádání v clusteru:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
Zálohování několika vybraných oborů názvů na vyžádání v clusteru:
velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
Kontrola průběhu zálohování
Pokud chcete zkontrolovat průběh zálohování, spusťte tento příkaz:
velero backup describe <BACKUP-NAME>
Pokud pro zálohy používáte službu Azure Blob Storage, můžete ji zobrazit v účtu úložiště Azure v rámci objektu blob nebo kontejneru, který jste vytvořili.
Obnovení clusteru
Pokud chcete obnovit cluster, musíte vytvořit nový cluster, aby se starý cluster obnovil. Zálohu clusteru nemůžete obnovit do existujícího clusteru.
Příkaz restore
umožňuje obnovit všechny objekty a trvalé svazky z dříve vytvořené zálohy. Můžete také obnovit pouze filtrovanou podmnožinu objektů a trvalých svazků. Další možnosti zálohování najdete v tématu Filtrování prostředků.
V clusteru, do kterého chcete obnovit zálohu ( cílový cluster):
Nasaďte Velero pomocí výše uvedených pokynů. Použijte stejné přihlašovací údaje Azure, které jste použili pro zdrojový cluster.
Spuštěním následujícího příkazu se ujistěte, že byl objekt zálohy Velero vytvořen. Prostředky Velero se synchronizují se záložními soubory v cloudovém úložišti.
velero backup describe <BACKUP-NAME>
Po potvrzení, že je k dispozici správná záloha (
BACKUP-NAME
), obnovte všechny objekty v zálohování:velero restore create --from-backup <BACKUP-NAME>
Získání nápovědy k příkazům Velero
Pokud chcete zobrazit všechny možnosti přidružené ke konkrétnímu příkazu Velero, použijte --help
příznak s příkazem. Zobrazí se například velero restore create --help
všechny možnosti přidružené k velero restore create
příkazu.
Pokud například chcete zobrazit seznam všech možností velero restore
, spuštění velero restore --help
, která vrátí následující informace:
velero restore [command]
Available Commands:
create Create a restore
delete Delete restores
describe Describe restores
get Get restores
logs Get restore logs
Odinstalace Velero
Pokud chcete odinstalovat Velero z clusteru a odebrat všechny prostředky vytvořené instalací Velero, spusťte následující příkazy:
kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero