首页主机资讯centos k8s降级怎么办

centos k8s降级怎么办

时间2025-12-04 13:53:03发布访客分类主机资讯浏览1048
导读: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 快照 与资源清单备份,且集群在升级后仍能访问(便于执行回滚)。
  • 控制平面回滚(在控制平面节点执行):
    1. 停止 kubelet:systemctl stop kubelet
    2. 回滚控制平面:kubeadm upgrade apply --revert --version vX.Y.Z
    3. 如有需要,恢复 etcd 快照:ETCDCTL_API=3 etcdctl snapshot restore /path/to/snapshot.db
    4. 启动 kubelet:systemctl start kubelet
    5. 验证:kubectl version、kubectl get nodes
  • 工作节点回滚(逐台执行):
    1. 驱逐业务:kubectl drain --ignore-daemonsets
    2. 回滚节点:kubeadm upgrade node --revert --version vX.Y.Z
    3. 重启 kubelet:systemctl restart kubelet
    4. 取消驱逐:kubectl uncordon
  • 资源恢复:若升级过程造成资源丢失,用备份清单恢复:kubectl apply -f backup.yaml
  • 验证:确认所有节点版本一致、系统组件与核心应用就绪。
    该流程利用 kubeadm 的回滚能力,是官方推荐路径,成功率与可操作性优于手工替换组件。

三 无法回滚时的重建降级(破坏性方案)

  • 适用场景:升级后集群已不可用或 --revert 失败,只能重建到旧版本。
  • 操作步骤:
    1. 记录旧集群的 Pod CIDR、Service CIDR、ServiceAccount 公钥/私钥、证书 等关键参数;
    2. 在所有节点执行 kubeadm reset 清理;
    3. 安装目标版本的 kubeadm/kubelet/kubectl(CentOS 使用 yum,建议固定版本号);
    4. 用备份的 etcd 快照 恢复数据(如需要);
    5. 使用 kubeadm init 重建控制平面(指定旧版本与原有参数);
    6. 安装与旧版本匹配的 CNI 插件(如 Calico/Flannel,注意 Pod CIDR 一致);
    7. 通过 kubeadm join 重新加入工作节点;
    8. 应用备份清单恢复业务资源并验证。
  • 注意:该方案等同于重建,务必核对网络、存储、准入控制与镜像仓库等依赖的版本匹配。
    此路径常见于升级失败或跨版本降级场景,务必在备份完备的前提下执行。

四 常见坑与排查要点

  • 版本不匹配:控制平面与工作节点的 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
centos k8s缩容要注意啥 centos k8s升级如何实施

游客 回复需填写必要信息