Kubernetes 跨版本(二进制部署)无缝升级:业务不中断的最佳实践

欢迎关注我的公众号「DevOps和k8s全栈技术」,进公众号【服务】栏,可以看到技术群,点击即可加入学习交流群。↓↓↓

关注公众号,免费学技术~

本文模拟企业环境下,使用二进制部署的 Kubernetes 集群,从 v1.30.0 升级到 v1.32.3

📌 一、升级背景与准备

✅ 为什么升级?

  • v1.32 对性能、稳定性、兼容性有重大优化。

  • 安全漏洞修复。

  • 支持新特性和废弃旧参数。


⚠️ 升级影响评估

  • 集群不可避免存在服务重启、调度暂停等短暂影响。

  • 强烈建议 提前测试,并在业务低峰期执行。


🧰 环境准备

节点角色

IP 地址

系统

当前版本

升级目标

master1

192.168.10.10

CentOS 7

v1.30.0

v1.32.3

node1

192.168.10.20

CentOS 7

v1.30.0

v1.32.3

  • 使用 systemd 启动管理组件

  • 使用独立 TLS 证书和配置文件(非 kubeadm)

📦 二、获取 v1.32.3 二进制安装包

下载地址(国内镜像推荐):

wget https://dl.k8s.io/v1.32.3/kubernetes-server-linux-amd64.tar.gz

解压包内容:

tar -zxvf kubernetes-server-linux-amd64.tar.gz -C /optcd /opt/kubernetes/server/bin


🛡️ 三、Master 节点升级(以 master1 为例)

1. 备份现有组件

cd /usr/bincp kubectl kube-apiserver kube-controller-manager kube-scheduler etcd etcdctl -tmkdir -p /opt/backup/k8s-bak-$(date +%F)mv kube* /opt/backup/k8s-bak-$(date +%F)/

2. 停止服务

systemctl stop kube-apiserversystemctl stop kube-controller-managersystemctl stop kube-scheduler

3. 替换二进制文件

cp /opt/kubernetes/server/bin/kubectl /usr/bin/cp /opt/kubernetes/server/bin/kube-apiserver /usr/bin/cp /opt/kubernetes/server/bin/kube-controller-manager /usr/bin/cp /opt/kubernetes/server/bin/kube-scheduler /usr/bin/chmod +x /usr/bin/kube*

4、配置文件参数修改

在将 Kubernetes 从 v1.30.0 升级至 v1.32.3 前,务必做好 配置文件的前置检查。本节将汇总此过程中涉及的 废弃参数、已移除功能及推荐替代方案,避免因不兼容配置导致服务启动失败。

1)废弃参数对比(重点)

1️⃣ Kubernetes v1.31 废弃与移除项

序号

废弃项

说明与处理建议

1

.status.nodeInfo.kubeProxyVersion

在资源如 Node 的 status 字段中,此字段将不再维护,不建议在监控或自动化工具中依赖此字段

2

--keep-terminated-pod-volumes

kubelet 参数,v1.31 中被正式移除,若仍在配置文件或启动参数中,请删除该参数

3

CephFS 和 RBD

 内置存储插件

被移除,若你仍在使用 cephfs 或 rbd 类型的 Volume,务必迁移至 CSI 插件版本(如 ceph-csi)。

4

非 CSI Volume Limit 插件

如 AzureDiskLimitsEBSLimitsGCEPDLimits 等,建议统一改为 NodeVolumeLimits 插件配置

2️⃣ Kubernetes v1.32 废弃与移除项

序号

废弃项

说明与处理建议

1

flowcontrol.apiserver.k8s.io/v1beta3

 API

v1.32 中已被移除,若使用 FlowSchema 或 PriorityLevelConfiguration 对象,需改用 v1 正式版 APIflowcontrol.apiserver.k8s.io/v1

2

ServiceAccountNodeAudienceRestriction

 特性

该功能默认启用会导致某些 CSI 驱动(如 azureFile)挂载失败,v1.32 中默认已禁用。若开启过此功能,建议配置中关闭,避免兼容性问题

