Rollback von RKE2
Sie können nach einem Upgrade einen Rollback der RKE2 Kubernetes-Version durchführen, indem Sie eine Kombination aus einem RKE2-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 RKE2 ausführt. Ohne eine Sicherung ist ein Rollback unmöglich.
-
Potentieller Datenverlust: Das
rke2-killall.shSkript beendet RKE2-Prozesse gewaltsam und kann zu Datenverlust führen, wenn Anwendungen nicht ordnungsgemäß heruntergefahren werden. -
Versionsspezifika: Überprüfen Sie immer die RKE2- und Komponenten-Versionen vor und nach dem Rollback.
Rollback eines RKE2-Clusters
-
SQLite
-
Embedded etcd
-
Externe Datenbank
Um einen Rollback eines RKE2-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 RKE2-Clusters mit einem eingebetteten etcd (Standard) 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 RKE2-Dienst und alle laufenden Pod-Prozesse auf jedem Knoten:
rke2-killall.sh -
Führen Sie auf jedem Knoten ein Rollback der RKE2-Binärdatei auf die vorherige Version durch.
-
Cluster mit Internetzugang:
-
Serverknoten:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 sh - -
Agentenknoten:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 INSTALL_RKE2_TYPE=agent sh -
-
-
Air-gapped Cluster:
-
Laden Sie die Artefakte herunter und führen Sie das Installationsskript lokal aus.
-
-
-
Initiieren Sie die Cluster-Wiederherstellung auf dem ersten Serverknoten oder dem Knoten ohne einen
server:Eintrag in seiner RKE2-Konfigurationsdatei. Siehe die Schritte zur Snapshot-Wiederherstellung für weitere Informationen:rke2 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 RKE2-Dienst auf dem ersten Serverknoten:
systemctl start rke2-server -
Entfernen Sie auf den anderen Serverknoten das RKE2-Datenbankverzeichnis:
rm -rf /var/lib/rancher/rke2/server/db -
Starten Sie den RKE2-Dienst auf den anderen Serverknoten:
systemctl start rke2-server -
Starten Sie den RKE2-Dienst auf allen Agentenknoten:
systemctl start rke2-agent -
Überprüfen Sie den RKE2-Dienststatus mit
systemctl status rke2-serverodersystemctl status rke2-agent.
Um einen Rollback eines RKE2-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 RKE2-Dienst und alle laufenden Pod-Prozesse auf jedem Knoten:
rke2-killall.sh -
Stellen Sie einen Datenbank-Snapshot wieder her, der vor dem Upgrade von RKE2 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 RKE2-Binärdatei auf die vorherige Version durch.
-
Cluster mit Internetzugang:
-
Serverknoten:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 sh - -
Agentenknoten:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 INSTALL_RKE2_TYPE=agent sh -
-
-
Air-gapped Cluster:
-
Laden Sie die Artefakte herunter und führen Sie das Installationsskript lokal aus.
-
-
-
Starten Sie den RKE2-Dienst auf jedem Knoten:
systemctl start rke2-server #or rke2-agent -
Überprüfen Sie den RKE2-Dienststatus mit
systemctl status rke2-serverodersystemctl status rke2-agent.