Kubernetes 1.37 即将发布:DRA 增强、AI/ML 批调度与 nftables 过渡一文读懂

前言

Kubernetes 社区按半年一版的节奏持续推进。根据 Kubernetes Contributors 官方发布日历v1.37.0 定于 2026 年 8 月 26 日(周三)正式发布。截至本文写作时(2026 年 8 月 1 日),发布周期已进入第 12 周:release-1.37 分支已创建,v1.37.0-rc.0 已放出,文档冻结(Docs Freeze)刚于 8 月 5–6 日完成,距离 GA 还有不到四周。

本版在 SIG Release 讨论 #3051 与各 SIG 的 Release Highlights 汇总中,被社区反复提及的方向包括:Dynamic Resource Allocation(DRA)多项能力毕业面向 AI/ML 的 Workload API 与 CompositePodGroupkube-proxy 向 nftables 的渐进式过渡,以及 Pod 证书、Kubelet Rootless 等安全与节点侧改进。官方 Enhancement 跟踪器显示,本里程碑共纳入约 86 项增强(不含 Deferred / Removed from Milestone 条目),其中首次进入 Alpha 的新特性约 22 项。

如果你正在规划集群升级、评估 GPU/AI 训练调度方案,或关注 kube-proxy 后端迁移,下文按主题梳理已核实的关键变化与实操要点。

发布节奏:从 Code Freeze 到 GA

v1.37 发布周期自 2026 年 5 月 18 日启动,几个关键节点如下:

节点 时间
Enhancements Freeze 2026 年 6 月 16–17 日
KubeCon India 2026 年 6 月 18–19 日
Code Freeze & Test Freeze 2026 年 7 月 22–23 日
KubeCon Japan 2026 年 7 月 28–30 日
Docs Freeze 2026 年 8 月 5–6 日
v1.37.0-rc.0 2026 年 8 月 5 日
v1.37.0 GA 2026 年 8 月 26 日

KubeCon Japan 后,各 SIG 在 GitHub Discussion 中集中提交了 Release Highlights,Comms 团队据此撰写官方发布博客;Feature Blog 系列预计 GA 次日(8 月 27 日)起陆续发布。若你使用 RC 镜像做预验证,建议关注 release-1.37 分支 上的后续 rc 版本。

DRA:设备污点 GA 与扩展资源成熟

Dynamic Resource Allocation 自 1.26 引入以来,一直是 GPU、NIC、FPGA 等专用硬件调度的重要路径。SIG Scheduling 与 SIG Node 在 1.37 中继续推进 DRA 生态,以下变化已在 Release Highlights 中确认:

毕业至 GA(Stable)的能力:

  • DRA device taints and tolerations(设备污点与容忍):类似 Node 污点机制,允许驱动或管理员标记设备不可用或仅允许特定工作负载使用,调度器在分配 ResourceClaim 时尊重这些约束。
  • DRA extended resources:扩展资源模型正式稳定,便于与现有 resources.limits/requests 体系衔接。
  • DRA: Resource Claim Status with standardized network interface data(KEP-4817):网络类 DRA 驱动可用标准化字段描述已挂载的网络接口,便于 CNI 或上层应用消费。

仍为 Alpha、但值得关注的 DRA 新特性:

  • DRA Device Compatibility Groups(KEP-5963):解决同一 GPU 上 MIG / vGPU 等配置互斥导致的调度冲突——调度器不再只看容量,还会检查设备兼容性组是否重叠。
  • DRA Derived Attributes(KEP-6080):通过 CEL 表达式从各厂商驱动属性中派生统一键(如 NUMA 节点 ID),实现跨驱动 matchAttribute 绑定。
  • DRA Optional Node Preparation(KEP-5945):云/虚拟资源可声明 SkipNodeOperations,kubelet 跳过本地 gRPC 驱动调用,无需在每个节点部署 dummy DaemonSet。
  • Standard numaNode Device Attribute(KEP-6072):统一 resource.kubernetes.io/numaNode 属性名,便于 GPU、NIC、CPU 等同 NUMA 共置。

对运行 AI 推理/训练、且已通过 DRA 申请 GPU 的团队,1.37 意味着生产级污点隔离与更精细的硬件拓扑调度已就绪;Alpha 特性则适合在测试集群先行验证兼容性组与派生属性。

AI/ML 批调度:Workload API 与 CompositePodGroup

