CentOS 上 Kubernetes 升级操作指南
一 升级前准备
- 备份关键数据与配置:优先备份 etcd(如:etcdctl snapshot save /var/lib/etcd/backup/snapshot.db)、以及 /etc/kubernetes/ 配置和 kubeconfig;生产环境建议先在测试环境演练。检查集群健康(所有节点 Ready、etcd 可用、核心业务 Pod 正常)。升级时建议逐小版本进行,避免跨多个次要版本;单节点集群升级会出现短暂中断。确保 kubelet 启用并开机自启(systemctl enable --now kubelet)。
二 升级控制平面 Master
- 升级 kubeadm 到目标版本(精确指定版本):执行 yum list --showduplicates kubeadm --disableexcludes=kubernetes 查看可用版本,然后安装目标版本(示例:yum install -y kubeadm- --disableexcludes=kubernetes)。完成后执行 kubeadm upgrade plan 查看升级路径与兼容性。执行 kubeadm upgrade apply 升级控制面组件(APIServer、ControllerManager、Scheduler、kube-proxy 的 DaemonSet 等)。随后将 Master 节点腾空:kubectl drain --ignore-daemonsets;升级 kubelet 与 kubectl(yum install -y kubelet- kubectl- --disableexcludes=kubernetes),执行 systemctl daemon-reload && systemctl restart kubelet;最后解除封锁:kubectl uncordon 。若为 HA 控制面,确保前端 HAProxy/Keepalived 健康检查与后端权重正确,避免升级期间转发到正在升级的实例。
三 升级工作节点 Node
- 逐节点升级,避免同时升级多节点影响业务:先腾空节点(kubectl drain --ignore-daemonsets),在节点上升级 kubelet/kubectl(yum install -y kubelet- kubectl- --disableexcludes=kubernetes),执行 systemctl daemon-reload && systemctl restart kubelet,完成后解除封锁(kubectl uncordon )。升级期间保持集群至少 1 个可调度 Node 承载业务;如节点同时承担 Master/Node 角色,按相同“排空—升级—恢复”流程处理。
四 升级后验证与常见问题
- 版本与状态核验:kubectl version --short 查看客户端/服务端版本;kubectl get nodes -o wide 确认节点版本与 Ready 状态;kubectl get pods -A 检查系统组件与业务 Pod 是否 Running;必要时查看 kubelet 与 kube-apiserver 日志。证书与组件:检查证书有效期(如 kubeadm certs check-expiration),按需续期;升级后按需更新 CoreDNS、CNI 网络插件(如 Calico/Flannel/Cilium)与监控/日志等附加组件以匹配新版本 API。常见问题与要点:避免跨多个次要版本;升级顺序遵循“kubeadm → 控制面 → 节点 kubelet → 附加组件”;HA 场景确保负载均衡健康检查与优雅摘除;升级窗口内合理控制 Pod 驱逐与重建节奏。