适用于 CentOS 的 Kubernetes 更新与维护技巧
一 升级策略与顺序
kubectl version,确认 Client 与 Server 差异与升级路径。控制平面为多 Master 时,前置 HAProxy/Keepalived 等负载均衡,升级期间将待升级的 API Server 从后端摘除,避免流量转发。升级通常要求按 次版本逐步 执行,避免跨多个小版本跳跃。升级完成后,按需将存量资源清单从旧 API 迁移到新 API(如 apps/v1 等)。二 控制平面升级步骤
kubectl get nodes、kubectl get pods -A)。kubeadm upgrade plan 查看可升级版本与变更;按提示执行 kubeadm upgrade apply <target-version> 完成控制面组件升级。kubectl drain <master-node> --ignore-daemonsets;随后升级 kubelet/kubectl 二进制并重启:systemctl daemon-reload && systemctl restart kubelet;完成后 kubectl uncordon <master-node> 恢复调度。三 工作节点升级步骤
kubectl drain <node> --ignore-daemonsets 驱逐业务 Pod;升级 kubelet/kubectl 并重启 systemctl daemon-reload && systemctl restart kubelet;完成后 kubectl uncordon <node> 恢复调度。kubectl get nodes 与 kubectl get pods -A 检查 Ready 状态与事件,确认 kubelet 与容器运行时工作正常。四 日常维护与稳定性保障
五 故障排查与回滚要点
kubectl get nodes、kubectl get pods -A -o wide;对异常 Pod 使用 kubectl describe pod <name> 与 kubectl logs <name>;系统组件日志通过 journalctl -u kubelet -u kube-apiserver 等检索。kubeadm upgrade plan 确认可回退版本并执行回滚;应用侧采用 Deployment 的滚动更新策略与 revisionHistoryLimit,必要时 kubectl rollout undo 快速回退;若升级导致 API 不兼容,使用 kubectl convert 将清单迁移至新 API 版本并重新应用。