文章

K8s 1.34 Of Wind and Will 详解

Kubernetes 1.34 Of Wind & Will 详解

概述

v1.34「Of Wind & Will (O’ WaW)」于 2025-08-27 发布,主题致敬「塑造我们的风与推动我们的意志」。含 58 项增强(GA 23 / Beta 22 / Alpha 13)。最大里程碑DRA 核心正式 GAresource.k8s.io/v1),GPU/TPU/NIC 动态分配进入生产可用;Linux Swap GA;结构化认证配置、细粒度授权等多项安全特性毕业。

发布基本信息

项目内容
发布日期2025-08-27
代号Of Wind & Will (O’ WaW)
开发周期15 周(2025-05-19 ~ 2025-08-27)
增强总数58(GA 23 / Beta 22 / Alpha 13)
贡献106 家公司、491 名个人

主要新特性解读

🟢 GA 特性(23 项,重点)

1. DRA 核心 GA(KEP-4381)⭐

  • 解读resource.k8s.io/v1 API 默认可用,支持 GPU/TPU/NIC 等设备的选择、分配、共享与配置。结构化参数让调度器与 Cluster Autoscaler 可直接模拟分配。
  • 价值:加速器管理进入生产,AI/ML 平台可弃用旧 Device Plugin。
  • 相关概念:Device Plugin、ResourceClaim、ResourceSlice、Cluster Autoscaler、GPU 共享。

2. Linux Swap GA(KEP-2400)

  • 解读LimitedSwap 模式正式 GA,节点可控启用 swap,性能调优与噪声邻居缓解。
  • 相关概念:cgroup v2、memory.swap、QoS、NodeSwap

3. 结构化认证配置 GA(KEP-3331)

  • 多认证器、不重启改配置。

4. 细粒度授权 GA(KEP-4601/4633)

  • 字段/标签选择器授权、匿名访问端点精细化。

5. VolumeAttributesClass GA(KEP-3751)

  • 动态修改卷参数(如 IO),在线垂直扩展卷。

6. 有序 Namespace 删除 GA(KEP-5080)

  • 解读:修复 CVE-2024-7598(非确定性删除安全漏洞),确保 Pod 在其他资源之前被移除。
  • 相关概念:finalizer 顺序、命名空间级联删除、CVE 缓解。

7. 弹性 watch cache 初始化 GA(KEP-4568)

  • 大规模集群 watch cache 初始化更稳健,缓解冷启动问题。
  • 相关概念:watch cache、etcd 压力、informer 重启。

8. 流式 list 响应编码 GA(KEP-5116)

  • 减少 API Server 内存压力。

9. CRI 发现 cgroup 驱动 GA(KEP-4033)

  • kubelet 自动从 CRI 查询 cgroup 驱动,取代手动配置(手动配置同时被弃用)。

10. 其他 GA:Job Pod 替换延迟创建、卷扩容失败恢复、Windows DSR、TaintManager 分离、API Server Tracing、AppArmor、从缓存一致性读取、Kubelet OTel 追踪、Sleep Action PreStop 零值、放宽 DNS 搜索路径验证、环境变量特殊字符等。

🟡 Beta 特性(22 项,重点)

1. Pod 级资源请求和限制 Beta(KEP-2837)

  • HPA 已支持,多容器 Pod 共享资源预算。

2. .kuberc Beta(KEP-3104)

  • kubectl 用户偏好与集群凭据分离。

3. 外部 ServiceAccount 令牌签名 Beta(KEP-740)

  • 解读:外部 JWT 签名器(gRPC),支持 HSM/云 KMS 等外部密钥管理。
  • 相关概念:JWT、HSM、KMS、--service-account-key-file、外部签名。

4. DRA AdminAccess Beta(KEP-5018)& DRA 优先替代 firstAvailable Beta(KEP-4816)

  • 管理员安全访问在用设备;优先级列表灵活匹配硬件。

5. 变更准入策略 Beta(KEP-3962)

  • CEL 原生变更准入,替代变更 webhook。

