Zálohování nebo obnovení clusteru úloh s využitím Velero a Azure Blob Storage

Můžete vytvořit zálohu nebo obnovení clusteru úloh ze zálohy na Azure Kubernetes Service (AKS) ve službě Azure Stack HCI a clusterech úloh Windows Serveru s využitím Velera a objektu blob Azure jako úložiště. Velero je opensourcový standardní nástroj komunity, který můžete použít k zálohování a obnovení objektů clusteru Kubernetes a trvalých svazků. Podporuje několik poskytovatelů úložiště k ukládání záloh.

Pokud dojde k chybovému ukončení clusteru úloh a nepodaří se obnovení, můžete pomocí zálohy Velero obnovit jeho obsah a interní objekty rozhraní API do nového clusteru.

Nasazení a konfigurace Velero

Pomocí následujících kroků nasaďte a nakonfigurujte Velero:

  1. Nainstalujte na pracovní stanici Rozhraní příkazového řádku Velero. Na Windows počítači můžete pomocí Chocolatey nainstalovat klienta Velero:

    choco install velero
    
  2. Nastavte účet úložiště Azure a kontejner objektů blob.

    K vytvoření účtu úložiště Azure a kontejneru objektů blob potřebujete aktivní předplatné Azure, protože Velero vyžaduje, aby se zálohy ukládaly. Pokud chcete použít jiné předplatné Azure než předplatné, které se používá při vytváření záloh, můžete předplatné Azure změnit. Velero ve výchozím nastavení ukládá zálohy do stejného předplatného 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 zálohování a obnovení napříč předplatnými, musíte zadat ID předplatného, které chcete použít.

    Pokud chcete přepnout na předplatné Azure, na které chcete vytvořit zálohy, použijte příkaz PowerShellu az account .

    Nejprve vyhledejte název 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)
    

    Za druhé, nastavte předplatné na aktuální aktivní předplatné:

    az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
    

    Dále vytvořte skupinu prostředků pro účet úložiště záloh, spusťte následující příkaz (podle potřeby změňte umístění). Příklad ukazuje účet úložiště vytvořený v samostatné Velero_Backups skupině prostředků.

    AZURE_BACKUP_RESOURCE_GROUP=Velero_Backups
    az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
    

    Musíte vytvořit účet úložiště s globálně jedinečným ID, protože se používá pro DNS. Následující ukázkový skript vygeneruje náhodný název pomocí uuidgenpříkazu , ale můžete zvolit libovolný název, který chcete použít, pokud postupujete podle pravidel pojmenování Azure pro účty úložiště. Účet úložiště se vytvoří s šifrováním pro neaktivní uložená data (klíče spravované Microsoftem) a je nakonfigurovaný tak, aby povoloval přístup pouze přes PROTOKOL HTTPS.

    Pokud chcete vytvořit účet úložiště, spusťte následující příkaz:

    AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
    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
    

    Nakonec vytvořte kontejner objektů blob s názvem velero. Můžete zvolit jiný název, ale měl by být nejlépe jedinečný pro jeden cluster Kubernetes.

    BLOB_CONTAINER=velero
    az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
    
  3. Nastavte oprávnění pro Velero a vytvořte instanční objekt.

    Nejprve pomocí následujícího příkazu získejte ID předplatného účtu Azure a ID tenanta:

    AZURE_SUBSCRIPTION_ID=`az account list --query '[?isDefault].id' -o tsv`
    AZURE_TENANT_ID=`az account list --query '[?isDefault].tenantId' -o tsv`
    

    Dále vytvořte instanční objekt s Contributor rolí. Tato role má přístup pro celé předplatné, takže byste měli chránit tyto přihlašovací údaje. Při vytváření instančního objektu nechte rozhraní příkazového řádku vygenerovat heslo za vás a ujistěte se, že heslo zachytíte.

    Pokud používáte Velero k zálohování více clusterů s více kontejnery objektů blob, doporučujeme místo výchozího názvu velerovytvořit jedinečné uživatelské jméno na cluster.

    Poznámka

    Pokud pro zálohy a prostředky clusteru používáte jiné předplatné, nezapomeňte v příkazu zadat obě předplatná az pomocí --scopespříkazu .

    AZURE_CLIENT_SECRET=`az ad sp create-for-rbac --name "velero" --role "Contributor" --scopes /subscriptions/<subscription_id> --query 'password' -o tsv \
    --scopes  /subscriptions/$AZURE_SUBSCRIPTION_ID[ /subscriptions/$AZURE_BACKUP_SUBSCRIPTION_ID]`
    

    Ujistěte se, že hodnota není --name v konfliktu s jinými instančními objekty a registracemi aplikací.

    Po vytvoření instančního objektu získejte ID klienta spuštěním následujícího příkazu:

    AZURE_CLIENT_ID=`az ad sp list --display-name "velero" --query '[0].appId' -o tsv`
    

    Nakonec vytvořte soubor, který obsahuje všechny relevantní proměnné prostředí. Příkaz vypadá jako v následujícím příkladu:

    cat << EOF  > ./credentials-velero
    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_RESOURCE_GROUP}
    AZURE_CLOUD_NAME=AzurePublicCloud
    EOF
    
  4. Nainstalujte a spusťte Velero.

    Nainstalujte Velero, včetně všech požadavků, do clusteru a pak spusťte nasazení. Nasazení vytvoří název velero oboru názvů a umístí do něj nasazení velero .

    Pokud chcete zálohovat svazky Kubernetes na úrovni systému souborů, použijte Restic a nezapomeňte přidat --use-restic. V současné době AKS na Azure Stack HCI a Windows Serveru nepodporuje snímky svazků.

    velero install \
       --provider azure \
       --plugins velero/velero-plugin-for-microsoft-azure:v1.3.0 \
       --bucket $BLOB_CONTAINER \
       --secret-file ./credentials-velero \
       --backup-location-config resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID[,subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID] \
       --use-restic
    
  5. Spuštěním následujícího příkazu zkontrolujte, jestli je služba Velero správně spuštěná:

    kubectl -n velero get pods
    kubectl logs deployment/velero -n velero
    

