Zálohování a obnovení clusterů úloh pomocí Velero a Azure Blob Storage

Toto téma popisuje, jak zálohovat a obnovit AKS v Azure Stack clustery objektů HCI pomocí Velero a Azure Blob jako úložiště. Velero je open source nástroj pro standardní komunitu pro zálohování a obnovování objektů clusterů Kubernetes a trvalých svazků a podporuje celou řadu poskytovatelů úložiště pro ukládání záloh.

Pokud dojde k selhání clusteru úloh a obnovení se nepodaří, můžete použít zálohu Velero k obnovení jeho obsahu a interních objektů rozhraní API do nového clusteru.

Nasazení a konfigurace Velero

K nasazení a konfiguraci Velero použijte následující postup:

  1. Na pracovní stanici nainstalujte rozhraní příkazového řádku Velero. v Windows počítači můžete k instalaci klienta Veleropoužít čokolády :

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

    Potřebujete aktivní předplatné Azure, abyste mohli vytvořit účet úložiště Azure a kontejner objektů BLOB jako Velero vyžaduje pro ukládání záloh. Pokud byste chtěli použít jiné předplatné Azure než ten, který jste použili při vytváření záloh, můžete změnit předplatné Azure. Ve výchozím nastavení Velero 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í v rámci předplatných, musíte zadat ID předplatného, které chcete použít.

    Chcete-li přepnout na předplatné Azure, na kterém chcete vytvořit zálohy, použijte az account příkaz prostředí PowerShell.

    Nejdřív 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)
    

    Potom nastavte předplatné jako aktuální aktivní předplatné:

    az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
    

    V dalším kroku 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í). V příkladu se zobrazuje úč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
    

    Je potřeba vytvořit účet úložiště s globálně jedinečným ID, protože se používá pro DNS. Ukázkový skript níže vygeneruje náhodný název pomocí příkazu uuidgen , ale můžete zvolit libovolný název, který chcete, pokud budete dodržovat pravidla pro uuidgen. Účet úložiště se vytvoří s šifrováním možností ukládání dat v klidovém úložišti (klíče spravované Microsoftem) a je nakonfigurovaný tak, aby povoloval přístup jenom 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 v některých případech jedinečný pro jeden Kubernetes cluster.

    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.

    Nejdřív Získejte ID vašeho předplatného účtu Azure a ID tenanta spuštěním následujícího příkazu:

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

    Než vytvoříte instanční objekt s Contributor rolí. Tato role má přístup na úrovni předplatného, 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 a nezapomeňte si heslo zachytit.

    Pokud používáte Velero k zálohování několika clusterů s více kontejnery objektů blob, doporučujeme vytvořit jedinečné uživatelské jméno pro každý cluster, nikoli výchozí název velero .

    Poznámka

    Pokud pro zálohy a prostředky clusteru používáte jiné předplatné, ujistěte se, že jste v příkazu zadali oba odběry az pomocí --scopes .

    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]`
    

    Ujistěte se, že hodnota pro --name není v konfliktu s jinými instančními objekty služby 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 příslušné 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 do clusteru Velero, včetně všech požadovaných součástí, a pak nasazení spusťte. Nasazení vytvoří obor názvů s názvem velero a umístí do něj nasazení s názvem velero .

    Pokud chcete zálohovat Kubernetes svazky na úrovni systému souborů, použijte REST a nezapomeňte přidat . V současné době AKS na Azure Stack HCI 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 ověřte, jestli je služba Velero spuštěná správně:

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

Použití Velero k zálohování clusteru úloh

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

Pokud chcete spustit základní zálohování na vyžádání pro váš cluster:

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

Postup kontroly zálohování:

velero backup describe <BACKUP-NAME>

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

Obnovení clusteru úloh pomocí Velero

Nejdřív je potřeba vytvořit nový cluster pro 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, kde 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. Zajistěte, aby byl vytvořen objekt zálohování Velero spuštěním následujícího příkazu. 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 <BACKUP-NAME> je k dispozici pravá záloha (), můžete vše obnovit pomocí následujícího příkazu:

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

Odinstalace Velero

Pokud chcete úplně odinstalovat Velero z clusteru, následující příkazy odeberou všechny prostředky, které vytvořil velero install :

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

Další poznámky

  • Velero na Windows: Velero oficiálně nepodporují Windows. v rámci testování mohl tým Velero zálohovat jenom bezstavové Windows aplikace. Nepodporují se klidová integrace a zálohování stavových aplikací nebo trvalých svazků.

  • Velero v nápovědě k rozhraní příkazového řádku: Chcete-li zobrazit všechny možnosti přidružené k určitému příkazu, použijte --help příznak s příkazem. Například velero restore create --help zobrazí všechny možnosti spojené s velero restore create příkazem. Nebo chcete-li zobrazit seznam všech možností nástroje velero restore , spusťte příkaz 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 fungujeklidová integrace