首页 > 新闻 > IT新闻 > 正文

Kubernetes v1.35:Timbernetes(世界树发布)

聖光之護
发布: 2025-12-18 12:23:00
原创
190人浏览过

kubernetes v1.35(timbernetes)现已发布,本次发布包含 60 项改进,其中 17 项为稳定功能,19 项 beta 功能,22 项 alpha 功能,也有一些废弃和移除内容。

发布主题与 logo

Kubernetes v1.35:Timbernetes(世界树发布)

2025 年始于 Octarine(魔法之色,v1.33)的光辉,经历了风与意志的洗礼(v1.34)。年终之际,我们双手触摸着世界树,灵感源自连接众多领域的生命之树 Yggdrasil。像任何一棵伟大的树一样,Kubernetes 一圈一圈地生长,一版一版地发展,由全球社区的关爱塑造。 树的中心是环绕地球的 Kubernetes 轮,基石是那些始终坚守的维护者、贡献者和用户。他们在日常工作、生活变迁和稳定的开源管理之间,修剪旧 API,嫁接新功能,保持这个全球最大开源项目的健康。 三只松鼠守护着这棵树:持有 LGTM 卷轴的法师代表审查者,挥舞战斧和 Kubernetes 盾牌的战士代表发布团队,提灯的盗贼代表问题分类者,为黑暗的问题队列带来光明。 他们象征着庞大的冒险团队。Kubernetes v1.35 为世界树增添了新的一圈年轮,众多双手和多条道路共同塑造,让树枝更高,根基更深。

重点更新

Kubernetes v1.35 集成了丰富的新功能和改进。以下是发布团队特别推荐的部分更新:

稳定功能:Pod 资源就地更新

Pod 资源就地更新功能现已毕业为稳定版(GA),允许用户调整 CPU 和内存资源,无需重启 Pod 或容器。过去必须重新创建 Pod,可能影响状态应用或批处理工作负载。以前只能更改 Pod 的请求和限制等基础设施资源设置。新功能支持无中断的垂直扩缩,提升效率,也简化了开发流程。

Beta 功能:Pod 证书实现工作负载身份和安全

以前,为 Pod 配发证书需要外部控制器(cert-manager、SPIFFE/SPIRE)、CRD 协调和 Secret 管理,证书轮换依赖 sidecar 或初始化容器。Kubernetes v1.35 原生支持工作负载身份并自动轮换证书,大幅简化了服务网格和零信任架构。

现在,kubelet 生成密钥,通过 PodCertificateRequest 请求证书,并将凭据直接写入 Pod 文件系统。kube-apiserver 在准入时强制节点限定,避免第三方签名器常见的节点隔离边界问题,从而支持纯 mTLS 流程,无需发行路径中携带令牌。

Alpha 功能:调度前节点声明特性

当控制平面启用新特性但节点版本滞后(根据 Kubernetes 版本跳跃策略允许)时,调度器可能会将需要新特性的 Pod 调度到不兼容的旧节点上。节点声明特性框架让节点能够声明支持的 Kubernetes 特性。启用该 Alpha 功能后,节点通过新字段 .status.declaredFeatures 报告支持的特性,控制平面调度器、准入控制器及第三方组件可以据此做调度和 API 校验,保证 Pod 只运行在兼容节点上。

稳定功能精选

以下是 v1.35 发布后部分功能正式稳定的介绍:

PreferSameNode 流量分发

Service 的 trafficDistribution 字段更新,新增 PreferSameNode 选项,优先使用本地节点的端点,若无则回退到远程端点。

同时,旧的 PreferClose 选项改名为 PreferSameZone,更加明确表示优先使用同可用区内的端点。PreferClose 仍保留以兼容旧版本,但 PreferSameZone 现为区域级路由的标准,节点级和区域级偏好区分清楚。

Job API 的 managed-by 机制

Job API 增加 managedBy 字段,允许外部控制器同步 Job 状态。此功能在 v1.35 正式稳定,主要由 MultiKueue 驱动——一个多集群调度系统,管理集群创建 Job,工作集群执行并同步状态。内置 Job 控制器将不再处理带有 managedBy 字段的 Job,改由 Kueue 控制器管理状态同步。

