首页/安全/漏洞与攻击面速查/Kubernetes 版本升级路径与节点操作
补丁与修复管理45 条

Kubernetes 版本升级路径与节点操作

K8s 集群按小版本逐级升级(不跳大版本),控制面与节点分阶段执行;kubeadm upgrade plan 给出可用目标版本与组件升级顺序,节点侧 drain 后升级 kubelet。

漏洞与攻击面速查安全更新于 2026-10-13

Kubernetes 版本升级是什么

K8s 集群的补丁与版本升级遵循「逐个小版本前进」的原则,不能跳版本;执行顺序是先控制面(逐台 master),再逐节点升级 kubelet。kubeadm 提供 upgrade plan 与 upgrade apply 完成大部分工作,但节点侧的腾空(drain)、组件重启与恢复调度(uncordon)仍需人工按批次控制。

基本信息

升级单位小版本(如 1.30 → 1.31),不跳版
执行顺序控制面 → 逐节点 kubelet → 观察工作负载
版本偏差各组件间版本偏差需遵循官方 skew 策略
回退难度控制面升级回退困难,必须先确认 etcd 备份可恢复

控制面与节点升级命令

控制面与节点升级命令
kubeadm upgrade plan                       # 查看可升级版本与组件清单
kubeadm upgrade apply v1.31.x              # 控制面升级(逐台 master 执行)
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data   # 节点腾空
kubeadm upgrade node                       # 节点侧升级
systemctl restart kubelet                  # 重启 kubelet 加载新版本
kubectl uncordon <node>                    # 验证工作负载正常后恢复调度

典型使用场景

  • 季度维护窗口:按官方支持周期规划并逐个版本推进
  • 安全更新:跟随安全公告中已修复的组件版本升级
  • API 弃用应对:kubeadm plan 会提示被弃用与移除的 API,提前改造工作负载
  • 托管集群比对:云上控制面已升级时,本地节点池需跟随保持一致
  • 升级演练:先在测试集群跑一遍完整流程与回滚验证

各阶段检查项

阶段检查内容风险点
升级前etcd 备份、插件兼容、弃用 API 清单备份未验证可恢复
控制面逐台执行并确认静态 Pod 正常多 master 同时操作导致短时不可用
节点drain 后确认 Pod 已迁移或重建忽略非受控 Pod 导致业务中断
升级后工作负载健康、网络与存储插件正常CNI/CSI 插件版本不匹配
升级前确认已安装的 API 版本弃用清单(kubeadm plan 会提示),避免工作负载因 API 移除而无法部署或滚动更新。
控制面升级属于难以回退的操作:先确认 etcd 备份可恢复并做过恢复演练,再开始升级,否则出问题时可能只能重建集群。

易错点

  • 跳两个小版本直接升级,API 弃用与配置变更叠加导致升级失败
  • 多台 master 同时升级,控制面出现短时不可用
  • drain 时未处理非受控 Pod,业务在节点升级期间中断
  • 只升级 kubelet 不同步升级网络与存储插件,节点恢复后工作负载异常
  • etcd 备份从未验证可恢复,控制面升级失败后没有退路

数据来源与参考

  • Kubernetes 官方文档(kubeadm upgrade)
  • Kubernetes 版本偏差策略说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