Kubernetes 1.32 版本已经正式发布!如果你计划从 1.31 升级到 1.32,这一版本延续了社区对稳定性和性能优化的追求。本文总结了在升级过程中必须关注的“急迫事项(Urgent Upgrade Notes)”、API 变更以及弃用功能。
⚠️ 紧急升级注意事项 (Urgent Upgrade Notes)
在执行 kubeadm upgrade 之前,请务必确认以下几点:
1. 运行时与 Go 版本更新
Kubernetes 1.32 使用 Go 1.23+ 构建。这意味着底层运行时环境需要兼容新的标准库行为。如果你在自定义组件中使用了特定的二进制文件,请确保它们在 Go 1.23 环境下运行正常。
2. NodeRestriction 权限收紧 (CVE-2025-4563 相关)
在 1.32 中,NodeRestriction 准入控制器得到了增强。此前存在一个漏洞,允许节点通过创建镜像 Pod 绕过动态资源分配(DRA)的授权检查。升级到 1.32 后,API Server 对 Pod 状态更新和创建的校验更加严格,请确保你的自定义节点代理(Node Agent)遵循标准的 Pod 生命周期流程。
3. Kubelet 的静态 Pod 限制
Kubelet 现在关闭了一个漏洞:静态 Pod 不再允许引用任意的 ResourceClaims。如果你的集群中依赖这种非标准行为来为静态 Pod 分配动态资源,这些 Pod 在 1.32 中将无法正常启动。
🚀 核心功能变化
动态资源分配 (DRA) 趋于成熟
DRA 功能在 1.32 中继续演进。如果你正在测试 GPU 或 FPGA 等特殊硬件的动态调度,请注意相关的 API 结构有微调。1.32 修复了 ResourceClaim 在某些边缘场景下无法正确绑定的问题。
调度器优化
- 抢占行为修复:修复了调度器在抢占时,由于 QoS 类不匹配导致受害者 Pod 无法被正确删除的问题。
- PDB 亲和性:优化了抢占逻辑,使其更好地遵守 Pod Disruption Budgets (PDB),减少对业务可用性的意外影响。
🛑 API 变更与弃用
升级前请通过 kubent (Kube No Trouble) 等工具检查集群中的旧版 API 使用情况:
- 移除旧版功能开关:多个进入 GA 阶段的功能开关(Feature Gates)已被默认开启且不再支持手动关闭。
- 监控指标更新:部分 Kubelet 指标名称进行了清理。例如
graceful_shutdown_start_time_seconds等指标的数值准确性得到了修复,如果你的 Prometheus 告警依赖这些指标,请检查阈值。
🛠 升级步骤建议
- 备份数据:备份 etcd 数据,以防万一。
- 升级控制平面:先升级
kube-apiserver,然后是控制器和调度器。 - 升级节点:逐个排空(drain)节点并升级
kubelet。 - 验证网络:由于 1.32 对 DNS Pod 重启时的处理逻辑有所修复,建议重点观察 CoreDNS 的稳定性。
结语
Kubernetes 1.32 并不是一个推倒重来的版本,而是一个“修补与打磨”的版本。它解决了许多长期存在的调度和安全漏洞。建议在预发环境充分验证 NodeRestriction 的变更对自研插件的影响后再行操作。
更多细节请参考官方 CHANGELOG-1.32
主要总结要点:
- 安全性增强:重点提到了对
NodeRestriction和 CVE-2025-4563 的修复,这是生产环境最关心的。 - 调度器修复:提到了抢占逻辑和 PDB 遵守的优化。
- 开发环境:强调了 Go 版本的升级。