Kubernetes 调度长期以单 Pod 为中心;分布式训练、推理 Prefill/Decode 分离等场景需要 Gang Scheduling(全组就绪再一起启动)和 多级拓扑约束。1.36 起 Workload API 与 PodGroup 已提供扁平批调度基础;1.37 在此基础上显著加码

Workload API 与 Job 集成(Beta / Alpha)

根据 SIG Scheduling 与 SIG Apps 的 Highlights:

能力 阶段
Workload API 与 gang scheduling Beta
Workload-aware preemption Beta
DRA ResourceClaim support for Workloads Beta
Controller integration API(Workload building blocks) Alpha
Job 与 Workload API 集成(KEP-5547 / KEP-6089) Alpha(本版改用 building blocks API)

KEP-6089 为 Job 等控制器提供可复用的 scheduling.k8s.io 结构体与 workloadbuilder 库,用户可在 Job manifest 中声明调度意图,例如 Gang、拓扑域与统一中断策略:

apiVersion: batch/v1
kind: Job
metadata:
  name: distributed-train
spec:
  parallelism: 4
  completions: 4
  scheduling:
    policy:
      gang: {}   # MinCount 默认等于 parallelism
    constraints:
      topology:
        - level: "topology.kubernetes.io/zone"
    disruption:
      all: {}    # 整组同时中断
  template:
    spec:
      containers:
        - name: train-node
          image: training-image:v1
          resources:
            limits:
              nvidia.com/gpu: "1"

Feature gate:WorkloadWithJob(Alpha 阶段需显式开启)。

CompositePodGroup:层级化 Gang 调度(Alpha)

KEP-6012 引入 CompositePodGroup API(Feature gate:CompositePodGroup),用于表达树形工作负载结构:根组包含多个子 PodGroup,每个 PodGroup 再包含具体 Pod。典型场景包括:

  • AI 训练中 N 个 Prefill 组 + M 个 Decode 组的层级依赖;
  • 父组需等待最少数量子组就绪后才可整体调度(multi-level gang scheduling);
  • 跨层级的拓扑感知与抢占/中断策略(DisruptionMode 决定子组能否独立被抢占)。

当前 Alpha 限制:同一 CompositePodGroup 树内所有节点须共享相同 priorityPriorityClassName;跨优先级策略留待 Beta。

若你使用 JobSet、LeaderWorkerSet 等 out-of-tree 控制器,CompositePodGroup 为 in-tree _scheduler 理解多级结构提供了标准锚点,后续控制器集成成本有望降低。

kube-proxy 向 nftables 过渡

网络侧最牵动运维的是 KEP-5343:Make nftables the default kube-proxy backend。注意:1.37 并不会立刻把默认后端改成 nftables,而是启动渐进迁移

  1. 自 1.37 起:若未通过 --proxy-mode 或 ConfigMap 中 mode 字段显式指定代理模式,kube-proxy 仍回退到 iptables,但会记录警告并产生 Event,提醒管理员尽快显式配置。
  2. 后续若干版本:持续警告后,nftables 才会成为默认值;iptables 后端仍会保留,用户可继续手动选择。

