Kubernetes v1.37 抢先看
内容提要
Kubernetes v1.37计划于2026年8月26日发布,包含多项重要变更:弃用kubectl run的-f标志和kube-proxy的ipvs模式;禁止静态Pod引用API资源;逐步淘汰cgroup v1;SELinuxMount和metrics.k8s.io API达到GA;kubelet根less模式进入Beta;新增CSI卷健康监控API。用户需关注迁移和兼容性调整。
延伸解读
弃用与迁移:提前规划是关键
v1.37 弃用了 kubectl run 的 -f 标志和 kube-proxy 的 ipvs 模式,并禁止静态 Pod 引用 API 资源。这些变更意味着依赖这些功能的脚本和配置需要调整。建议用户检查现有工作负载,尤其是使用 ipvs 模式的集群,尽早规划迁移路径,避免在升级时遇到兼容性问题。
cgroup v1 淘汰:长期影响需重视
自 v1.35 起,kubelet 默认在 cgroup v1 上初始化失败,v1.37 继续推进淘汰。虽然可通过配置临时覆盖,但高级资源管理功能(如原地 Pod 扩容)依赖 cgroup v2。长期来看,迁移到 cgroup v2 是必然趋势,建议用户评估节点环境,制定迁移计划。
SELinuxMount GA:行为变化需注意
SELinuxMount 达到 GA 并默认启用,卷挂载方式从递归重新标记改为使用上下文选项。这可能导致同一节点上不同 SELinux 标签的 Pod 共享卷时启动失败。若需保留旧行为,可在 Pod 中设置 seLinuxChangePolicy: Recursive。未启用 SELinux 的集群不受影响。
存储健康监控:新 API 增强可观测性
v1.37 重新引入 CSI 卷健康监控 API(Alpha),新增四个 RPC,使控制器和节点侧能报告存储卷健康状态,并记录在 PVC 和 Pod 状态中。这有助于运维人员更早发现存储故障,减少依赖外部仪表盘排查问题。但作为 Alpha 功能,使用时需关注其稳定性。
Q&A
Kubernetes v1.37 中 kubectl run 的 -f 标志为什么被弃用?
因为 kubectl run 生成的 Pod 总是完全基于命令行参数(如 NAME 和 --image)构建,-f 标志没有实际用途,因此被弃用。
Kubernetes v1.37 对静态 Pod 引用 API 资源有什么限制?
从 v1.37 开始,静态 Pod 被严格禁止通过 configMapRef 或 secretRef 等字段引用 Secrets 或 ConfigMaps,并且之前用于选择退出此限制的 PreventStaticPodAPIReferences 特性门控已被移除。
Kubernetes v1.37 中 kube-proxy 的 ipvs 模式为何被弃用?
因为内核 ipvs API 无法完全实现 Kubernetes Services,ipvs 模式底层仍依赖 iptables,未能解决性能瓶颈,因此被弃用。
Kubernetes v1.37 中 cgroup v1 的支持情况如何?
cgroup v1 支持正在逐步淘汰,kubelet 默认在 cgroup v1 节点上初始化失败,除非显式设置 failCgroupV1: false 进行临时覆盖。但该覆盖只是短期方案,未来版本将移除 cgroup v1 支持。
Kubernetes v1.37 中 SELinuxMount 达到 GA 后对卷挂载有什么影响?
当 CSI 驱动选择启用 seLinuxMount 时,卷将以 -o context=<label> 方式挂载,而不是递归重新标记。这可能导致同一节点上不同 SELinux 标签的 Pod 共享卷时启动失败,可通过设置 seLinuxChangePolicy: Recursive 保留旧行为。
metrics.k8s.io API 在 v1.37 中达到 GA 意味着什么?
metrics.k8s.io API 在 v1.37 中达到稳定版(GA),提供标准方式获取 Pod 和节点的 CPU/内存使用情况,支持 HPA 和 kubectl top。v1 和 v1beta1 版本在过渡期间都可用,无功能变化。
Kubernetes v1.37 中 kubelet 根less 模式进入 Beta 有什么好处?
kubelet 可以在 Linux 用户命名空间中以非特权用户运行,同时保持命名空间内的 root 行为,减少主机级 root 权限需求,增加隔离层,限制节点组件漏洞的影响。
Kubernetes v1.37 新增的 CSI 卷健康监控 API 有哪些新 RPC?
新增四个 CSI RPC:ControllerListVolumeHealth 和 ControllerGetVolumeHealth 用于控制器侧报告卷健康,NodeGetVolumeHealth 和 NodeGetStorageHealth 用于节点侧报告卷和驱动健康。