该功能旨在实现 Job 同步的清晰委托,不用于传递自定义参数或修改 CronJob 并发策略。

通过 .metadata.generation 可靠跟踪 Pod 更新

Pod API 过去缺少 .metadata.generation 字段,导致控制器和用户无法准确判断 kubelet 是否已处理最新的 Pod 规格修改,尤其影响 In-Place Pod 垂直扩缩功能。

Kubernetes v1.33 已引入该字段的 Alpha 支持,v1.35 使其稳定。每次更新 Pod 规格,.metadata.generation 数值递增。Pod API 还新增 .status.observedGeneration 字段,报告 kubelet 已处理的版本。Pod 条件中也包含各自的 observedGeneration,方便客户端报告和观察。

拓扑管理器支持可配置 NUMA 节点限制

拓扑管理器之前硬编码支持最多 8 个 NUMA 节点,防止亲和计算时状态爆炸。(NUMA 节点和 Kubernetes API 中的 Node 不同。)这一限制阻碍了对现代多 NUMA 节点高端服务器的充分利用。

v1.31 引入 max-allowable-numa-nodes 选项(Beta),v1.35 该选项稳定。开启后,集群管理员可使用超过 8 个 NUMA 节点的服务器。

尽管该配置稳定,社区仍关注大 NUMA 主机性能问题,计划通过 KEP-5726 进一步优化。详情参见节点上的拓扑管理策略控制。

Beta 中的新功能

以下是 v1.35 版本发布后进入 Beta 阶段的一些改进。

通过 Downward API 暴露节点拓扑标签

以前,Pod 内访问节点拓扑信息(如区域和可用区)通常需要调用 Kubernetes API 服务器。这虽可用,但增加了复杂性和安全风险,因为需要较宽权限或 sidecar 容器来获取基础设施元数据。Kubernetes v1.35 将通过 Downward API 直接暴露节点拓扑标签的功能升级为 Beta。

kubelet 现在可以将标准拓扑标签(如 topology.kubernetes.io/zone 和 topology.kubernetes.io/region)注入 Pod,作为环境变量或投影卷文件。这样,应用可以更安全、高效地感知拓扑,无需依赖 API 服务器,遵循最小权限原则,简化集群配置。

注意:Kubernetes 现在会把可用拓扑标签注入到每个 Pod,v1.35 升级后,集群管理员会看到每个 Pod 多了几个新标签,这是设计行为。

原生支持存储版本迁移

v1.35 中,存储版本迁移原生支持升级为 Beta,默认启用。迁移逻辑集成进核心控制平面,摆脱了对外部工具的依赖。

过去管理员通常通过手工“读写循环”更新 schema 或重新加密数据,效率低且易冲突。新版内置控制器自动处理冲突和一致性令牌,安全可靠,运维负担更轻。

可变的卷挂载限制

CSI 驱动是 Kubernetes 插件,提供统一的存储访问方式。CSINode 对象记录节点上安装的所有 CSI 驱动信息。但实际挂载容量和报告容量可能不匹配,导致调度时出现问题,Pod 可能卡在 ContainerCreating 状态。

v1.35 允许动态修改 CSINode.spec.drivers[*].allocatable.count,支持通过 CSIDriver 对象配置刷新间隔。遇到容量不足导致的挂载失败时,会自动更新。该功能在 v1.34 已 Beta(默认关闭),v1.35 默认启用,继续收集反馈。

机会批处理调度

过去,调度器按顺序处理 Pod,复杂度为 O(节点数 ×Pod 数),兼容 Pod 之间存在冗余计算。该 KEP 引入机会批处理机制,通过 Pod 调度签名识别兼容 Pod,将它们批量处理,共享过滤和评分结果。

调度签名不仅考虑 Pod 和节点属性,还会考虑系统中其他 Pod 及全局放置数据。具有相同签名的 Pod 会获得相同的调度结果。

批处理机制包括 create 和 nominate 两个操作,分别用于创建批处理信息和基于签名设置被提名节点。

StatefulSets 的 maxUnavailable 支持

StatefulSet 管理一组有粘性身份的 Pod,适合有状态应用。RollingUpdate 策略下,Pod 按序逐个删除和重建。