此外,SIG Network 还确认了以下相关变化:

  • KEP-6032(Alpha):为 nftables 后端提供 localhost NodePort 用户态 TCP 代理。iptables 可借助 route_localnet127.0.0.1 访问 NodePort,nftables 无等价内核能力;启用需同时打开 Feature gate KubeProxyNFTablesLocalhostNodePorts,并设置例如 --nodeport-addresses=primary,localhost。默认 primary 行为不变。
  • kube-proxy 对 nftables 的 list 操作改为通过 netlink 直接访问内核,不再依赖 nft CLI,列表效率提升(kubernetes #137536)。
  • KEP-5495:kubeadm 对 IPVS 模式 增加弃用警告;空 mode 字段相关警告实际归属 KEP-5343,而非 IPVS 移除本身。

实操建议:在 1.37 升级前后,检查 kube-proxy DaemonSet/ConfigMap,显式写入 mode: iptablesmode: nftables,避免依赖隐式默认;若业务依赖 localhost:<NodePort>,在 nftables 后端上需评估 KEP-6032 的 Alpha 配置。

安全与节点:Pod 证书 GA、Kubelet Rootless Beta

Pod Certificates 与 ClusterTrustBundles(GA)

SIG Auth 确认:

  • KEP-4317 Pod Certificates 毕业 GA:工作负载可通过 PodCertificateRequest 向指定 signer 申请 X.509 证书,并以 projected volume 挂载,支持 mTLS 等场景,减少对 Bearer Token 的依赖。
  • KEP-3257 ClusterTrustBundles 毕业 GA:signer 可通过 cluster 级 API 分发信任锚,Pod 按需挂载,无需在每个 namespace 复制 ConfigMap。

这对服务网格、Vault 等外部签发器与 in-tree 集成都是实质性简化。

Kubelet-in-UserNS(Rootless 模式,Beta)

KEP-2033 自 v1.22 Alpha 历经多个版本,在 1.37 晋升 Beta。该特性允许 kubelet、CRI、CNI 等节点组件在 user namespace 中以非 root 身份运行(即社区常说的 Rootless 模式)。本版新增:

  • NodeSystemInfo.RunningInUserNamespace 字段;
  • 节点标签 node.kubernetes.io/running-in-user-namespace

启用需在 KubeletConfiguration 中打开 Feature gate:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
featureGates:
  KubeletInUserNamespace: true
cgroupDriver: "cgroupfs"

前置条件包括 Cgroup v2、正确的 /etc/subuid/etc/subgid 配置等,详见 官方文档。Rootless 对多租户边缘节点、开发机集群降低权限攻击面有意义,但生产落地仍需关注存储、Device Plugin 与 DRA 驱动的兼容性。

其他值得关注的 GA / Beta 变化

篇幅有限,下列条目同样来自官方 Release Highlights,升级规划时可一并纳入评估:

主题 变化 阶段
metrics.k8s.io HPA、kubectl top 依赖的指标 API GA(v1)
KYAML kubectl --output 的稳定 YAML 方言 GA(锁定启用)
Pod Level Resources Pod 级 CPU/内存请求与限制 Stable
HPA scale to zero 缩容至零副本 Beta
ConcurrentWatchObjectDecode Watch 事件并发解码,缓存初始化加速约 40% Beta,默认开启
Storage Version Migrator 存储版本迁移内建化 GA
Resilient Watchcache Initialization 缓解 etcd thundering herd GA
SELinuxMount 卷挂载时 SELinux 标签,加快启动 GA(SIG Storage)
StatefulSet maxUnavailable 并行滚动更新 重新默认开启
StatefulSet Recreate 策略 一次性重建所有 Pod(KEP-3541) Alpha
Pod-Level Checkpoint/Restore 整 Pod 快照与恢复(CRIU) Alpha
EtcdRangeStream apiserver 范围流式查询 etcd Alpha(需 etcd ≥ 3.7)

API 移除方面,1.37 将清理部分已过期的 beta/alpha API 版本(如 certificates.k8s.io 下 v1alpha1 ClusterTrustBundles、networking.k8s.io 下部分 beta 资源等),升级前请用 plutokubectl convert 检查清单中的 API 版本。

升级与验证建议

  1. 阅读 Release Notes 与 Deprecations 博客:GA 当周官方会发布完整说明;Feature Blog 自 8 月 27 日起分批上线。
  2. 在测试集群启用目标 Feature gate:尤其是 CompositePodGroup、WorkloadWithJob、DRA 新 Alpha 特性,避免直接在生产默认开启。
  3. 显式配置 kube-proxy mode:消除 1.37 的 iptables 隐式回退警告,并为未来 nftables 默认化做准备。
  4. AI/ML 工作负载:若已用 JobSet/LWS,跟踪 CompositePodGroup 与 Job scheduling 字段的 controller 集成进度;DRA GA 污点可用于生产级 GPU 隔离。
  5. 安全合规:评估 Pod Certificates 是否可替代部分 Secret 挂载的 TLS 材料;Rootless 节点适合非关键/边缘场景试点。

结语

Kubernetes 1.37 不是单点爆炸式变革,而是 DRA 生产化Workload 感知调度网络栈现代化(nftables)工作负载身份(Pod 证书) 几条主线的交汇。86 项增强中,与 AI/ML 和专用硬件最相关的 CompositePodGroup、Workload API Beta,以及 DRA 污点 GA,可能是本版对平台团队影响最大的几块拼图。

距离 8 月 26 日 GA 尚有数周,建议利用 rc 镜像在预发环境验证 kube-proxy 配置、DRA 驱动版本与 API 弃用清单。官方信息请以 kubernetes.dev Release 页面Enhancements 跟踪器 为准;本文事实均交叉引用了 SIG Release Discussion #3051 与社区技术解读,Feature 阶段以最终 Release Notes 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