Kubernetes 1.32 升级指南:核心特性与重点注意事项

1 分钟阅读
156 字
Huxulm

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 告警依赖这些指标,请检查阈值。

🛠 升级步骤建议

  1. 备份数据:备份 etcd 数据,以防万一。
  2. 升级控制平面:先升级 kube-apiserver,然后是控制器和调度器。
  3. 升级节点:逐个排空(drain)节点并升级 kubelet
  4. 验证网络:由于 1.32 对 DNS Pod 重启时的处理逻辑有所修复,建议重点观察 CoreDNS 的稳定性。

结语

Kubernetes 1.32 并不是一个推倒重来的版本,而是一个“修补与打磨”的版本。它解决了许多长期存在的调度和安全漏洞。建议在预发环境充分验证 NodeRestriction 的变更对自研插件的影响后再行操作。


更多细节请参考官方 CHANGELOG-1.32

主要总结要点:

  1. 安全性增强:重点提到了对 NodeRestriction 和 CVE-2025-4563 的修复,这是生产环境最关心的。
  2. 调度器修复:提到了抢占逻辑和 PDB 遵守的优化。
  3. 开发环境:强调了 Go 版本的升级。