Ubuntu如何升级Kubernetes版本
导读:Ubuntu上升级 Kubernetes 的标准流程(kubeadm) 一 升级前准备 备份关键数据与配置:优先备份 etcd(建议做快照),以及 /etc/kubernetes/ 目录;etcd 快照示例:ETCDCTL_API=3 e...
Ubuntu上升级 Kubernetes 的标准流程(kubeadm)
一 升级前准备
- 备份关键数据与配置:优先备份 etcd(建议做快照),以及 /etc/kubernetes/ 目录;etcd 快照示例:ETCDCTL_API=3 etcdctl snapshot save /path/snapshot.db --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key。
- 检查集群健康:kubectl get nodes、kubectl get pods -A 均为 Ready/Running;确认控制面与 etcd 集群状态正常。
- 确认升级路径:仅支持按相邻次要版本递进(如 1.23→1.24→1.25),不可跨多个次要版本;kubectl 与集群版本通常建议相差不超过 1 个次要版本。
- 维护窗口与高可用:选择低峰期;如使用 HAProxy/Keepalived 等前端,确保升级期间能剔除正在维护的 API Server。
- 容器运行时:自 v1.24 起内置的 dockershim 已移除,需使用 containerd(或 CRI-O);如使用 containerd,建议准备 /etc/crictl.yaml(如设置 criSocket: unix:///var/run/containerd/containerd.sock)。
二 控制平面节点升级(逐个进行)
- 升级 kubeadm(解除 hold → 安装 → 再加回 hold):
apt-mark unhold kubeadm & & apt-get update & & apt-get install -y kubeadm=< 目标版本> & & apt-mark hold kubeadm - 查看可升级版本与计划:
apt-cache madison kubeadm | grep < 目标版本> ;kubeadm version;kubeadm upgrade plan - 执行控制面升级(按提示选择版本):
kubeadm upgrade apply v< 目标版本> - 腾空节点(维护前务必执行):
kubectl drain < 控制面节点名> --ignore-daemonsets --force - 升级 kubelet 与 kubectl(解除 hold → 安装 → 再加回 hold):
apt-mark unhold kubelet kubectl & & apt-get update & & apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本> & & apt-mark hold kubelet kubectl - 重启 kubelet:
systemctl daemon-reload & & systemctl restart kubelet - 恢复调度:
kubectl uncordon < 控制面节点名> - 多控制面 HA:重复以上步骤处理其余控制面节点,逐台滚动升级。
三 工作节点升级(逐个进行)
- 腾空节点:
kubectl drain < 工作节点名> --ignore-daemonsets --force - 升级 kubeadm(与控制面目标版本保持一致):
apt-mark unhold kubeadm & & apt-get update & & apt-get install -y kubeadm=< 目标版本> & & apt-mark hold kubeadm - 可选:在节点上执行 kubeadm 节点升级(部分环境可省略,直接升级 kubelet 并重启):
kubeadm upgrade node - 升级 kubelet 与 kubectl:
apt-mark unhold kubelet kubectl & & apt-get update & & apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本> & & apt-mark hold kubelet kubectl - 重启 kubelet:
systemctl daemon-reload & & systemctl restart kubelet - 恢复调度:
kubectl uncordon < 工作节点名> - 验证:kubectl get nodes 应显示新版本且 Ready。
四 升级后验证与常见问题
- 集群状态:
kubectl get nodes;kubectl get pods -A;确认所有节点 Ready、系统组件与业务 Running。 - 组件日志:
journalctl -u kubelet -f;必要时查看 kube-apiserver、kube-controller-manager、kube-scheduler 日志。 - 周边组件:按兼容性升级 CNI(如 Calico/Flannel)、Ingress Controller、CoreDNS、监控与日志组件。
- 常见问题与要点:
- 禁止跨多个次要版本;
- 升级前确保 etcd 健康并已完成备份;
- 升级期间业务可能出现短暂中断,务必提前规划维护窗口与回滚方案;
- 如从 ≤1.23 升级到 ≥1.24,需确保容器运行时为 containerd 并已正确配置 CRI。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何升级Kubernetes版本
本文地址: https://pptw.com/jishu/757927.html
