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

如何在 Ubuntu 上升级 Kubernetes 版本

时间2026-01-21 19:50:04发布访客分类主机资讯浏览807
导读:Ubuntu 上升级 Kubernetes 版本的标准流程 一 升级前准备 备份关键数据与配置:对 etcd 做快照(ETCDCTL_API=3),并备份 /etc/kubernetes/ 目录,确保可回滚。 检查集群健康:确认控制面与节...

Ubuntu 上升级 Kubernetes 版本的标准流程

一 升级前准备

  • 备份关键数据与配置:对 etcd 做快照(ETCDCTL_API=3),并备份 /etc/kubernetes/ 目录,确保可回滚。
  • 检查集群健康:确认控制面与节点均为 Ready,核心组件 Running,无 CrashLoopBackOff/Error。
  • 确认升级路径:遵循“相邻次要版本递进”,不可跨多个次要版本(如 1.23 → 1.24 → 1.25)。
  • 运行时与版本边界:自 v1.24 起内置的 Docker 支持已移除(dockershim 删除),需使用 containerd 等受支持的 CRI;升级前确保节点运行时已就绪。
  • 维护窗口与变更管控:选择业务低峰期,尽量避免升级期间执行其他运维操作。

二 控制平面升级(单主或多主)

  • 逐台处理控制面节点,升级前先腾空该节点:
    • 标记不可调度并驱逐:kubectl drain --ignore-daemonsets --delete-emptydir-data --force
  • 升级 kubeadm(先解 hold、升级、再 hold):
    • sudo apt-mark unhold kubeadm & & sudo apt-get update & & sudo apt-get install -y kubeadm=< 目标版本> & & sudo apt-mark hold kubeadm
  • 检查可升级版本与差异:
    • kubeadm version
    • sudo kubeadm upgrade plan(会列出控制面与目标版本组件差异)
  • 执行控制面升级:
    • 首个控制面:sudo kubeadm upgrade apply < 目标版本>
    • 其他控制面:sudo kubeadm upgrade node(无需再执行 plan 与 CNI 插件操作)
  • 升级 kubelet 与 kubectl:
    • sudo apt-mark unhold kubelet kubectl & & sudo apt-get update & & sudo apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本> & & sudo apt-mark hold kubelet kubectl
    • sudo systemctl daemon-reload & & sudo systemctl restart kubelet
  • 恢复调度:kubectl uncordon
  • 可选:若暂不升级 etcd,可使用 –etcd-upgrade=false(仅在明确风险可控时使用)。

三 工作节点升级

  • 逐台升级,流程与控制面类似:
    • 腾空:kubectl drain --ignore-daemonsets --delete-emptydir-data --force
    • 升级 kubeadm(与集群目标版本一致)并解 hold/安装/再 hold
    • 执行节点升级:sudo kubeadm upgrade node
    • 升级 kubelet/kubectl 并重启:sudo systemctl daemon-reload & & sudo systemctl restart kubelet
    • 恢复调度:kubectl uncordon
  • 观察节点与系统组件状态,确认 Ready 后再升级下一台。

四 升级后验证与常见问题

  • 版本与状态核验:
    • kubectl get nodes(版本与 Ready 状态)
    • kubectl get pods -A(核心组件与业务 Pod 均 Running)
    • kubectl version --short
    • 组件日志:journalctl -u kubelet -fjournalctl -u kube-apiserver -f
  • 常见问题与处理:
    • 镜像拉取失败并出现 “dial unix /var/run/dockershim.sock: no such file or directory”:这是 v1.24+ 移除 dockershim 的典型现象,需确保使用 containerd 并正确配置 CRI 套接字(如 /run/containerd/containerd.sock),必要时用 kubeadm config images pull 预拉镜像。
    • 升级中断或失败:回滚到上一可用版本或基于 etcd 快照恢复,再按流程重做升级。
    • 升级影响:控制面滚动重启期间,强依赖 API Server 的应用需具备重连重试能力。

五 版本路径与兼容性要点

  • 仅支持“逐级”升级,不能跨多个次要版本;升级完成后建议观察一段时间再继续下一轮升级。
  • v1.24 起不再内置支持 Docker,需迁移到 containerd 或其他受支持的 CRI 运行时。
  • 组件版本关系:kubectl 与集群版本通常建议相差不超过 1 个次要版本;升级期间保持 kubelet 与控制面版本一致或在其后及时对齐。

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


若转载请注明出处: 如何在 Ubuntu 上升级 Kubernetes 版本
本文地址: https://pptw.com/jishu/789020.html
Kubernetes 服务发现如何在 Ubuntu 上配置 Kubernetes 应用如何在 Ubuntu 上部署

游客 回复需填写必要信息