centos k8s降级怎么办
导读:CentOS 上 Kubernetes 降级的实操指南 一 降级原则与准备 明确目标版本:kubeadm 仅支持按顺序升级,跨多版本或跨小版本降级风险高,通常只建议回退一个次要版本,且需确保控制平面与工作节点的 kubelet 版本一致。...
CentOS 上 Kubernetes 降级的实操指南
一 降级原则与准备
- 明确目标版本:kubeadm 仅支持按顺序升级,跨多版本或跨小版本降级风险高,通常只建议回退一个次要版本,且需确保控制平面与工作节点的 kubelet 版本一致。
- 先做备份:
- 备份 etcd(建议用 ETCDCTL_API=3 执行快照);
- 备份 /etc/kubernetes 配置;
- 备份关键资源清单:kubectl get all,cm,secret,ds,deploy,svc -A -o yaml > backup.yaml。
- 检查兼容性:确认 CNI/CSI/Ingress/Operator 与目标版本兼容;检查应用对 API 版本的依赖。
- 维护窗口与隔离:设置维护窗口,控制面与节点逐台操作,避免业务中断。
- 工具准备:在 CentOS 上准备好对应版本的 kubeadm/kubelet/kubectl 仓库与 RPM 包。
以上准备能显著降低降级失败与数据不一致的风险。
二 标准流程 使用 kubeadm 回滚(优先方案)
- 前提:升级前已存在可用的 etcd 快照 与资源清单备份,且集群在升级后仍能访问(便于执行回滚)。
- 控制平面回滚(在控制平面节点执行):
- 停止 kubelet:systemctl stop kubelet
- 回滚控制平面:kubeadm upgrade apply --revert --version vX.Y.Z
- 如有需要,恢复 etcd 快照:ETCDCTL_API=3 etcdctl snapshot restore /path/to/snapshot.db
- 启动 kubelet:systemctl start kubelet
- 验证:kubectl version、kubectl get nodes
- 工作节点回滚(逐台执行):
- 驱逐业务:kubectl drain --ignore-daemonsets
- 回滚节点:kubeadm upgrade node --revert --version vX.Y.Z
- 重启 kubelet:systemctl restart kubelet
- 取消驱逐:kubectl uncordon
- 资源恢复:若升级过程造成资源丢失,用备份清单恢复:kubectl apply -f backup.yaml
- 验证:确认所有节点版本一致、系统组件与核心应用就绪。
该流程利用 kubeadm 的回滚能力,是官方推荐路径,成功率与可操作性优于手工替换组件。
三 无法回滚时的重建降级(破坏性方案)
- 适用场景:升级后集群已不可用或 --revert 失败,只能重建到旧版本。
- 操作步骤:
- 记录旧集群的 Pod CIDR、Service CIDR、ServiceAccount 公钥/私钥、证书 等关键参数;
- 在所有节点执行 kubeadm reset 清理;
- 安装目标版本的 kubeadm/kubelet/kubectl(CentOS 使用 yum,建议固定版本号);
- 用备份的 etcd 快照 恢复数据(如需要);
- 使用 kubeadm init 重建控制平面(指定旧版本与原有参数);
- 安装与旧版本匹配的 CNI 插件(如 Calico/Flannel,注意 Pod CIDR 一致);
- 通过 kubeadm join 重新加入工作节点;
- 应用备份清单恢复业务资源并验证。
- 注意:该方案等同于重建,务必核对网络、存储、准入控制与镜像仓库等依赖的版本匹配。
此路径常见于升级失败或跨版本降级场景,务必在备份完备的前提下执行。
四 常见坑与排查要点
- 版本不匹配:控制平面与工作节点的 kubelet 版本不一致会导致 NotReady 或组件反复重启;统一到目标小版本。
- API 变更:新版本废弃的 API 在旧版本不可用,回滚后需确保清单与控制器适配旧 API。
- 网络插件:CNI 的清单可能包含版本注解或镜像标签,需使用与目标版本匹配的清单与镜像。
- etcd 不一致:回滚前后 etcd 数据/快照 不一致会引发控制面异常,务必用升级前的快照恢复。
- 容器运行时:确认 containerd/docker 与目标版本 Kubernetes 兼容,必要时固定运行时版本。
- 快速自检:kubectl version、kubectl get nodes -o wide、kubectl -n kube-system get pods,逐条核对组件镜像版本与就绪状态。
五 最小化停机的实用建议
- 采用“先控制面后工作节点、逐台滚动”的顺序,配合 Pod 反亲和/拓扑分散 降低单点风险。
- 维护窗口内关闭自动扩缩容与批处理任务,避免回滚过程中触发额外变更。
- 回滚后优先恢复 DNS/CoreDNS、网络、存储 等基础组件,再恢复业务。
- 保留回滚前的全部备份与操作记录,便于再次回滚或审计。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s降级怎么办
本文地址: https://pptw.com/jishu/763505.html
