温馨提示×

Debian如何升级Kubernetes系统

小樊
49
2026-01-09 12:34:37
栏目: 智能运维

Debian升级Kubernetes集群的标准流程

一 升级前准备

  • 明确升级路径:Kubernetes社区大约每4个月发布一个次要版本,生产环境应优先选择仍在维护的版本,并遵循“逐级升级、不跨多个版本”的原则。若当前版本已停止维护,建议尽快规划升级至受支持版本。升级顺序为:先控制平面,后工作节点
  • 备份关键数据与配置:备份**/etc/kubernetes//var/lib/etcd/,并使用etcdctl对etcd做快照;同时备份kubeconfig**。
  • 检查集群健康:确保节点状态Ready、关键系统组件运行正常、无Pending的升级任务或变更。
  • 维护窗口与流量治理:为控制面与节点滚动留出维护窗口;为关键应用配置**PodDisruptionBudget(PDB)**与就绪探针,确保驱逐时仍可对外服务。
  • 升级依赖与组件:在Debian节点上先执行系统更新(如apt update/upgrade),并确认容器运行时(如 containerd)与目标K8s版本兼容。

二 使用kubeadm就地升级步骤

  • 控制平面节点(逐个升级,若为HA需逐台进行)
    1. 安装目标版本的kubeadm:apt-get update && apt-get install -y kubeadm=<目标版本>
    2. 检查升级计划:kubeadm upgrade plan <目标版本>
    3. 腾空控制面节点:kubectl drain <控制面节点名> --ignore-daemonsets
    4. 执行升级:kubeadm upgrade apply <目标版本>
    5. 升级kubeletkubectl:apt-get install -y kubelet=<目标版本> kubectl=<目标版本>
    6. 重启kubelet:systemctl daemon-reload && systemctl restart kubelet
    7. 解除封锁:kubectl uncordon <控制面节点名>
  • 工作节点(逐台滚动升级)
    1. 腾空节点:kubectl drain <节点名> --ignore-daemonsets
    2. 安装目标版本的kubeadm(与当前控制面一致的次要版本)
    3. 执行节点升级准备:kubeadm upgrade node
    4. 升级kubeletkubectl:apt-get install -y kubelet=<目标版本> kubectl=<目标版本>
    5. 重启kubelet:systemctl daemon-reload && systemctl restart kubelet
    6. 解除封锁:kubectl uncordon <节点名>
  • 验证:在各节点与集群层面检查组件版本与状态(如 kubectl version、kubectl get nodes、kubectl get pods -A)。

三 升级后的验证与回滚要点

  • 版本与就绪性:确认控制面与节点版本达到目标版本,所有节点Ready,系统组件Running
  • 工作负载稳定性:观察核心应用的Pod是否全部就绪,业务指标与日志无异常告警。
  • 网络与存储:确认CNI插件与CSI驱动与目标K8s版本兼容并已升级;验证跨节点与跨命名空间的网络连通性、持久卷挂载正常。
  • 回滚策略:若升级失败或出现异常,优先基于备份与快照回滚;kubeadm的升级是不可逆操作,务必在升级前完成etcd与配置备份,并在测试环境充分演练。

四 常见注意事项与替代方案

  • 版本支持与节奏:避免跨多个次要版本升级,优先选择仍在维护的版本;升级前阅读目标版本的变更说明弃用API清单。
  • 插件与扩展:确保CNI/CSI/Ingress Controller/Operator等与目标K8s版本兼容,必要时先行升级。
  • 节点升级策略:除“就地升级”外,可采用“蓝绿/新建集群迁移”方式,先搭建新版本集群、逐步迁移工作负载,再下线旧集群,以降低风险。
  • 高可用与PDB:为关键应用设置合理的PDB就绪/存活探针,在节点排空与升级过程中保障最低可用实例数。

0