|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Rollback von K3s
Sie können nach einem Upgrade einen Rollback der K3s Kubernetes-Version durchführen, indem Sie eine Kombination aus einem K3s-Binär-Downgrade und der Wiederherstellung des Datenspeichers anwenden. Rollback kann auf Clustern aller Art durchgeführt werden, einschließlich eines einzelnen SQLite-Knotens, eines externen Datenspeichers oder eines eingebetteten etcd. Beim Rollback auf eine frühere Kubernetes-Nebenversion müssen Sie einen Datenspeicher-Snapshot besitzen, der auf der gewünschten Kubernetes-Nebenversion aufgenommen wurde.
|
Wenn Sie die Datenbank nicht wiederherstellen können, ist ein Rollback auf eine frühere Nebenversion nicht möglich. |
Wichtige Überlegungen
-
Sicherungen: Stellen Sie vor dem Upgrade sicher, dass Sie einen gültigen Datenbank- oder etcd-Snapshot von Ihrem Cluster haben, das die ältere Version von K3s ausführt. Ohne eine Sicherung ist ein Rollback unmöglich.
-
Potentieller Datenverlust: Das
k3s-killall.shSkript beendet K3s-Prozesse gewaltsam und kann zu Datenverlust führen, wenn Anwendungen nicht ordnungsgemäß heruntergefahren werden. -
Versionsspezifika: Überprüfen Sie immer die K3s- und Komponenten-Versionen vor und nach dem Rollback.
Rollback eines K3s-Clusters
-
SQLite
-
Eingebettetes etcd
-
Externe Datenbank
Um einen Rollback eines K3s-Clusters mit einer SQLite-Datenbank durchzuführen, ersetzen Sie die .db Datei durch die Kopie der .db Datei, die Sie bei der Sicherung Ihrer Datenbank erstellt haben.
Um einen Rollback eines K3s-Clusters mit einem eingebetteten etcd durchzuführen, befolgen Sie diese Schritte:
-
Wenn der Cluster läuft und die Kubernetes-API verfügbar ist, stoppen Sie die Arbeitslasten ordnungsgemäß, indem Sie alle Knoten entleeren:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ... -
Beenden Sie den K3s-Dienst und alle laufenden Pod-Prozesse auf jedem Knoten:
k3s-killall.sh -
Führen Sie auf jedem Knoten einen Rollback der K3s-Binärdatei auf die vorherige Version durch, aber starten Sie K3s nicht.
-
Cluster mit Internetzugang:
-
Serverknoten:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" INSTALL_K3S_SKIP_START="true" sh - -
Agentenknoten:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" INSTALL_K3S_SKIP_START="true" sh -
-
-
Air-gapped Cluster:
-
Laden Sie die Artefakte herunter und führen Sie das Installationsskript lokal aus. Fügen Sie die Umgebungsvariable
INSTALL_K3S_SKIP_START="true"hinzu, wenn Sie das Installationsskript ausführen, um zu verhindern, dass K3s gestartet wird.
-
-
-
Initiieren Sie die Cluster-Wiederherstellung auf dem ersten Serverknoten oder dem Knoten ohne einen
server:Eintrag in seiner K3s-Konfigurationsdatei. Siehe die Schritte zur Snapshot-Wiederherstellung für weitere Informationen:k3s server --cluster-reset --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>Dies überschreibt alle Daten im etcd-Datenspeicher. Überprüfen Sie die Integrität des Snapshots, bevor Sie ihn wiederherstellen. Seien Sie sich bewusst, dass große Snapshots lange dauern können, um wiederhergestellt zu werden.
-
Starten Sie den K3s-Dienst auf dem ersten Serverknoten:
systemctl start k3s -
Entfernen Sie auf den anderen Serverknoten das K3s-Datenbankverzeichnis:
rm -rf /var/lib/rancher/k3s/server/db -
Starten Sie den K3s-Dienst auf den anderen Serverknoten:
systemctl start k3s -
Starten Sie den K3s-Dienst auf allen Agentenknoten:
systemctl start k3s -
Überprüfen Sie den Status des K3s-Dienstes mit
systemctl status k3s.
Um einen Rollback eines K3s-Clusters bei Verwendung einer externen Datenbank (z. B. PostgreSQL, MySQL) durchzuführen, befolgen Sie diese Schritte:
-
Wenn der Cluster läuft und die Kubernetes-API verfügbar ist, stoppen Sie die Arbeitslasten ordnungsgemäß, indem Sie alle Knoten entleeren:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...Dieser Prozess kann laufende Anwendungen stören.
-
Beenden Sie den K3s-Dienst und alle laufenden Pod-Prozesse auf jedem Knoten:
k3s-killall.sh -
Stellen Sie einen Datenbank-Snapshot wieder her, der vor dem Upgrade von K3s erstellt wurde, und überprüfen Sie die Integrität der Datenbank. Wenn Sie beispielsweise PostgreSQL verwenden, führen Sie den folgenden Befehl aus:
pg_restore -U <DB-USER> -d <DB-NAME> <BACKUP-FILE> -
Führen Sie auf jedem Knoten ein Rollback der K3s-Binärdatei auf die vorherige Version durch.
-
Cluster mit Internetzugang:
-
Serverknoten:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="server" sh - -
Agentenknoten:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_VERSION=vX.Y.Zk3s1 INSTALL_K3S_EXEC="agent" sh -
-
-
Air-gapped Cluster:
-
Laden Sie die Artefakte herunter und führen Sie das Installationsskript lokal aus. Überprüfen Sie die K3s-Version nach der Installation mit
k3s --versionund wenden Sie alle benutzerdefinierten Konfigurationen erneut an, die vor dem Upgrade verwendet wurden.
-
-
-
Starten Sie den K3s-Dienst auf jedem Knoten:
systemctl start k3s -
Überprüfen Sie den Status des K3s-Dienstes mit
systemctl status k3s.