在 Debian 上使用 kubeadm 升级 Kubernetes 的实操指南
一 升级前准备
二 升级路线与版本选择
三 控制平面节点升级步骤
升级 kubeadm(每台控制面节点)
apt-mark unhold kubeadm
apt-get update && apt-get install -y kubeadm=‘1.28.x-*’
apt-mark hold kubeadm
kubeadm version
检查升级计划并应用
kubeadm upgrade plan
kubeadm upgrade apply v1.28.x
注:该过程会更新 kube-apiserver、kube-controller-manager、kube-scheduler 等控制面组件及 kube-proxy 配置。
排空节点并升级 kubelet/kubectl
kubectl drain <控制面节点名> --ignore-daemonsets
apt-mark unhold kubelet kubectl
apt-get update && apt-get install -y kubelet=‘1.28.x-’ kubectl='1.28.x-’
apt-mark hold kubelet kubectl
systemctl daemon-reload && systemctl restart kubelet
解除封锁
kubectl uncordon <控制面节点名>
提示:若为 HA,升级期间可通过负载均衡摘除该节点,恢复后再加回。
四 工作节点升级步骤
升级 kubeadm
apt-mark unhold kubeadm
apt-get update && apt-get install -y kubeadm=‘1.28.x-*’
apt-mark hold kubeadm
排空节点
kubectl drain <工作节点名> --ignore-daemonsets
升级 kubelet/kubectl 并重启
apt-mark unhold kubelet kubectl
apt-get update && apt-get install -y kubelet=‘1.28.x-’ kubectl='1.28.x-’
apt-mark hold kubelet kubectl
systemctl daemon-reload && systemctl restart kubelet
解除封锁
kubectl uncordon <工作节点名>
重复以上步骤逐台升级工作节点。
五 升级后验证与常见问题
版本与节点状态
kubectl version --client
kubectl get nodes
kubectl get pods -A
确认控制面与工作节点均处于 Ready,核心系统组件(如 CoreDNS、kube-proxy)运行正常。
组件与清单适配
升级后按需升级 CNI/CSI/Ingress/Dashboard/监控 等附加组件,确保与新版本 Kubernetes API 兼容。
如存在 API 版本变更,使用 kubectl convert 将现有清单迁移至新版本,例如:
kubectl convert -f pod.yaml --output-version v1
再应用更新后的清单。
常见问题与处理