Debian上Kubernetes如何进行版本升级

Debian上Kubernetes版本升级实操指南一 升级前准备与版本路径备份关键数据与配置:优先备份 /etc/kubernetes/ 与 etcd(如使用外部 etcd,建议用 etcdctl 做快照),以便回滚。检查集群健康:kubectl get nodes、kubectl get pods -A 均为正常,控制面组件 Pod 为 Running。确认升级路径:仅支持相邻小版本递进(如

Debian上Kubernetes版本升级实操指南

一 升级前准备与版本路径

  • 备份关键数据与配置:优先备份 /etc/kubernetes/etcd(如使用外部 etcd,建议用 etcdctl 做快照),以便回滚。检查集群健康:kubectl get nodeskubectl get pods -A 均为正常,控制面组件 Pod 为 Running。确认升级路径:仅支持相邻小版本递进(如 1.28 → 1.29),不可跨多个大版本;kubectl 与集群版本差距不应超过 1 个次要版本。环境要求:已禁用 Swap,系统时间同步,容器运行时与网络/存储插件与目标版本兼容。kubeadm 升级时会自动处理控制面临时证书的续期(可通过 –certificate-renewal=false 关闭)。

二 使用 kubeadm 的标准升级流程(Debian 包管理)

  • 在所有节点准备新版本包:查看可用版本并固定目标版本
    • apt update
    • apt-cache policy kubeadm
    • apt-mark unhold kubeadm && apt-get install -y kubeadm=1.29.x-00 && apt-mark hold kubeadm
  • 升级第一个控制平面节点
    • 检查升级计划:kubeadm upgrade plan
    • 执行升级:sudo kubeadm upgrade apply v1.29.x(如需跳过证书续期:–certificate-renewal=false)
  • 升级其余控制平面节点
    • 在每个控制面节点:sudo kubeadm upgrade node
  • 升级 kubelet 与 kubectl(所有节点)
    • apt-mark unhold kubelet kubectl && apt-get install -y kubelet=1.29.x-00 kubectl=1.29.x-00 && apt-mark hold kubelet kubectl
    • systemctl daemon-reload && systemctl restart kubelet
  • 逐节点腾空、升级、恢复
    • 驱逐:kubectl drain –ignore-daemonsets
    • 升级 kubeadm/kubelet/kubectl 并重启 kubelet(同上)
    • 恢复:kubectl uncordon
  • 升级 CNI 插件与其他扩展
    • 按所用网络插件(如 Calico/Flannel/Cilium)官方说明执行升级;若以 DaemonSet 部署,通常在首个控制面升级后自动更新,其余控制面无需重复。其他组件(如 Ingress Controller、Dashboard、Metrics Server、CSI)需检查与目标 K8s 版本的兼容性后再升级。

三 就地二进制替换升级方案(不依赖 apt,适用于特殊场景)

  • 适用前提:无法立即通过仓库升级或需快速回滚二进制。流程要点:
    • 在每个节点下载并替换二进制:kubeadm、kubelet、kubectl(示例:wget https://dl.k8s.io/release/v1.29.10/bin/linux/amd64/{kubeadm,kubelet,kubectl};chmod +x;mv 至 /usr/local/bin
    • 控制平面节点:先 kubeadm version 校验,再执行 kubeadm upgrade plan 与 kubeadm upgrade apply v1.29.10
    • 逐节点 drain → 重启 kubelet(systemctl daemon-reload && systemctl restart kubelet)→ uncordon
    • 注意:证书续期、配置漂移与回滚策略需自行把控,生产环境优先使用包管理升级。

四 升级后验证与回滚要点

  • 验证:kubectl version –short、kubectl get nodes(均为 Ready)、kubectl get pods -A(无 CrashLoopBackOff/Error)、组件日志(journalctl -u kubelet -f)。如升级涉及 API 废弃/变更,按版本说明调整清单与代码。回滚:优先使用 kubeadm 的回滚能力(如 kubeadm upgrade rollback),若采用二进制替换方案,按备份的二进制与配置恢复;etcd 快照可用于灾难恢复。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1483899.html

(0)
派派
上一篇 2026-01-03
下一篇 2026-01-03

发表回复

登录后才能评论