文章

K8s 1.35 Timbernetes 详解

Kubernetes 1.35 Timbernetes 详解

概述

v1.35「Timbernetes」于 2025-12-17 发布,代号取北欧神话世界树 Yggdrasil,象征版本逐环生长。含 60 项增强(GA 17 / Beta 19 / Alpha 22)。三大 spotlightIn-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 LeadDrew Hagen
贡献85 家公司、419 名个人

主要新特性解读

🟢 GA 特性(重点 spotlight)

1. In-place Pod 资源更新 GA(KEP-1287)⭐

  • 解读:6 年长跑终结(自 v1.27 Alpha)。允许不重启 Pod/容器调整 CPU 和内存,实现平滑非中断式垂直扩缩容。
  • 价值:有状态/批处理应用无需重建即可扩缩容;配合 VPA 实现真正无停机垂直伸缩。
  • 相关概念:VerticalPodAutoscaler、resizePolicyresources.limits 热更新、cgroup v2。

2. PreferSameNode 流量分发 GA(KEP-3015)

  • Service trafficDistribution 新增 PreferSameNode,优先路由到本地节点端点;PreferClose 重命名为 PreferSameZone(保留兼容)。

3. Job API managedBy GA(KEP-4368)

  • 外部控制器(如 Kueue/MultiKueue)可管理 Job 状态同步。

4. Pod .metadata.generation GA(KEP-5067)⭐

  • 解读: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 NGINXbest-effort 维护至 2026-03,之后归档,迁 Gateway API

重大变更与升级注意

⚠️ cgroup v1 移除(最重要)

  • 升级前确认所有节点支持 cgroup v2,否则 kubelet 无法启动。

⚠️ containerd v1.x 终结

  • 监控 kubelet_cri_losing_support 指标识别需升级节点;升 containerd 2.0+。

⚠️ kube-proxy ipvs 模式弃用

  • 开始迁 nftables 模式。

⚠️ Ingress NGINX 归档

  • 2026-03 前迁 Gateway API。

⚠️ Pod 拓扑标签自动注入

  • v1.35 自动向每个 Pod 注入可用拓扑标签,属设计预期。

⚠️ DRA 核心始终启用

  • v1.35 中 DRA 核心功能无法关闭。

⚠️ KYAML 默认启用

  • 如需禁用设 KUBECTL_KYAML=false

🔧 可靠性改进

  • kubelet 重启期间不再误标健康 Pod 为 NotReady 并移出 LB(KEP-4781),容器状态从运行时正确恢复,流量不中断。

运维实践要点

  1. cgroup v2 就绪检查:升级前全量节点验证 cgroup v2 支持,老旧发行版先升级 OS。
  2. In-place Pod 资源更新落地:GA 后结合 VPA 实现无停机垂直扩缩容,注意容器运行时支持。
  3. Pod 工作负载证书试点:service mesh 场景评估原生 mTLS 替代外部证书方案。
  4. Ingress NGINX 迁移规划:2026-03 前制定 Gateway API 迁移计划。
  5. ipvs → nftables 迁移:使用 ipvs 的集群启动迁移。
  6. Gang 调度关注:AI/ML/HPC 工作负载跟踪 Gang 调度成熟度。

常见问题 / 坑点

问题原因解决方案
kubelet 无法启动cgroup v1 移除升级 OS 支持 cgroup v2
Ingress 异常Ingress NGINX 归档迁 Gateway API
kube-proxy 启动警告ipvs 模式弃用迁 nftables
Pod 多了拓扑标签自动注入预期行为无需处理,可利用于调度

关联知识

参考资源


状态: 📖 已掌握