Použití Velera k vytvoření zálohování clusteru úloh

Můžete zálohovat nebo obnovit všechny objekty v clusteru nebo můžete filtrovat objekty podle typu, oboru názvů nebo popisku.

Spuštění základní zálohy clusteru na vyžádání:

velero backup create <BACKUP-NAME> --default-volumes-to-restic

Postup kontroly průběhu zálohování:

velero backup describe <BACKUP-NAME>

Po provedení výše uvedených pokynů můžete zálohu zobrazit v účtu úložiště Azure v kontejneru objektů blob, který jste vytvořili.

Použití Velera k obnovení clusteru úloh

Nejprve musíte vytvořit nový cluster, do který chcete provést obnovení, protože nemůžete obnovit zálohu clusteru do existujícího clusteru. Operace obnovení 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ů.

V cílovém clusteru, ve kterém chcete obnovit zálohu, spusťte následující kroky:

  1. Nasaďte a nakonfigurujte Velero pomocí stejných přihlašovacích údajů Azure jako u zdrojového clusteru.

  2. Spuštěním následujícího příkazu se ujistěte, že je objekt velero Backup 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. Jakmile ověříte, že je k dispozici správná záloha (<BACKUP-NAME>), můžete všechno obnovit pomocí následujícího příkazu:

    velero restore create --from-backup <BACKUP-NAME>
    

Odinstalace Velero

Pokud chcete z clusteru úplně odinstalovat Velero, odeberou se všechny prostředky vytvořené pomocí velero installnásledujících příkazů:

kubectl delete namespace/velero clusterrolebinding/velero
kubectl delete crds -l component=velero

Další poznámky

  • Velero na Windows: Velero oficiálně nepodporuje Windows. V testování tým Velero dokázal zálohovat pouze bezstavové Windows aplikace. Restická integrace a zálohování stavových aplikací nebo trvalých svazků se nepodporují.

  • Nápověda k rozhraní příkazového řádku Velero: Pokud chcete zobrazit všechny možnosti přidružené ke konkrétnímu příkazu, 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. Nebo pokud chcete zobrazit seznam všech možností velero restore, spusťte velero restore --help:

      velero restore [command]
      Available Commands:
      create      Create a restore
      delete      Delete restores
      describe    Describe restores
      get         Get restores
      logs        Get restore logs
    

Reference

Jak Velero WorksRestic integrace