Questa pagina mostra come eseguire il backup del datastore etcd per l'installazione di GKE su AWS per il ripristino da eventi che potrebbero danneggiare i dati etcd del cluster.
Limitazioni
L'utilizzo di un file di backup per ripristinare i dati etcd è l'ultima risorsa. Sconsigliamo di eseguire il ripristino da un file di backup a meno che il cluster non sia completamente inaccessibile. Contatta l'Assistenza Google per decidere la migliore linea d'azione.
Questa procedura non esegue il backup dei dati dei carichi di lavoro, inclusi gli oggetti PersistentVolume.
Questo backup non può essere utilizzato per ripristinare un cluster da una versione diversa di GKE su AWS.
Backup di un cluster utente
Un backup di cluster utente è uno snapshot dell'archivio etcd del cluster utente. 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 del datastore etcd, segui questi passaggi:
Apri una shell nell'istanza del servizio di gestione in esecuzione etcd per il tuo cluster.
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)
Usa 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
Crea una directory per archiviare i dati di backup etcd.
mkdir ./etcd-backups
Utilizza lo strumento a riga di comando
ps
per trovare l'ID del processo etcd su quell'istanza.ps -e | grep etcd
L'output mostra i dettagli del processo etcd. Il primo elemento è l'ID processo etcd. Nei passaggi seguenti, sostituisci ETCD_PID con questo ID di processo.
Crea uno script all'interno del file system del container etcd per acquisire uno snapshot. Questo script esegue etcdctl per connettersi al daemon etcd ed eseguire uno snapshot per eseguire 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
Utilizza il comando
nsenter
per eseguire lo script nel container etcd e creare lo snapshot.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Copia il file di snapshot fuori dal container etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Copia tutti i file che si trovano 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 di snapshot e i file dei certificati costituiscono un backup completo dello stato del cluster etcd.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
Usa lo strumento
tar
per raggruppare i file etc-backup in un comodo file tar.tar -cvf etcd-backup.tar etcd-backup
Esci sulla macchina 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