centos k8s升级如何实施
导读:CentOS 上 Kubernetes 升级实施指南 一 升级前准备 备份关键数据与配置:优先备份 etcd(示例:etcdctl snapshot save /var/lib/etcd/backup/snapshot.db),以及 /e...
CentOS 上 Kubernetes 升级实施指南
一 升级前准备
- 备份关键数据与配置:优先备份 etcd(示例:etcdctl snapshot save /var/lib/etcd/backup/snapshot.db),以及 /etc/kubernetes/ 目录和 kubeconfig;确保有可用的回滚方案。
- 检查集群健康:确认所有节点 Ready、系统组件 Running,无 CrashLoopBackOff/Error,负载与服务可用。
- 确认升级路径:遵循“相邻次要版本递进”,不可跨多个次要版本(如 1.22 → 1.23 → 1.24);如需跨大版本,通常一次仅跨 1 个大版本(如 1.19 → 1.20)。
- 配置仓库与版本可见性:在所有节点配置 Kubernetes YUM 仓库,并使用 yum list --showduplicates kubeadm 查看可安装版本。
- 维护窗口与高可用:选择低峰时段;如为 HA 控制面,确保 HAProxy/Keepalived 健康检查与后端摘除策略正常。
二 标准升级流程(kubeadm 部署)
- 控制平面节点(按顺序执行)
- 升级 kubeadm:yum install -y kubeadm-< 目标版本> --disableexcludes=kubernetes
- 检查升级计划:kubeadm upgrade plan
- 腾空节点:kubectl drain --ignore-daemonsets
- 执行升级:kubeadm upgrade apply < 目标版本>
- 升级 kubelet 与 kubectl:yum install -y kubelet-< 目标版本> kubectl-< 目标版本> --disableexcludes=kubernetes
- 重启 kubelet:systemctl daemon-reload & & systemctl restart kubelet
- 解除封锁:kubectl uncordon
- 工作节点(逐个节点执行)
- 腾空节点:kubectl drain --ignore-daemonsets
- 升级 kubeadm(与集群控制面版本一致)
- 升级 kubelet 与 kubectl(同上)
- 执行节点升级:kubeadm upgrade node(或按 kubeadm 提示完成节点组件升级)
- 重启 kubelet:systemctl daemon-reload & & systemctl restart kubelet
- 解除封锁:kubectl uncordon
- 提示:若为 单节点 集群,驱逐后 Pod 将无可调度目标,业务会短暂中断,需提前评估。
三 升级后验证与回滚
- 版本与状态核验:kubectl version --short、kubectl get nodes -o wide、kubectl get pods -A;组件日志:journalctl -u kubelet -f。
- 周边组件:按需升级 CNI(如 Calico/Flannel)、Ingress Controller、CoreDNS、监控/日志等,确保与目标 K8s 版本兼容。
- 快速回滚思路:控制面回滚执行 kubeadm upgrade apply < 原版本> ;若升级前已备份 etcd 与 /etc/kubernetes/,可恢复到升级前快照与配置。
四 常见注意事项与排错要点
- 版本与兼容性:严格按相邻次要版本升级;kubectl 与集群版本通常建议相差不超过 1 个次要版本;容器运行时与网络插件需与目标 K8s 版本匹配。
- 节点维护:升级节点务必先 drain 再 uncordon,避免业务抖动;HA 场景通过负载均衡健康检查自动摘除/恢复后端。
- 单节点限制:单节点集群在驱逐期间会中断,需提前规划维护窗口或临时扩容。
- 系统与安全:保持 NTP 同步、内核与驱动兼容;升级后持续观察 Pod 分布与事件,必要时回滚。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos k8s升级如何实施
本文地址: https://pptw.com/jishu/763506.html
