Backup dei cluster utente su AWS

Questa pagina mostra come eseguire il backup dell'archivio dei dati etcd per i cluster Anthos su AWS (GKE su AWS) per il ripristino da eventi che possono danneggiare i dati ecc. del cluster.

Limitazioni

  • L'utilizzo di un file di backup per ripristinare i dati ecc. è un'ultima risorsa. Sconsigliamo di eseguire il ripristino da un file di backup a meno che il cluster non sia completamente interrotto. Contatta l'Assistenza Google se hai bisogno di aiuto per decidere la linea d'azione migliore.

  • Questa procedura non esegue il backup dei dati dei carichi di lavoro, inclusi PersistentVolume.

  • Questo backup non può essere utilizzato per ripristinare un cluster da una versione diversa dei cluster Anthos su AWS.

Backup di un cluster utente

Un backup del cluster utente è un'istantanea dell'archivio del cluster utente e così via. L'archivio etcd contiene tutti gli oggetti Kubernetes e gli oggetti personalizzati che rappresentano lo stato del cluster. Lo snapshot contiene i dati necessari per ricreare i carichi di lavoro stateless del cluster.

Per creare uno snapshot dell'archivio dati etcd, segui questi passaggi:

  1. Apri una shell sull'istanza del servizio di gestione in esecuzione etcd per il cluster.

    1. Trova l'indirizzo IP dell'istanza del servizio di gestione del cluster.

      export CLUSTER_ID=$(terraform output cluster_id)
      export MANAGEMENT_IP=$(aws ec2 describe-instances \
        --filters "Name=tag:Name,Values=$CLUSTER_ID-management-0" \
        --query "Reservations[*].Instances[*].PrivateIpAddress" \
        --output text)
      
    2. Utilizza lo strumento ssh per aprire una connessione all'istanza del servizio di gestione.

      Connessione diretta

      ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
      

      Bastion host

      export BASTION_DNS=$(terraform output bastion_dns_name)
      ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
      
  2. Crea una directory per archiviare i dati di backup etcd.

    mkdir ./etcd-backups
    
  3. Utilizza lo strumento a riga di comando ps per trovare l'ID processo del processo etcd su tale istanza.

    ps -e | grep etcd
    

    L'output mostra i dettagli del processo etcd. Il primo elemento è l'ID processo di etcd. Nei passaggi seguenti, sostituisci ETCD_PID con questo ID processo.

  4. Crea uno script all'interno del file system del contenitore etcd per acquisire uno snapshot. Questo script esegue etcdctl per connettersi al daemon etcd ed eseguire uno snapshot per effettuare il backup del database etcd.

    cat << EOT > /tmp/etcdbackup.sh
    # Extract a snapshot of the anthos-gke etcd state database
    
    export ETCDCTL_API=3
    
    etcdctl \
     --endpoints=https://127.0.0.1:2379 \
     --cacert=/secrets/server-ca.crt \
     --cert=/secrets/server.crt \
     --key=/secrets/server.key \
     snapshot save /tmp/snapshot.db
    EOT
    
    chmod a+x /tmp/etcdbackup.sh
    sudo mv /tmp/etcdbackup.sh /proc/ETCD_PID/root/tmp/etcdbackup.sh
    
  5. Utilizza il comando nsenter per eseguire lo script all'interno del container etcd per creare lo snapshot.

    sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
    
  6. Copia il file dello snapshot dal container etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. Copia tutti i file nella directory /secrets del container etcd nella directory di backup. Questi file contengono i certificati che criptano e convalidano la comunicazione tra etcd e altri processi nel cluster. Insieme, il file dello snapshot e i file dei certificati costituiscono un backup completo dello stato del cluster ecc.

    sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
    
  8. Utilizza lo strumento tar per raggruppare i file di backup e così via in un pratico file tar.

    tar -cvf etcd-backup.tar etcd-backup
    
  9. Esci dal computer locale e utilizza lo strumento scp per copiare il file etcd-backup.tar dall'istanza del servizio di gestione. Questo esempio utilizza le variabili di ambiente BASTION_DNS e MANAGEMENT_IP definite in precedenza.

    scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \
     ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar
    

Per ulteriori informazioni