回滚 RKE2
您可以在升级后,通过 RKE2 二进制降级和数据存储恢复的组合来回滚 RKE2 Kubernetes 版本。回滚可以在所有类型的集群上执行,包括单节点 SQLite、外部数据存储或嵌入式 etcd。在回滚到先前的 Kubernetes 次要版本时,您必须有在您希望回滚到的 Kubernetes 次要版本上拍摄的数据存储快照。
|
如果您无法恢复数据库,则无法回滚到先前的次要版本。 |
重要考虑事项
-
*备份:*在升级之前,请确保您拥有来自运行旧版本 RKE2 的集群的有效数据库或 etcd 快照。没有备份,回滚是不可能的。
-
潜在数据丢失:
rke2-killall.sh脚本会强制终止 RKE2 进程,如果应用程序未正确关闭,可能会导致数据丢失。 -
*版本细节:*始终在回滚前后验证 RKE2 及其组件版本。
回滚 RKE2 集群
-
SQLite
-
嵌入式etcd
-
外部数据库
在使用 SQLite 数据库时回滚 RKE2 集群,请将 .db 文件替换为您在备份数据库时制作的 .db 文件的副本。
在使用嵌入式 etcd(默认)时回滚 RKE2 集群,请按照以下步骤操作:
-
如果集群正在运行且 Kubernetes API 可用,请通过排空所有节点优雅地停止工作负载:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ... -
在每个节点上,停止 RKE2 服务和所有正在运行的 pod 进程:
rke2-killall.sh -
在每个节点上,将 RKE2 二进制文件回滚到先前版本。
-
具有互联网访问权限的集群:
-
服务器节点:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 sh - -
代理节点:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 INSTALL_RKE2_TYPE=agent sh -
-
-
隔离集群:
-
下载工件并在本地运行 install script。
-
-
-
在第一个服务器节点或其 RKE2 配置文件 中没有
server:条目的节点上,启动集群恢复。有关更多信息,请参阅 快照恢复步骤:rke2 server --cluster-reset --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>这将覆盖etcd数据存储中的所有数据。在恢复之前验证快照的完整性。请注意,大型快照可能需要很长时间才能恢复。
-
在第一个服务器节点上启动 RKE2 服务:
systemctl start rke2-server -
在其他服务器节点上,去除 RKE2 数据库目录:
rm -rf /var/lib/rancher/rke2/server/db -
在其他服务器节点上启动 RKE2 服务:
systemctl start rke2-server -
在所有代理节点上启动 RKE2 服务:
systemctl start rke2-agent -
使用
systemctl status rke2-server或systemctl status rke2-agent验证 RKE2 服务状态。
在使用外部数据库(例如,PostgreSQL,MySQL)时回滚 RKE2 集群,请按照以下步骤操作:
-
如果集群正在运行且 Kubernetes API 可用,请通过排空所有节点优雅地停止工作负载:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...此处理可能会中断正在运行的应用程序。
-
在每个节点上,停止 RKE2 服务和所有正在运行的 pod 进程:
rke2-killall.sh -
恢复在升级 RKE2 之前拍摄的数据库快照,并验证数据库的完整性。例如,如果您使用的是 PostgreSQL,请运行以下命令:
pg_restore -U <DB-USER> -d <DB-NAME> <BACKUP-FILE> -
在每个节点上,将 RKE2 二进制文件回滚到先前版本。
-
具有互联网访问权限的集群:
-
服务器节点:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 sh - -
代理节点:
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=vX.Y.Zrke2r1 INSTALL_RKE2_TYPE=agent sh -
-
-
隔离集群:
-
下载工件并在本地运行 install script。
-
-
-
在每个节点上启动 RKE2 服务:
systemctl start rke2-server #or rke2-agent -
使用
systemctl status rke2-server或systemctl status rke2-agent验证 RKE2 服务状态。