v1.24 引入了 rollingUpdate 的 alpha 字段 maxUnavailable,用于定义更新时最大不可用 Pod 数,需管理员手动启用。v1.35 将其升级为 Beta 并默认启用,支持数字或百分比形式。默认值为 1,保持之前行为。配合 podManagementPolicy 设为 Parallel,能加速更新。

kuberc 中可配置的凭证插件策略

kuberc 文件允许将服务器配置和集群凭证与用户偏好分离,避免破坏已有 CI 流水线。

v1.35 新增凭证插件策略配置,支持 credentialPluginPolicy 字段(允许或拒绝所有插件),及 credentialPluginAllowlist(允许插件列表)。

KYAML

YAML 是人类可读的数据序列化格式,Kubernetes 使用 YAML 定义资源,但复杂 YAML 难读,缩进敏感且字符串引用不稳定。

KYAML 是 Kubernetes 专用的更安全、无歧义的 YAML 子集。v1.34 作为 alpha 引入,v1.35 升级为 Beta 并默认启用,可通过环境变量关闭。

KYAML 兼容 YAML 和 JSON,所有 KYAML 文件也是有效的 YAML,可用于任意版本 kubectl。

HorizontalPodAutoscalers 可配置容差

HPA 之前使用固定的 10% 容差,敏感负载难以精细调整,导致扩缩容不理想。

v1.35 将可配置容差升级为 Beta,默认启用。可在 HPA 行为字段中针对单资源定义自定义容差(如 5%),实现精准控制,避免集群范围调整。

Pod 支持用户命名空间

Kubernetes 新增用户命名空间支持,Pod 内用户和组 ID 与宿主隔离,容器内可用 root 权限,映射为宿主的非特权用户,降低权限提升风险。此功能提升 Pod 级别安全,支持无状态和有状态 Pod 的 id 映射挂载。

VolumeSource:OCI artifact 和/或 image 支持

创建 Pod 时常需提供数据、二进制或配置文件,传统做法是放入镜像或用 init 容器下载。v1.31 支持 image 类型卷,可声明式拉取并解包 OCI 镜像制品,用于传递配置、模型等数据。

v1.35 默认启用 image 卷 Beta 功能,需兼容容器运行时(如 containerd v2.1+)。

强制 kubelet 验证缓存镜像凭证

imagePullPolicy: IfNotPresent 允许 Pod 使用节点缓存镜像,即使 Pod 无拉取凭证。多租户环境下,可能导致凭证泄露风险。

v1.35 引入 kubelet 对缓存镜像强制凭证验证,确保 Pod 有有效凭证才能使用缓存镜像,强化安全。支持关闭该功能和配置策略等级。

细粒度容器重启规则

过去,restartPolicy 只在 Pod 级别配置,限制复杂工作负载控制。AI/ML 等任务常需 Pod 不重启,但单个容器可重启特定错误。

v1.35 支持在容器级别定义 restartPolicy 和 restartPolicyRules,实现更灵活的重启策略。Beta 默认启用。

CSI 驱动通过 secrets 字段选择性使用 ServiceAccount 令牌

之前通过 volume_context 注入 ServiceAccount 令牌,存在安全风险,因为 volume_context 常被明文日志记录。

v1.35 引入 CSI 驱动可选通过 NodePublishVolume 请求的 secrets 字段安全传递令牌。驱动通过 CSIDriver 对象开启此功能。

芝士饼
芝士饼

芝士饼是一个一站式AI原生应用开发平台,简单几步即可完成应用的创建与发布。

芝士饼 92
查看详情 芝士饼

此功能防止凭证泄露,符合最佳实践,同时保持兼容性。

Deployment 状态新增终止副本计数

Deployment 状态以前只显示可用和更新副本,无法看到正在终止的 Pod,影响判断部署稳定性。

v1.35 将 terminatingReplicas 字段升级为 Beta,显示已设置删除时间戳但未删除的 Pod 数量,提升生命周期管理可观察性。

Alpha 新特性

以下是 v1.35 版本发布后部分进入 Alpha 阶段的改进。

Kubernetes 中的 Gang 调度支持

调度相互依赖的任务(如 AI/ML 训练、HPC 模拟)一直很难,因为 Kubernetes 默认调度器是单个 Pod 逐个调度。常导致部分 Pod 启动,其他 Pod 无期限等待资源,形成死锁,浪费集群容量。

