前言
Kubernetes 集群需要定期版本升级,以此获取新功能、修复安全漏洞、优化集群稳定性,是运维工程师核心日常维护操作。很多新手升级集群容易踩坑:跨版本升级、未排空节点、组件版本不统一、无备份导致故障无法回滚;尤其困惑:为什么升级流程里两次操作 kubeadm?到底有什么区别?
本文结合官方标准升级流程、可直接复制的实操命令、面试满分答题模板,手把手讲透 K8s 集群 Master 节点升级全流程,重点拆解两次 kubeadm 操作的核心差异,兼顾实操落地与面试备考需求。
一、K8s 升级核心原则
- 逐级小版本升级:禁止跨大版本跳跃(如 1.31→1.33),避免组件兼容性报错、集群崩溃。
- 固定升级顺序:kubeadm(工具)→ 控制平面(集群核心)→ kubelet/kubectl(节点 / 客户端)。
- 先控后工、滚动升级:Master 优先升级,Worker 逐台操作,不中断业务。
- 备份优先、可回滚:升级前备份 etcd 与核心配置,规避故障风险。
- 组件版本统一:全集群 kubeadm、kubelet、kubectl 版本必须完全一致。
二、K8s Master 主节点完整升级流程
以下为生产、面试通用标准步骤,以1.33.0→1.33.1为例,可直接复制执行。
步骤 1:查询可升级版本
apt list kubeadm -a作用:查看当前源中所有 kubeadm 版本,确认目标版本(1.33.1-1.1)是否存在。
步骤 2:封锁 Master 节点,禁止新 Pod 调度
kubectl cordon cka-master kubectl get nodes作用:标记节点不可调度,升级期间无新 Pod 调度到 Master,避免冲突。
步骤 3:排空节点业务 Pod,保障业务不中断
kubectl drain cka-master --delete-emptydir-data --ignore-daemonsets作用:驱逐普通 Pod 到其他节点,忽略守护进程、清空临时数据,无业务残留。
步骤 4:升级 kubeadm(第一次:升级工具本身)
# 解锁版本锁定 apt-mark unhold kubeadm apt-get update # 安装指定版本kubeadm apt install kubeadm=1.33.1-1.1 -y # 重新锁定,防止自动更新 apt-mark hold kubeadm # 校验版本 kubeadm version核心作用(第一次操作):操作系统层面升级 kubeadm 二进制工具,仅更新本地/usr/bin/kubeadm命令,不改动集群任何组件(apiserver、controller-manager 仍是旧版)。
步骤 5:检查集群升级可行性
kubeadm upgrade plan作用:用新版 kubeadm 检测集群状态、版本兼容性,预判升级可行性,提前暴露异常。
步骤 6:升级 Master 控制平面(第二次:用工具升级集群)
# 再次解锁kubeadm(防止锁定报错) apt-mark unhold kubeadm # 升级核心组件,跳过etcd kubeadm upgrade apply v1.33.1 --etcd-upgrade=false核心作用(第二次操作):用新版 kubeadm 指挥集群升级,真正更新控制平面核心组件:kube-apiserver、kube-controller-manager、kube-scheduler、CoreDNS、kube-proxy;更新静态 Pod 配置,同步集群状态。
步骤 7:升级 kubelet、kubectl 客户端工具
apt-mark unhold kubelet kubectl apt install kubelet=1.33.1-1.1 kubectl=1.33.1-1.1 -y # 统一锁定所有组件版本 apt-mark hold kubelet kubectl kubeadm作用:kubelet 是节点代理,kubectl 是客户端,必须与控制平面版本一致,保证通信兼容。
步骤 8:重启 kubelet 服务生效
systemctl daemon-reload systemctl restart kubelet.service kubectl get nodes作用:加载新版 kubelet 配置,使节点正常接入集群。
步骤 9:解除节点封锁,恢复集群调度
kubectl uncordon cka-master kubectl get nodes作用:Master 恢复可调度状态,正常管理集群。
步骤 10:逐台升级所有 Worker 工作节点
所有 Worker 节点重复步骤 2-9:封锁→排空→升级组件→重启→解除封锁,禁止批量同时升级,保证集群始终有可用节点承载业务。
三、面试高频:两次 kubeadm 操作的区别(必背)
一句话总结
第一次:升级 kubeadm 工具本身;第二次:用新版 kubeadm 升级集群控制平面,两次操作对象、范围、目的完全不同,不是重复!
详细区别(面试直接答)
- 第一次:apt install kubeadm=xxx
- 操作对象:本地操作系统的 kubeadm 二进制工具
- 范围:仅 Master 节点本地
- 目的:把 “升级指挥工具” 升到目标版本
- 结果:kubeadm --version 显示新版,集群组件未变
- 第二次:kubeadm upgrade apply vxxx
- 操作对象:K8s 集群控制平面
- 范围:整个 Master 核心组件
- 目的:用新版工具执行集群升级
- 结果:apiserver、controller-manager 等更新为新版
核心逻辑(面试加分)
先升工具、再升集群:只有 kubeadm 工具先到目标版本,才能正确指挥集群完成升级,是官方强制顺序,缺一不可。
四、升级核心注意事项(面试必背 + 生产避坑)
- 版本规范:严格逐级小版本升级,禁止跨大版本跳跃。
- 数据备份优先:升级前备份 etcd 数据库、集群核心配置,保障可回滚。
- 业务高可用:Master 先 cordon+drain,Worker 逐台滚动,避免业务中断。
- 组件版本统一:全集群 kubeadm、kubelet、kubectl 版本必须一致。
- 插件兼容性:提前校验 CoreDNS、Ingress、监控等插件兼容性。
- 规避冲突:升级期间暂停集群资源创建 / 删除操作。
- 预留回滚:制定回滚方案,异常时快速退回稳定版本。
五、面试满分标准答案(直接默写)
1. K8s Master 节点升级步骤
先查询 kubeadm 可用版本,确认目标版本;封锁 Master 节点禁止新 Pod 调度,排空节点现有业务 Pod;第一次操作:升级 kubeadm 工具本身;用新版 kubeadm 检查升级可行性;第二次操作:用 kubeadm 升级集群控制平面,跳过 etcd;同步升级 kubelet 和 kubectl,重启 kubelet 生效;解除节点封锁恢复调度;最后逐台升级 Worker 节点。
2. 两次 kubeadm 操作的区别
第一次是操作系统层面升级 kubeadm 二进制工具,仅更新本地命令,不改动集群组件;第二次是用新版 kubeadm 执行集群控制平面升级,更新 apiserver、controller-manager 等核心组件。两次操作对象、范围、目的不同,遵循 “先升工具、再升集群” 的官方顺序。
3. 升级注意事项
升级需逐级小版本迭代;升级前备份 etcd 与核心配置;采用滚动升级,提前迁移业务 Pod;保证组件版本统一;校验插件兼容性;升级期间暂停资源操作;预留回滚方案,保障业务稳定。
六、总结
K8s Master 升级核心逻辑:工具先行、集群跟进、滚动安全、版本统一。两次 kubeadm 操作不是重复,而是 “工具升级→集群升级” 的必要两步,是官方标准流程。掌握这套流程和面试要点,既能搞定生产升级,也能轻松应对面试考察!