Sdílet prostřednictvím


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:

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.

  1. Spusťte PowerShell jako správce.

  2. Přihlaste se k Azure pomocí Azure CLI:

    az login --use-device-code   
    
  3. 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   
    
  4. 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:

    1. 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)
      
    2. Potom změňte předplatné:

      az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
      
  5. 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:

    1. 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
      
    2. 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
      
    3. 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.

  6. Vytvoření instančního objektu:

    1. 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) 
      
    2. 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 velerovytvoř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.

      1. 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>"
            ]
        }
        
      2. 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.

  7. 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.

  8. 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é.
  9. 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ů.

    1. 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 odebrat subscriptionId a soubor credentials-velero.txt tyto informace poskytne.

      Služba Velero se spustí automaticky při instalaci.

    2. 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.

  1. 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
    
  2. Nainstalovat MinIO:

    1. 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.

      1. 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
        
      2. 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
        
    2. 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
      
    3. 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
      
    4. 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
      
    5. Vytvořte kontejner pro ukládání souborů Velero. Tento kbelík se použije v instalaci Velero.

      mc mb minio/velero-backup
      
    6. 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> 
      
  3. 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.

  4. 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):

  1. Nasaďte Velero pomocí výše uvedených pokynů. Použijte stejné přihlašovací údaje Azure, které jste použili pro zdrojový cluster.

  2. 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>
    
  3. 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

Další kroky