Kubernetes v1.35 通过新的 Workload API 和 PodGroup 概念,原生支持“gang 调度”。该特性采用“要么全部调度,要么全部不调度”的策略,保证一组 Pod 只有在集群有足够资源时才同时启动。

主要好处是提升批处理和并行任务的可靠性与效率,避免资源死锁,确保集群容量只有在完整任务能运行时才被占用,极大优化大规模数据处理的调度。

受限模拟(Constrained Impersonation)

过去,Kubernetes RBAC 中的 impersonate 权限是全有或全无:授权后即可拥有所有目标身份的权限,违背最小权限原则,无法限制只能执行特定操作。

v1.35 引入 Alpha 级别的受限模拟,可在模拟流程中增加二次授权检查。开启 ConstrainedImpersonation 功能门后,API Server 不仅验证基础模拟权限,还会检查模拟者是否有执行特定操作的权限(通过新动词前缀如 impersonate-on:: 实现)。

管理员可以制定细粒度策略,例如允许支持工程师模拟集群管理员身份仅查看日志,无需完全管理权限。

Kubernetes 组件的 Flagz

以前要查看 Kubernetes 组件(API Server、kubelet 等)的运行时配置,必须有节点权限或看进程参数。为简化,该版本引入了 /flagz 端点,用 HTTP 返回命令行参数,最初仅支持纯文本格式,不便自动化解析。

v1.35 中,/flagz 支持结构化、机器可读的 JSON 格式。授权用户可用 HTTP 内容协商请求版本化 JSON,纯文本格式仍保留供人工查看。此更新显著提升监控和合规流程,方便外部系统审计配置,无需脆弱的文本解析或直接访问底层。

Kubernetes 组件的 Statusz

排查 kube-apiserver、kubelet 等组件问题,之前依赖非结构化日志和文本,难以自动化。虽然已有 /statusz 端点,但无标准机器可读格式,限制了其监控作用。

v1.35 中,/statusz 端点同样支持结构化 JSON 输出。授权用户可通过 HTTP 协商获取精确状态数据(版本、健康指标等),避免脆弱文本解析。为自动化调试和可观测工具提供稳定接口。

CCM:基于 Watch 的路由控制器同步(Informer)

云环境中,路由管理传统上依赖 Cloud Controller Manager(CCM)定时轮询云厂商 API,效率低且会产生大量冗余调用,导致节点状态变更与路由更新间存在延迟。

v1.35 的 cloud-controller-manager 库引入了基于 watch 的路由控制器同步策略。控制器通过 informer 监听节点的新增、删除及字段变更事件,只有发生变更时才同步路由。

主要好处是显著减少云 API 调用,降低限流风险和运维负担,同时提升网络层响应速度,路由表能及时更新。

基于阈值的扩展容忍度操作器

v1.35 引入 SLA 感知调度,允许工作负载表达可靠性要求。通过给 tolerations 添加数字比较操作符,Pod 可根据 SLA 相关的污点(如服务保障、故障域质量)匹配或避开节点。

主要好处是调度更精细,关键任务可选择更高 SLA 节点,低优先级任务则可接受较低 SLA,提升资源利用率并降低成本。

任务暂停时可变容器资源

批处理任务往往需要调整资源限制。之前 Job 配置不可变,若因 OOM 或 CPU 不足失败,必须删掉重建,丢失执行历史。

v1.35 允许暂停状态下的 Job 更新资源请求和限制。开启 MutableJobPodResourcesForSuspendedJobs 功能后,用户可暂停失败的 Job,修改 Pod 模板资源,然后恢复执行。

主要好处是资源调整更顺畅,无需重建 Job,保留执行状态,显著提升批处理开发体验。

其他重要更新

动态资源分配(DRA)持续创新

核心功能在 v1.34 已稳定且可关闭,v1.35 默认开启。多个 Alpha 功能大幅改进,鼓励用户测试反馈,助力未来升级到 Beta。

通过 DRA 扩展资源请求

解决了与设备插件扩展资源请求的部分功能差距,比如 Init 容器设备评分和复用。

设备污点与容忍度

