Questa pagina è dedicata agli operatori dell'infrastruttura.
Questa pagina descrive come eseguire il backup e il ripristino dei cluster creati con Anthos in esecuzione in modalità disconnessa. Queste istruzioni si applicano a tutti i tipi di cluster supportati da Anthos.
Effettua il backup di un cluster
La procedura di backup è composta da due parti. Innanzitutto, viene creato uno snapshot dallo store etcd. Successivamente, i certificati PKI correlati vengono salvati in un file tar. L'archivio etcd è l'archivio di supporto di Kubernetes per tutti i dati del cluster e contiene tutti gli oggetti Kubernetes e gli oggetti personalizzati necessari per gestire lo stato del cluster. I certificati PKI vengono utilizzati per l'autenticazione tramite TLS. Questi dati vengono sottoposti a backup dal piano di controllo del cluster o da uno dei piani di controllo per una alta disponibilità
Ti consigliamo di eseguire regolarmente il backup dei tuoi cluster per assicurarti che i dati degli snapshot siano relativi al momento attuale. La frequenza dei backup dipende dalla frequenza con cui si verificano cambiamenti significativi per i tuoi cluster.
Crea un'istantanea del negozio etcd
In Anthos, un pod denominato etcd-CONTROL_PLANE_NAME
nello spazio dei nomi kube-system esegue l'etcd per quel piano di controllo. Per eseguire il backup dell'archivio etcd del cluster, esegui i passaggi seguenti della workstation di amministrazione:
Utilizza
kubectl get po
per identificare il pod etcd.kubectl --kubeconfig CLUSTER_KUBECONFIG get po -n kube-system \ -l 'component=etcd,tier=control-plane'
La risposta include il nome del pod etcd e il relativo stato.
Utilizza
kubectl describe pod
per visualizzare i container in esecuzione nel pod etcd, incluso il container etcd.kubectl --kubeconfig CLUSTER_KUBECONFIG describe pod ETCD_POD_NAME -n kube-system
Esegui una shell Bash nel container etcd.
kubectl --kubeconfig CLUSTER_KUBECONFIG exec -it \ ETCD_POD_NAME --container etcd --namespace kube-system \ -- bin/sh
Dalla shell all'interno del container etcd, utilizza
etcdctl
(versione 3 dell'API) per salvare uno snapshot,snapshot.db
, dell'archivio etcd.ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ snapshot save /tmp/snapshotDATESTAMP.db
Sostituisci DATESTAMP con la data corrente per evitare sovrascritture di snapshot successivi.
Esci dalla shell del container ed esegui il comando seguente per copiare il file snapshot nella workstation di amministrazione.
kubectl --kubeconfig CLUSTER_KUBECONFIG cp \ kube-system/ETCD_POD_NAME:/tmp/snapshot.db \ --container etcd snapshot.db
Copia il programma binario
etcdctl
dal pod etcd in modo che possa essere utilizzato durante il processo di ripristino.kubectl --kubeconfig CLUSTER_KUBECONFIG cp \ kube-system/ETCD_POD_NAME:/usr/local/bin/etcdctl \ --container etcd etcdctl
Archivia il file di snapshot e il programma binario
etcdctl
in una posizione esterna al cluster e non dipende dall'operazione del cluster.
Archivia i certificati PKI
I certificati di cui eseguire il backup si trovano nella directory /etc/kubernetes/pki
del piano di controllo. I certificati PIK insieme al file etcd
store snapshot.db
sono necessari per recuperare un cluster nel caso in cui
il piano di controllo smetta completamente di funzionare. I passaggi seguenti consentono di creare un file tar contenente i certificati PKI.
Utilizza
ssh
per connetterti al piano di controllo del cluster come root.ssh root@CONTROL_PLANE_NAME
Dal piano di controllo, crea un file tar,
certs_backup.tar.gz
, con i contenuti della directory/etc/kubernetes/pki
.tar -czvf certs_backup.tar.gz -C /etc/kubernetes/pki .
La creazione del file tar all'interno del piano di controllo conserva tutte le autorizzazioni del file del certificato.
Esci dal piano di controllo e copia dal file tar contenente i certificati nella posizione preferita della workstation.
sudo scp root@CONTROL_PLANE_NAME:certs_backup.tar.gz BACKUP_PATH
Ripristinare un cluster
Il ripristino di un cluster da un backup è l'ultima risorsa e deve essere utilizzato quando un cluster ha subito un errore catastrofico e non può essere restituito in altro modo. Ad esempio, i dati etcd sono danneggiati o il pod etcd si trova in un loop di arresto anomalo.
Il processo di ripristino del cluster si compone di due parti. Innanzitutto, i certificati PKI vengono ripristinati nel piano di controllo. Successivamente, vengono ripristinati i dati del negozio etcd.
Ripristina certificati PKI
Supponendo che tu abbia eseguito il backup dei certificati PKI come descritto in Archiviare i certificati PKI, procedi nel seguente modo per ripristinare i certificati dal file tar a un piano di controllo.
Copia il file tar dei certificati PKI (
certs_backup.tar.gz
) dalla workstation al piano di controllo del cluster.sudo scp -r BACKUP_PATH/certs_backup.tar.gz root@CONTROL_PLANE_NAME:~/
Utilizza
ssh
per connetterti al piano di controllo del cluster come root.ssh root@CONTROL_PLANE_NAME
Dal piano di controllo, estrai i contenuti del file tar nella directory
/etc/kubernetes/pki
.tar -xzvf certs_backup.tar.gz -C /etc/kubernetes/pki/
Esci dal piano di controllo.
Ripristina il negozio etcd
Quando si ripristina l'archivio etcd, il processo dipende dalla presenza o meno del cluster in modalità alta disponibilità (HA) e, in caso affermativo, dalla presenza o meno del quorum. Utilizza le seguenti istruzioni per ripristinare l'archivio etcd in una situazione di errore del cluster specifico:
Se il cluster in errore non viene eseguito in modalità ad alta disponibilità, ripristina l'archivio etcd sul piano di controllo seguendo i passaggi riportati di seguito.
Se il cluster è in esecuzione in modalità ad alta disponibilità e il quorum viene conservato, non eseguire alcuna operazione. Se un quorum viene conservato, non è necessario ripristinare i cluster non riusciti.
Se il cluster è in esecuzione in modalità ad alta disponibilità e il quorum viene perso, ripeti i passaggi seguenti per ripristinare l'archivio etcd per ciascun membro non riuscito.
Segui questi passaggi dalla workstation per rimuovere e ripristinare l'archivio etcd su un piano di controllo in caso di cluster non riuscito:
Crea una directory
/backup
nella directory radice del piano di controllo.ssh root@CONTROL_PLANE_NAME "mkdir /backup"
Questo passaggio non è strettamente obbligatorio, ma è consigliabile. I passaggi successivi spiegano come hai creato una directory
/backup
.Copia il file snapshot etcd, il programma binario
snapshot.db
eetcdctl
dalla workstation nella directorybackup
sul piano di controllo del cluster.sudo scp snapshot.db root@CONTROL_PLANE_NAME:/backup sudo scp etcdctl root@CONTROL_PLANE_NAME:/backup
Interrompi i pod statici etcd e kube-apiserver spostando i file manifest dalla directory
/etc/kubernetes/manifests
alla directory/backup
.sudo mv /etc/kubernetes/manifests/etcd.yaml /backup/etcd.yaml sudo mv /etc/kubernetes/manifests/kube-apiserver.yaml /backup/kube-apiserver.yaml
Rimuovi la directory dei dati etcd.
rm -rf /var/lib/etcd/
Esegui il ripristino degli snapshot
etcdctl
utilizzando il programma binario salvato.sudo chmod +x /backup/etcdctl sudo ETCDCTL_API=3 /backup/etcdctl \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ --data-dir=/var/lib/etcd \ --name=CONTROL_PLANE_NAME \ --initial-advertise-peer-urls=https://CONTROL_PLANE_IP:2380 \ --initial-cluster=CONTROL_PLANE_NAME=https://CONTROL_PLANE_IP:2380 \ snapshot restore /backup/snapshot.db
Le voci per
--name
,--initial-advertise-peer-urls
e--initial-cluster
si trovano nel file manifestetcd.yaml
che è stato spostato nella directory/backup
.Assicurati che
/var/lib/etcd
sia stato ricreato e che sia stato creato un nuovo membro in/var/lib/etcd/member
.Cambia il proprietario della directory
/var/lib/etcd/member
in2003
. A partire dalla versione1.10.0
di Anthos, il containeretcd
viene eseguito come utente non root con UID e GID di2003
.sudo chown -R 2003:2003 /var/lib/etcd
Sposta i manifest etcd e kube-apiserver nella directory
/manifests
in modo che i pod statici possano essere riavviati.sudo mv /backup/etcd.yaml /etc/kubernetes/manifests/etcd.yaml sudo mv /backup/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml
Utilizza
etcdctl
per verificare che il membro aggiunto funzioni correttamente.ETCDCTL_API=3 etcdctl --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --endpoints=CONTROL_PLANE_IP:2379 \ endpoint health
Se stai ripristinando più membri non riusciti, una volta ripristinati tutti i membri non riusciti, esegui il comando con gli indirizzi IP del piano di controllo di tutti i membri ripristinati nel campo --endpoints'.
Ad esempio:
ETCDCTL_API=3 etcdctl --cert=/etc/kubernetes/pki/etcd/peer.crt \ --key=/etc/kubernetes/pki/etcd/peer.key \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --endpoints=10.200.0.3:2379,10.200.0.4:2379,10.200.0.5:2379 \ endpoint health
Il completamento corretto di ogni endpoint dovrebbe funzionare correttamente.
Passaggi successivi
- Scopri come eliminare i cluster.