In Unix-ähnlichen Betriebssystemen enthält der Ordner /etc wichtige Konfigurationsdaten. Im Bereich von Kubernetes spielt Etcd eine ähnlich wichtige Rolle. Dabei handelt es sich um einen Key-Value-Datenspeicher, in dem sowohl Konfigurationsdaten als auch Cluster-Informationen gespeichert werden. Der Name "Etcd" ist eine Anspielung auf den /etc-Ordner, mit einem zusätzlichen "d" als Symbol für verteilte Systeme.
Etcd ist der Eckpfeiler Ihres Kubernetes-Clusters und speichert Daten, die für die Service-Erkennung und die Cluster-Verwaltung wichtig sind. Die Sicherung Ihrer Etcd-Daten durch regelmäßige Backups ist von entscheidender Bedeutung für die Vorbereitung auf unvorhergesehene Ausfälle. In diesem Artikel führen wir Sie durch den Prozess der sicheren Sicherung und Wiederherstellung Ihres Etcd-Clusters in einer Kubernetes-Umgebung mithilfe des leistungsstarken Tools etcdctl.
Sichern Ihres Etcd-Clusters
- Überprüfen Sie die Installation von etcdctl: Stellen Sie zunächst sicher, dass Sie etcdctl auf Ihrem System installiert haben. Führen Sie den folgenden Befehl aus, um dies zu überprüfen:
etcdctl version
Wenn etcdctl korrekt installiert ist, erhalten Sie eine Ausgabe, die die Version angibt. Wenn nicht, erhalten Sie die Fehlermeldung "Befehl nicht gefunden".
- Installieren Sie etcdctl (falls erforderlich): Wenn etcdctl fehlt, folgen Sie den Installationsanweisungen unter der URL. Detaillierte Anleitungen sind für Linux, MacOS und Docker verfügbar.
- Sammeln Sie Informationen: Wenn Sie etcdctl zur Verfügung haben, müssen Sie als Nächstes die notwendigen Informationen für die Sicherung einholen. Sie benötigen:
- Endpunkt-Informationen: Bestimmen Sie die Endpunkte für Etcd. Wenn Etcd auf demselben Server läuft, ist der Standardendpunkt https://127.0.0.1:2379. Wenn sich Etcd auf einem anderen Server befindet, ersetzen Sie 127.0.0.1 durch die IP-Adresse des Servers.
- Bescheinigungen: Sie benötigen die folgenden Zertifikate für die Authentifizierung:
- -cert
- -cacert
- -Schlüssel
Rufen Sie mit diesem Befehl Endpunktinformationen ab:
cat /etc/kubernetes/manifests/etcd.yaml | grep listen
Für Informationen über Zertifikate:
cat /etc/kubernetes/manifests/etcd.yaml | grep file
4. Ausführen des Befehls Snapshot speichern: Mit den erforderlichen Informationen ausgestattet, können Sie den Befehl zum Speichern des Snapshots mit etcdctl ausführen:
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save <backup-file-location>
Stellen Sie sicher, dass Sie ETCDCTL_API=3 an den Anfang des Befehls stellen. Dadurch wird sichergestellt, dass etcdctl standardmäßig die v3-API verwendet.
- Umgebungsvariable setzen (optional): Wenn Sie es vorziehen, die API-Version nicht bei jedem Befehl anzugeben, setzen Sie die Umgebungsvariable mit:
export ETCDCTL_API=3
6. Bestätigen Sie die Sicherung: Nachdem Sie den Befehl snapshot save ausgeführt haben, haben Sie erfolgreich eine Sicherung mit dem Namen etcd-backup.db erstellt. Die letzte Zeile der Ausgabe sollte dies mit der Meldung "snapshot saved at etcd-backup.db" bestätigen.

Wiederherstellung von Etcd aus dem Snapshot
Bevor wir uns mit dem Wiederherstellungsprozess befassen, sollten wir kurz die ersten Schritte besprechen, um den Übergang reibungsloser zu gestalten.
- Überprüfen Sie Pods: Überprüfen Sie die Pods im Standard-Namespace. Wie Sie während des Backup-Prozesses festgestellt haben, wurden keine neuen Pods erstellt, und es sollten keine Ressourcen vorhanden sein.
- Erstellen Sie einen neuen Pod: Um die Auswirkungen des Wiederherstellungsprozesses zu demonstrieren, erstellen Sie einen neuen Pod mit:
kubectl run newpod --image=nginx
- Beginn der Wiederherstellung: Angenommen, Etcd ist ausgefallen und Sie müssen zum letzten gespeicherten Zustand zurückkehren. Sie verfügen über den zuvor gespeicherten etcd-backup.db-Snapshot.
- Wiederherstellung mit etcdctl: Zur Wiederherstellung aus dem gespeicherten Snapshot verwenden Sie einen ähnlichen Befehl wie für die Sicherung, geben aber diesmal ein neues Datenverzeichnis an, in das die Clusterdaten kopiert werden sollen:
ETCDCTL_API=3 etcdctl --data-dir="/var/lib/etcd-backup" \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot restore etcd-backup.db
5. Etcd-Manifest bearbeiten: Wenn die Daten wiederhergestellt sind, müssen Sie die Manifestdatei des Etcd-Pods ändern, um das neue wiederhergestellte Datenverzeichnis als Volume zu verwenden. Öffnen Sie die Etcd-Manifestdatei zur Bearbeitung:
vi /etc/kubernetes/manifests/etcd.yaml
Modify relevant sections in the etcd.yaml file.
- Warten Sie auf den Neustart des Pods: Warten Sie ein paar Minuten, bis der Etcd-Pod mit dem neuen Status neu gestartet ist. Während dieser Zeit erhalten Sie möglicherweise keine Antworten vom API-Server.
- Überprüfen Sie die Wiederherstellung: Um eine erfolgreiche Wiederherstellung sicherzustellen, überprüfen Sie die Pods im Standard-Namensraum. Wenn Sie ursprünglich einen neuen Pod erstellt haben, sollte dieser nach der Wiederherstellung nicht mehr existieren. Verwenden Sie den folgenden Befehl, um dies zu überprüfen:
kubectl get pods

Herzlichen Glückwunsch! Sie haben Ihren Etcd-Cluster mit einem Backup effektiv gesichert und gezeigt, dass Sie in der Lage sind, es wiederherzustellen, um Ihre Kubernetes-Umgebung vor unerwarteten Ausfällen zu schützen.
Schlussfolgerung
Zusammenfassend lässt sich sagen, dass ein starker Etcd-Cluster-Backup- und Wiederherstellungsplan für die Gewährleistung der Stabilität Ihrer Kubernetes-Einrichtung unerlässlich ist. Wenn Sie die in diesem Tutorial beschriebenen ausgefeilten Methoden beherrschen, können Sie die Abwehrkräfte Ihres Systems gegen unvorhergesehene Fehlfunktionen stärken, wichtige Informationen schützen und einen kontinuierlichen Betrieb sicherstellen. Der Schlüssel zu einer erfolgreichen Kubernetes-Installation ist die Fähigkeit, Ihren Etcd-Cluster zu schützen und wiederherzustellen, während Sie das schwierige Terrain der verteilten Systeme durchqueren. Wenn Sie diese Verfahren anwenden, können Sie Ihre Kubernetes-Bereitstellung auch im Falle von Schwierigkeiten selbstbewusst vorantreiben.

