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 爲準。

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

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

小夜