Auf dieser Seite wird gezeigt, wie Sie den etcd-Datenspeicher für Ihre GKE on AWS-Installation sichern, um die Wiederherstellung nach Ereignissen zu ermöglichen, die die etcd-Daten Ihres Clusters beschädigen könnten.
Beschränkungen
Die Verwendung einer Sicherungsdatei zum Wiederherstellen Ihrer etcd-Daten sollte das letzte Mittel sein. Wir empfehlen die Wiederherstellung aus einer Sicherungsdatei nur, wenn der Cluster vollständig fehlerhaft ist. Wenden Sie sich an den Google-Support, wenn Sie Hilfe bei der Entscheidung benötigen.
Bei diesem Verfahren werden keine Daten von Ihren Arbeitslasten gesichert, einschließlich PersistentVolumes.
Mit dieser Sicherung kann ein Cluster nicht aus einer anderen Version von GKE on AWS wiederhergestellt werden.
Nutzercluster sichern
Eine Nutzercluster-Sicherung ist ein Snapshot des etcd-Speichers des Nutzerclusters. Der etcd-Speicher enthält alle Kubernetes-Objekte und benutzerdefinierten Objekte, die den Status des Clusters darstellen. Der Snapshot enthält die Daten, die zum Neuerstellen der zustandslosen Arbeitslasten des Clusters erforderlich sind.
Führen Sie die folgenden Schritte aus, um einen Snapshot des etcd-Datenspeichers zu erstellen:
Öffnen Sie eine Shell auf der Verwaltungsdienstinstanz, auf der etcd für Ihren Cluster ausgeführt wird.
Suchen Sie die IP-Adresse der Verwaltungsdienstinstanz Ihres Clusters.
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)
Verwenden Sie das
ssh
-Tool, um eine Verbindung zur Verwaltungsdienstinstanz zu öffnen.Direkte Verbindung
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
Erstellen Sie ein Verzeichnis zum Speichern der etcd-Sicherungsdaten.
mkdir ./etcd-backups
Verwenden Sie das
ps
-Befehlszeilentool, um die Prozess-ID des etcd-Prozesses auf dieser Instanz zu finden.ps -e | grep etcd
Die Ausgabe enthält Details zu Ihrem etcd-Prozess. Das erste Element ist die Prozess-ID von etcd. Ersetzen Sie in den folgenden Schritten ETCD_PID durch diese Prozess-ID.
Erstellen Sie ein Skript im Dateisystem des etcd-Containers, um einen Snapshot zu erstellen. Dieses Skript führt etcdctl aus, um eine Verbindung zum etcd-Daemon herzustellen, und führt einen Snapshot zum Sichern der etcd-Datenbank aus.
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
Führen Sie das Skript mit dem Befehl
nsenter
im etcd-Container aus, um den Snapshot zu erstellen.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Kopieren Sie die Snapshot-Datei aus dem etcd-Container.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Kopieren Sie alle Dateien im Verzeichnis /secrets des etcd-Containers in Ihr Sicherungsverzeichnis. Diese Dateien enthalten die Zertifikate, die die Kommunikation zwischen etcd und anderen Prozessen im Cluster verschlüsseln und validieren. Die Snapshot-Datei und die Zertifikatsdateien stellen zusammen eine vollständige Sicherung des etcd-Clusterstatus dar.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
Verwenden Sie das
tar
-Tool, um die etcd-Sicherungsdateien in einer praktischen TAR-Datei zu bündeln.tar -cvf etcd-backup.tar etcd-backup
Verlassen Sie Ihren lokalen Computer und kopieren Sie die Datei etcd-backup.tar mit dem
scp
-Tool aus der Verwaltungsdienstinstanz. In diesem Beispiel werden die zuvor definierten Umgebungsvariablen BASTION_DNS und MANAGEMENT_IP verwendet.scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \ ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar