首页主机资讯如何在 Ubuntu 上升级 Kubernetes

如何在 Ubuntu 上升级 Kubernetes

时间2025-12-09 03:31:04发布访客分类主机资讯浏览1390
导读:Ubuntu 上升级 Kubernetes 的标准流程(kubeadm) 一 升级前准备 备份与快照:对etcd、重要PV/数据库、集群配置与清单进行备份;必要时对节点做快照,便于回滚。 版本规划与兼容性检查: 查看当前版本:kubec...

Ubuntu 上升级 Kubernetes 的标准流程(kubeadm)

一 升级前准备

  • 备份与快照:对etcd、重要PV/数据库、集群配置与清单进行备份;必要时对节点做快照,便于回滚。
  • 版本规划与兼容性检查:
    • 查看当前版本:kubectl version --short;检查客户端与服务端是否匹配。
    • 遵循 Kubernetes 版本倾斜策略:kubelet ≤ apiserver(最多低 2 个小版本)kubectl 与 apiserver 相差不超过 1 个小版本controller-manager/scheduler 不能高于 apiserver
    • 升级顺序:先控制平面,后工作节点;多控制面需逐个升级并维持 HA。
  • 维护窗口与流量治理:设置维护窗口,通过Service 的 externalTrafficPolicy=Local拓扑感知路由减少升级抖动;准备回滚预案。
  • 容器运行时:自 v1.24 起内置 dockershim 移除,需使用 containerd(或 CRI-O);如使用 containerd,建议版本 ≥1.6
  • 节点维护准备:
    • 标记不可调度并驱逐:kubectl drain < node> --ignore-daemonsets --delete-emptydir-data --force
    • 维护完成后恢复:kubectl uncordon < node>
  • 软件源与版本锁定:
    • 建议将 kubeadm/kubelet/kubectl 置于版本锁定(hold),升级时先 unhold 再安装,完成后 hold,避免被系统自动升级波及。

二 控制平面升级步骤

  • 选择一个控制面节点,确保存在 /etc/kubernetes/admin.conf
  • 升级 kubeadm(示例目标版本:v1.29.2):
    • sudo apt-mark unhold kubeadm
    • sudo apt-get update & & sudo apt-get install -y kubeadm='1.29.2-1.1'
    • sudo apt-mark hold kubeadm
    • 验证:kubeadm version
  • 预检升级计划:sudo kubeadm upgrade plan(如跨小版本,会提示组件与镜像信息)
  • 执行升级(按提示选择版本;etcd 可按需单独升级):
    • 单控制面:sudo kubeadm upgrade apply v1.29.2
    • 或仅升级控制面组件:sudo kubeadm upgrade apply v1.29.2 --etcd-upgrade=false
  • 升级 kubelet 与 kubectl(保持与 apiserver 兼容):
    • sudo apt-mark unhold kubelet kubectl
    • sudo apt-get install -y kubelet='1.29.2-1.1' kubectl='1.29.2-1.1'
    • sudo apt-mark hold kubelet kubectl
    • sudo systemctl daemon-reload & & sudo systemctl restart kubelet
  • 恢复节点:kubectl uncordon < master-node>
  • 多控制面:在其余控制面节点重复以上步骤(先 drain、升级 kubeadm、执行 kubeadm upgrade node、升级 kubelet/kubectl、uncordon)。

三 工作节点升级步骤

  • 驱逐节点:kubectl drain < node> --ignore-daemonsets --delete-emptydir-data --force
  • 登录节点,升级 kubelet/kubectl(与 apiserver 兼容):
    • sudo apt-mark unhold kubelet kubectl
    • sudo apt-get update & & sudo apt-get install -y kubelet='1.29.2-1.1' kubectl='1.29.2-1.1'
    • sudo apt-mark hold kubelet kubectl
    • sudo systemctl daemon-reload & & sudo systemctl restart kubelet
  • 恢复节点:kubectl uncordon < node>
  • 逐节点滚动升级,保持集群可用。

四 升级后验证与常见问题

  • 集群与节点状态:
    • kubectl get nodes 确认所有节点 Ready
    • kubectl get pods -A 检查 kube-system 等关键组件 Running
    • kubectl version --short 确认客户端与服务端版本在兼容范围内
  • 网络与存储插件:确认 CNI(如 Calico/Flannel/Cilium)与 CSI 驱动版本兼容并已就绪。
  • 常见问题处理:
    • 镜像拉取失败:检查节点网络/代理、镜像仓库可达性;必要时 kubeadm config images pull
    • Pod 未就绪:查看 kubectl describe pod < pod> -n kube-systemjournalctl -u kubelet 定位镜像、权限或资源问题
    • 容器运行时错误:若从 v1.23→v1.24+,确保使用 containerd/etc/crictl.yaml 配置正确(如 runtime-endpoint: unix:///run/containerd/containerd.sock
    • 回滚:控制面可用 kubeadm upgrade rollback;或基于快照/备份恢复,再回退软件包版本并重启 kubelet。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在 Ubuntu 上升级 Kubernetes
本文地址: https://pptw.com/jishu/766721.html
Debian系统中如何查看CPU信息 Kubernetes 集群在 Ubuntu 上如何监控

游客 回复需填写必要信息