6. 可快照缓存 Beta(KEP-4988)& WatchList Beta(KEP-3157)

  • 历史版本查询从缓存快照而非 etcd;流式 informers 减少 API Server 与 etcd 压力。
  • 相关概念:ListFromCacheSnapshot、ConsistentList、informer 内存优化。

7. 原地 Pod 资源调整改进 Beta(KEP-1287)

  • 支持减少内存 + Pod 级资源集成。

8. PreferSameZone / PreferSameNode Beta(KEP-3015)⭐

  • 解读PreferClose 弃用,演化为 PreferSameZone(别名保留 PreferClose)与 PreferSameNode。明确区分节点级与区域级流量偏好。
  • 相关概念trafficDistribution、EndpointSlice 拓扑、同节点亲和。

9. kubelet 报告 DRA 资源 Beta & kube-scheduler 非阻塞 API Beta & Windows 优雅关机 Beta。

🔴 Alpha 特性(13 项,重点)

1. Pod 证书用于 mTLS(KEP-4317)⭐

  • 解读:Pod 通过 PodCertificateRequest 获取 X.509 证书,实现原生 mTLS。kubelet 生成密钥,apiserver 准入时强制 node restriction。
  • 价值:大幅简化 service mesh 与零信任架构,替代 cert-manager/SPIFFE。
  • 相关概念:mTLS、workload identity、SPIFFE/SPIRE、cert-manager、零信任。

2. 容器重启规则(KEP-5307)

  • 每容器独立 restartPolicy/restartPolicyRules,独立于 Pod 整体策略。适合 AI/ML 训练任务。

3. 运行时环境变量文件(KEP-3721)

  • init 容器生成变量文件供后续容器使用。

4. KYAML(KEP-5295)

  • 更安全、更少歧义的 YAML 子集,KUBECTL_KYAML=true-o kyaml

5. NominatedNodeNameForExpectation(KEP-5278)& Restricted PSS 禁止远程探测(KEP-4940)。

弃用与移除

类型项目说明
弃用手动 cgroup 驱动配置kubelet cgroupDriver--cgroup-driver 弃用,转自动检测;不早于 v1.36 移除
即将终止containerd 1.x 支持v1.34 仍支持 1.7,v1.35 最后支持,v1.36 移除;监控 kubelet_cri_losing_support
弃用PreferClose 流量分发PreferSameZone 替代

重大变更与升级注意

⚠️ cgroup 驱动配置变更

  • CRI 不支持报告 cgroup 驱动时需先升级/换运行时;迁移后移除 kubelet cgroupDriver 字段。

⚠️ containerd 版本规划

  • 用 containerd 1.x 的应在 v1.35 EOL 前迁 2.0+;监控 kubelet_cri_losing_support 指标。

⚠️ Service trafficDistribution 变更

  • PreferClosePreferSameZone,新增 PreferSameNode

⚠️ 有序 Namespace 删除安全影响

  • 修复 CVE-2024-7598,确保 Pod 先于其他资源移除。

⚠️ Pod 安全标准收紧

  • Restricted 标准禁止 host 字段设远程探测目标。

运维实践要点

  1. DRA 生产采用:AI/ML 平台基于 DRA GA 重构 GPU 调度,弃用旧 Device Plugin。
  2. containerd 2.0 升级:监控 kubelet_cri_losing_support,分批升级节点运行时。
  3. cgroup 驱动自动检测:移除手动 cgroupDriver 配置,依赖 CRI 自动检测。
  4. 细粒度授权落地:节点级扩展用字段选择器授权,监控/排障用精细化匿名端点。
  5. WatchList/可快照缓存:大规模集群启用,降低 API Server/etcd 压力。
  6. Pod 证书试点:service mesh 场景评估原生 mTLS 替代 cert-manager。

常见问题 / 坑点

问题原因解决方案
节点 kubelet 启动失败cgroup 驱动手动配置弃用且 CRI 不报告升级运行时或临时保留手动配置
containerd 节点告警1.x 即将终止升级 containerd 2.0+
PreferClose 行为变化弃用演化为 PreferSameZone改用 PreferSameZone(别名兼容)
Namespace 删除顺序变化CVE 修复验证 finalizer 链是否受影响

关联知识

参考资源


状态: 📖 已掌握