文章
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 核心正式 GA(resource.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)
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)
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)
2. .kuberc Beta(KEP-3104)
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)
6. 可快照缓存 Beta(KEP-4988)& WatchList Beta(KEP-3157)
- 历史版本查询从缓存快照而非 etcd;流式 informers 减少 API Server 与 etcd 压力。
- 相关概念:ListFromCacheSnapshot、ConsistentList、informer 内存优化。
7. 原地 Pod 资源调整改进 Beta(KEP-1287)
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)
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 变更
PreferClose → PreferSameZone,新增 PreferSameNode。
⚠️ 有序 Namespace 删除安全影响
- 修复 CVE-2024-7598,确保 Pod 先于其他资源移除。
⚠️ Pod 安全标准收紧
- Restricted 标准禁止
host 字段设远程探测目标。
运维实践要点
- DRA 生产采用:AI/ML 平台基于 DRA GA 重构 GPU 调度,弃用旧 Device Plugin。
- containerd 2.0 升级:监控
kubelet_cri_losing_support,分批升级节点运行时。
- cgroup 驱动自动检测:移除手动
cgroupDriver 配置,依赖 CRI 自动检测。
- 细粒度授权落地:节点级扩展用字段选择器授权,监控/排障用精细化匿名端点。
- WatchList/可快照缓存:大规模集群启用,降低 API Server/etcd 压力。
- Pod 证书试点:service mesh 场景评估原生 mTLS 替代 cert-manager。
常见问题 / 坑点
| 问题 | 原因 | 解决方案 |
|---|
| 节点 kubelet 启动失败 | cgroup 驱动手动配置弃用且 CRI 不报告 | 升级运行时或临时保留手动配置 |
| containerd 节点告警 | 1.x 即将终止 | 升级 containerd 2.0+ |
PreferClose 行为变化 | 弃用演化为 PreferSameZone | 改用 PreferSameZone(别名兼容) |
| Namespace 删除顺序变化 | CVE 修复 | 验证 finalizer 链是否受影响 |
关联知识
参考资源
状态: 📖 已掌握