kubeadm 升级集群 v1.27.x → v1.28.15(顺序 + 回滚)

发布时间:2026/8/20 8:02:43
kubeadm 升级集群 v1.27.x → v1.28.15(顺序 + 回滚) kubeadm 升级集群 v1.27.x → v1.28.15顺序 回滚操作环境已运行的 v1.27.x 集群1 master N worker。对接原理升级顺序固定——控制平面先于工作节点且逐版本升级1.27→1.28 可直跨一个次版本。kubeadm 先升级自身再升级控制平面组件工作节点逐个 drain→升级→uncordon。etcd 数据格式升级是单向的不能降级。详细步骤bash暗色复制1# 0. 升级前必备备份 etcd 2ETCDCTL_API3 etcdctl snapshot save /backup/etcd-before-upgrade.db \ 3 --endpointshttps://127.0.0.1:2379 \ 4 --cacert/etc/kubernetes/pki/etcd/ca.crt \ 5 --cert/etc/kubernetes/pki/etcd/server.crt \ 6 --key/etc/kubernetes/pki/etcd/server.key 7 8# 控制平面每台 master 依次执行 9# 1. 升级 kubeadm 10dnf install -y kubeadm-1.28.15 11kubeadm upgrade plan # 确认可升级到 v1.28.15 12kubeadm upgrade apply v1.28.15 13# 其余 master 用kubeadm upgrade node 14 15# 2. 升级 kubelet/kubectl 16dnf install -y kubelet-1.28.15 kubectl-1.28.15 17systemctl daemon-reload 18systemctl restart kubelet 19 20# 工作节点逐台执行 21# 3. 驱逐负载 22kubectl drain worker01 --ignore-daemonsets --delete-emptydir-data 23 24# 4. 节点上升级 25dnf install -y kubeadm-1.28.15 26kubeadm upgrade node 27dnf install -y kubelet-1.28.15 kubectl-1.28.15 28systemctl daemon-reload systemctl restart kubelet 29 30# 5. 恢复调度 31kubectl uncordon worker01回滚方案etcd 数据不可降级回滚 恢复快照 降回旧组件包bash暗色复制1# 1. 恢复 etcd 快照停 apiserver 后 2mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/ 3ETCDCTL_API3 etcdctl snapshot restore /backup/etcd-before-upgrade.db \ 4 --data-dir/var/lib/etcd 5mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/ 6 7# 2. 降回 v1.27.x 组件包并重启 kubelet 8dnf downgrade kubeadm-1.27.* kubelet-1.27.* kubectl-1.27.* 9systemctl daemon-reload systemctl restart kubelet验证流程bash暗色复制1kubectl get nodes -o wide # 全部节点 VERSION 为 v1.28.15 2kubectl version # server 版本 v1.28.15 3kubectl get pods -A # 无 CrashLoop排错kubeadm upgrade plan报版本跨度不允许 → 1.27→1.28 是允许的检查是否误写 1.29升级后组件 CrashLoop → 先kubectl -n kube-system logs定位不要盲目回滚。