文章
K8s 1.35 Timbernetes 详解
Kubernetes 1.35 Timbernetes 详解
概述
v1.35「Timbernetes」于 2025-12-17 发布,代号取北欧神话世界树 Yggdrasil,象征版本逐环生长。含 60 项增强(GA 17 / Beta 19 / Alpha 22)。三大 spotlight:In-place Pod 资源更新 GA(6 年长跑终结)、Pod 工作负载证书 Beta、节点声明特性 Alpha。重大移除:cgroup v1 正式移除、kube-proxy ipvs 模式弃用、Ingress NGINX 即将归档。
发布基本信息
| 项目 | 内容 |
|---|
| 发布日期 | 2025-12-17 |
| 代号 | Timbernetes(世界树) |
| 开发周期 | 14 周(2025-09-15 ~ 2025-12-17) |
| 增强总数 | 60(GA 17 / Beta 19 / Alpha 22) |
| Release Lead | Drew Hagen |
| 贡献 | 85 家公司、419 名个人 |
主要新特性解读
🟢 GA 特性(重点 spotlight)
1. In-place Pod 资源更新 GA(KEP-1287)⭐
- 解读:6 年长跑终结(自 v1.27 Alpha)。允许不重启 Pod/容器调整 CPU 和内存,实现平滑非中断式垂直扩缩容。
- 价值:有状态/批处理应用无需重建即可扩缩容;配合 VPA 实现真正无停机垂直伸缩。
- 相关概念:VerticalPodAutoscaler、
resizePolicy、resources.limits 热更新、cgroup v2。
2. PreferSameNode 流量分发 GA(KEP-3015)
- Service
trafficDistribution 新增 PreferSameNode,优先路由到本地节点端点;PreferClose 重命名为 PreferSameZone(保留兼容)。
3. Job API managedBy GA(KEP-4368)
- 外部控制器(如 Kueue/MultiKueue)可管理 Job 状态同步。
- 解读:Pod 新增
metadata.generation(spec 变更递增)与 status.observedGeneration(kubelet 处理后更新),每个 condition 也含独立 observedGeneration。
- 价值:就地资源调整时可确认 kubelet 是否已处理变更(关键支撑)。
- 相关概念:
generation/observedGeneration、控制器 reconcile、status 一致性。
5. NUMA 节点限制可配置 GA(KEP-4622)
- 拓扑管理器原硬编码 8 节点,现
max-allowable-numa-nodes 可配,支持现代高端服务器。
6. 细粒度 SupplementalGroups GA(KEP-3619)
supplementalGroupsPolicy Merge/Strict,解决隐式组成员身份安全问题。
7. kubelet 配置目录 drop-in GA(KEP-3983)
- kubelet 支持配置目录 drop-in 片段,便于配置管理。
8. 其他 GA:CPUManager reservedSystemCPUs、镜像 GC 最大年龄、并行镜像拉取限制、kubectl 命令元数据 HTTP 头、SPDY→WebSockets、不变性测试、移除 gogo protobuf(注:gogo protobuf 完全移除在 v1.36 GA 列表,此处为进展)。
🟡 Beta 特性(重点 spotlight)
1. Pod 工作负载证书 Beta(KEP-4317)⭐
- 解读:kubelet 生成密钥,通过
PodCertificateRequest 请求证书,凭证直接写入 Pod 文件系统;apiserver 准入强制 node restriction;纯 mTLS 流程无需 bearer token。
- 价值:大幅简化 service mesh 与零信任架构,替代 cert-manager、SPIFFE/SPIRE。
- 相关概念:mTLS、workload identity、SPIFFE/SPIRE、cert-manager、node restriction。
2. KYAML 默认启用 Beta(KEP-5295)
- 专为 K8s 设计的 YAML 安全子集,所有 KYAML 也是有效 YAML;
KUBECTL_KYAML=false 禁用。
3. 机会性批量调度 Beta(KEP-5598)
- 解读:通过 Pod scheduling signature 识别兼容 Pod 批量调度,共享过滤/评分结果,减少冗余计算(原 O(pods×nodes))。
- 相关概念:调度吞吐、scheduling signature、create/nominate 操作。
4. StatefulSet maxUnavailable Beta(KEP-961)
rollingUpdate 新增 maxUnavailable,与 podManagementPolicy: Parallel 配合最佳。
5. HPA 可配置容差 Beta(KEP-4951)
- 原固定 10% 全局容忍度,现可按资源自定义(如 5%)。
6. 细粒度容器重启规则 Beta(KEP-5307)
restartPolicy/restartPolicyRules 容器级定义,适合 AI/ML 训练任务。
7. 缓存镜像凭证验证 Beta(KEP-2535)
- 防止未授权 Pod 使用其他 Pod 拉取的私有镜像缓存;
imagePullCredentialsVerificationPolicy 配置安全级别。
8. 其他 Beta:Downward API 节点拓扑、存储版本迁移、可变卷挂载限制、.kuberc 凭证插件策略、用户命名空间、OCI 制品卷、CSI SA Token、Deployment terminatingReplicas 计数。
🔴 Alpha 特性(重点 spotlight)
1. 节点声明特性 / Node declared features(KEP-5328)⭐
- 解读:节点通过
.status.declaredFeatures 声明支持的 K8s 特性,调度器/准入/第三方可使用。
- 价值:解决控制平面启用新特性但节点滞后时调度不兼容 Pod 的问题。
- 相关概念:feature gate 协调、节点能力声明、调度兼容性。
2. Gang 调度(KEP-4671)⭐
- 解读:新 Workload API 与 PodGroup 概念,实现 all-or-nothing 调度,一组 Pod 仅在集群有足够资源容纳整个组时才调度。
- 适用:AI/ML 训练、HPC 仿真,避免死锁与资源浪费。
- 相关概念:PodGroup、all-or-nothing、Volcano/Kueue gang scheduling、死锁避免。
3. 受限模拟 / Constrained impersonation(KEP-5284)
- impersonate 流程增加二级授权检查,
impersonate-on:<mode>:<verb> 动词前缀,支持精细策略。
4. /flagz /statusz 端点 Alpha(KEP-4828/4827)
- 组件 Flagz/Statusz 端点,结构化审计运行时配置。
5. Job 挂起时可变资源 Alpha(KEP-5440)
- 允许 Job 挂起状态下更新资源请求/限制,解决 OOM/CPU 不足需删 Job 重建的问题。
弃用与移除
| 类型 | 项目 | 说明 |
|---|
| 移除 | cgroup v1 支持 | v1.35 正式移除,不支持 v2 的旧发行版 kubelet 无法启动 |
| 弃用 | kube-proxy ipvs 模式 | 启动时警告,建议迁 nftables |
| 最后版本 | containerd v1.x 支持 | v1.35 最后支持 1.x(含 1.7 LTS),后续需 2.0+ |
| 即将归档 | Ingress NGINX | best-effort 维护至 2026-03,之后归档,迁 Gateway API |
重大变更与升级注意
⚠️ cgroup v1 移除(最重要)
- 升级前确认所有节点支持 cgroup v2,否则 kubelet 无法启动。
⚠️ containerd v1.x 终结
- 监控
kubelet_cri_losing_support 指标识别需升级节点;升 containerd 2.0+。
⚠️ kube-proxy ipvs 模式弃用
⚠️ Ingress NGINX 归档
⚠️ Pod 拓扑标签自动注入
- v1.35 自动向每个 Pod 注入可用拓扑标签,属设计预期。
⚠️ DRA 核心始终启用
⚠️ KYAML 默认启用
- 如需禁用设
KUBECTL_KYAML=false。
🔧 可靠性改进
- kubelet 重启期间不再误标健康 Pod 为 NotReady 并移出 LB(KEP-4781),容器状态从运行时正确恢复,流量不中断。
运维实践要点
- cgroup v2 就绪检查:升级前全量节点验证 cgroup v2 支持,老旧发行版先升级 OS。
- In-place Pod 资源更新落地:GA 后结合 VPA 实现无停机垂直扩缩容,注意容器运行时支持。
- Pod 工作负载证书试点:service mesh 场景评估原生 mTLS 替代外部证书方案。
- Ingress NGINX 迁移规划:2026-03 前制定 Gateway API 迁移计划。
- ipvs → nftables 迁移:使用 ipvs 的集群启动迁移。
- Gang 调度关注:AI/ML/HPC 工作负载跟踪 Gang 调度成熟度。
常见问题 / 坑点
| 问题 | 原因 | 解决方案 |
|---|
| kubelet 无法启动 | cgroup v1 移除 | 升级 OS 支持 cgroup v2 |
| Ingress 异常 | Ingress NGINX 归档 | 迁 Gateway API |
| kube-proxy 启动警告 | ipvs 模式弃用 | 迁 nftables |
| Pod 多了拓扑标签 | 自动注入预期行为 | 无需处理,可利用于调度 |
关联知识
参考资源
状态: 📖 已掌握