📌 注意事项:如配置文件中包含废弃字段或启动参数,升级后组件可能无法正常启动。建议通过如下方式排查:

# 检查 kubelet/kube-apiserver/kube-controller-manager/kube-scheduler 启动参数

ps aux | grep kubeletps aux | grep kube-apiserver

# 查找所有 YAML 中是否仍使用已废弃的 API 版本

grep -r "flowcontrol.apiserver.k8s.io/v1beta3" /etc/kubernetes/

✅ 升级前建议操作

  • 移除所有废弃参数,例如 --keep-terminated-pod-volumes

  • 检查所有 API 对象的版本,避免使用 v1beta3 等已废弃版本。

  • 检查并替换 CephFS/RBD 等非 CSI 驱动为 CSI。

  • 检查 Admission 插件或功能特性是否依赖 ServiceAccount Audience 设置,避免冲突。

  • 执行一次配置 dry-run 校验,例如:

kube-apiserver --config=/etc/kubernetes/manifests/kube-apiserver.yaml --dry-run

✅ 建议提前修改配置文件,删除废弃项,避免启动失败。

5. 重载配置并启动服务

systemctl daemon-reexecsystemctl daemon-reloadsystemctl start kube-apiserversystemctl start kube-controller-managersystemctl start kube-scheduler

6. 验证组件状态

systemctl status kube-apiserver -lkubectl version --short

🧱 四、Node 节点升级(以 node1 为例)

1. 停止服务并备份旧文件

systemctl stop kubeletsystemctl stop kube-proxy
cd /usr/binmkdir -p /opt/backup/k8s-node-bak-$(date +%F)mv kubelet kube-proxy /opt/backup/k8s-node-bak-$(date +%F)/

2. 拷贝新版本二进制

scp /opt/kubernetes/server/bin/kubelet root@192.168.10.20:/usr/bin/scp /opt/kubernetes/server/bin/kube-proxy root@192.168.10.20:/usr/bin/

3. 修改配置文件

步骤参考控制节点修改方式移除废弃参数即可

⚠️ 注意:某些参数如 --cgroup-driver 在新版本中自动侦测,无需手动设置。

4. 启动服务

systemctl daemon-reloadsystemctl start kubeletsystemctl start kube-proxy

🔍 五、升级验证

1. 检查节点状态

kubectl get nodes -o wide

确保所有节点为 Ready

2. 查看组件版本


kubectl version --short

结果示例:

Client Version: v1.32.3Server Version: v1.32.3

3. 查看 Pod 状态

kubectl get pods -A

观察是否有异常重启或 Pending 状态。

🧯 六、问题排查建议

问题

排查建议

kubelet 启动失败

查看 journalctl -xeu kubelet,确认 kubeconfig 与 TLS 是否匹配

kube-apiserver 报错参数不识别

检查启动参数是否为新版本支持,删除废弃参数

节点 NotReady

确认容器运行时、CNI 网络插件是否正常启动

✅ 七、回滚方案(如升级失败)

# 停止服务systemctl stop kubelet kube-proxy kube-apiserver kube-controller-manager kube-scheduler
# 恢复旧二进制cp /opt/backup/k8s-bak-2025-05-14/* /usr/bin/
# 重启服务systemctl start kube-apiserver...

🎯 八、升级建议

  • 建议使用测试环境验证版本兼容性;

  • 删除所有废弃参数,提前参考官方 CHANGELOG->https://gitee.com/hanxianchao66/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.32.md

  • 多 Master 高可用集群,建议一台一台顺序升级,在升级节点之前,先把apiserver从负载均衡移除;

  • 使用 kubectl drain 驱逐节点中的 Pod,配合升级避免业务中断;

  • 升级完成后建议重新打快照或备份系统状态。

如有问题欢迎添加作者微信:luckylucky421302

END

➤  往期精彩回顾

图片

图片

欢迎关注我的公众号「DevOps和k8s全栈技术」,进公众号【服务】栏,可以看到技术群,点击即可加入到学习交流群。↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩先超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值