|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
回滚 K3s
您可以在升级后通过 K3s 二进制降级和数据存储恢复的组合来回滚 K3s Kubernetes 版本。回滚可以在所有类型的集群上执行,包括单节点 SQLite、外部数据存储或嵌入式 etcd。在回滚到先前的 Kubernetes 次要版本时,您必须有在您希望回滚到的 Kubernetes 次要版本上拍摄的数据存储快照。
|
如果您无法恢复数据库,则无法回滚到先前的次要版本。 |
重要考虑事项
-
*备份:*在升级之前,请确保您拥有来自运行旧版本 K3s 的集群的有效数据库或 etcd 快照。没有备份,回滚是不可能的。
-
潜在数据丢失:
k3s-killall.sh脚本强制终止 K3s 进程,如果应用程序未正确关闭,可能会导致数据丢失。 -
*版本细节:*在回滚之前和之后始终验证 K3s 和组件版本。
回滚 K3s 集群
-
SQLite
-
嵌入式 etcd
-
外部数据库
在使用 SQLite 数据库时回滚 K3s 集群,请用您在备份数据库时制作的 .db 文件的副本替换 .db 文件。
在使用嵌入式 etcd 时回滚 K3s 集群,请按照以下步骤操作:
-
如果集群正在运行且 Kubernetes API 可用,请通过排空所有节点优雅地停止工作负载:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ... -
在每个节点上,停止 K3s 服务和所有正在运行的 pod 进程:
k3s-killall.sh -
在每个节点上,将 K3s 二进制文件回滚到先前版本,但*不要*启动 K3s。
-
具有互联网访问权限的集群:
-
服务器节点:
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 - -
代理节点:
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 -
-
-
隔离集群:
-
下载工件并在本地运行安装脚本。在运行安装脚本时添加环境变量`INSTALL_K3S_SKIP_START="true"`以防止K3s启动。
-
-
-
在第一个服务器节点或其K3s配置文件中没有`server:`条目的节点上,启动集群恢复。有关更多信息,请参阅快照恢复步骤:
k3s server --cluster-reset --cluster-reset-restore-path=<PATH-TO-SNAPSHOT>这将覆盖etcd数据存储中的所有数据。在恢复之前验证快照的完整性。请注意,大型快照可能需要很长时间才能恢复。
-
在第一个服务器节点上启动 K3s 服务:
systemctl start k3s -
在其他服务器节点上,去除 K3s 数据库目录:
rm -rf /var/lib/rancher/k3s/server/db -
在其他服务器节点上启动 K3s 服务:
systemctl start k3s -
在所有代理节点上启动 K3s 服务:
systemctl start k3s -
使用`systemctl status k3s`验证 K3s 服务状态。
要在使用外部数据库(例如,PostgreSQL,MySQL)时回滚 K3s 集群,请按照以下步骤操作:
-
如果集群正在运行且 Kubernetes API 可用,请通过排空所有节点优雅地停止工作负载:
kubectl drain --ignore-daemonsets --delete-emptydir-data <NODE-ONE-NAME> <NODE-TWO-NAME> <NODE-THREE-NAME> ...此处理可能会中断正在运行的应用程序。
-
在每个节点上,停止 K3s 服务和所有正在运行的 pod 进程:
k3s-killall.sh -
恢复在升级 K3s 之前拍摄的数据库快照,并验证数据库的完整性。例如,如果您使用的是 PostgreSQL,请运行以下命令:
pg_restore -U <DB-USER> -d <DB-NAME> <BACKUP-FILE> -
在每个节点上,将 K3s 二进制文件回滚到先前版本.
-
具有互联网访问权限的集群:
-
服务器节点:
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 - -
代理节点:
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 -
-
-
隔离集群:
-
下载工件并在本地运行安装脚本。安装后使用
k3s --version验证 K3s 版本,并重新应用升级前使用的任何自定义配置。
-
-
-
在每个节点上启动 K3s 服务:
systemctl start k3s -
使用`systemctl status k3s`验证K3s服务状态。