新增“None”效果,用于报告问题但不影响调度或运行。DeviceTaintRule 提供驱逐状态信息,支持“None”效果的“演练”驱逐。

可分区设备

同一分区设备可定义在不同 ResourceSlice,详情见官方文档。

可用容量与设备绑定条件

修复若干 Bug,完善测试。详情见官方文档。

资源版本语义可比较性

v1.35 改变客户端对资源版本的解释方式。

此前只支持字符串相等比较,客户端无法自行判断版本先后,只能请求服务器做比较。

现在所有内置资源版本均为特殊十进制格式,客户端可直接比较版本大小。这样客户端断线重连后能判断是否丢失更新,提升存储迁移、Informer 性能和控制器稳定性。

v1.35 中的毕业、废弃和移除

毕业为稳定功能

本次发布共 15 项功能晋升为稳定,包括:

  • CPUManager 策略限制 reservedSystemCPUs 给系统守护进程和中断处理
  • Pod Generation
  • 不变性测试
  • Pod 资源原位更新
  • 精细的 SupplementalGroups 控制
  • 增加对 kubelet 配置目录的支持
  • 移除 Kubernetes API 类型的 gogo protobuf 依赖
  • kubelet 最大镜像缓存年龄清理
  • kubelet 并行镜像拉取限制
  • TopologyManager 的 MaxAllowableNUMANodes 策略选项
  • 将 kubectl 命令元数据包含在 HTTP 请求头
  • PreferSameNode 流量分配(原 PreferLocal 策略 / 节点级拓扑)
  • Job API 的 managed-by 机制
  • 从 SPDY 迁移到 WebSocket

废弃、移除及社区更新

随着 Kubernetes 发展,部分功能被废弃、移除或替代。详情见官方废弃政策。

Ingress NGINX 退役

Ingress NGINX 曾是 Kubernetes 中流量入口的热门解决方案,但维护者严重不足且技术债务累积,社区决定退役。从 2026 年 3 月起将只做有限维护,之后归档不再更新。推荐迁移到 Gateway API,提供更现代、安全、可扩展的流量管理。详情见官方博客。

移除 cgroup v1 支持

Linux 节点资源管理历史依赖 cgroup v1,但其不稳定且功能有限。自 v1.25 起支持更现代的 cgroup v2。v1.35 彻底移除对 cgroup v1 的支持。使用旧版 Linux 且不支持 cgroup v2 的节点,kubelet 会启动失败。请尽快升级节点到支持 cgroup v2 的系统。详情见 KEP-5573。

kube-proxy 中 ipvs 模式废弃

ipvs 模式曾提升负载均衡性能,但维护难度大,技术债务重。v1.35 标记 ipvs 模式为废弃,启动时会警告。推荐 Linux 节点迁移到 nftables。详情见 KEP-5495。

containerd v1.X 最后支持

v1.35 是最后支持 containerd 1.7 及其他 LTS 版本的 Kubernetes 版本。升级 Kubernetes 前请迁移到 containerd 2.0 或以上。可通过监控 kubelet_cri_losing_support 指标识别需要升级的节点。详情见官方博客和 KEP-4033。

kubelet 重启时 Pod 稳定性改善

之前 kubelet 重启时,会重置容器状态,导致健康 Pod 被标记为 NotReady 并从负载均衡移除,影响流量。v1.35 修复此问题,kubelet 启动时正确恢复容器状态,保证工作负载持续 Ready,流量不中断。


此外,公告还缅怀了 Han Kang,“他是长期贡献者和受人尊敬的工程师,以卓越的技术能力和热情感染了整个 Kubernetes 社区。Han 在 SIG Instrumentation 和 SIG API Machinery 中发挥了重要作用,因其关键贡献和对项目核心稳定性的持续投入,获得了 2021 年 Kubernetes 贡献者奖。除了技术贡献,Han 还是一位慷慨的导师,热衷于促进人与人之间的联系。他常“为他人开门”,无论是引导新贡献者提交首个 PR,还是耐心友善地支持同事。Han 的精神通过他启发的工程师们、他参与构建的稳定系统,以及他在云原生生态中培养的温暖合作氛围得以延续。”

源码地址:点击下载

以上就是Kubernetes v1.35:Timbernetes(世界树发布)的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号