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

admin 百科 13

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

发布主题与 logo

Kubernetes v1.35:Timbernetes(世界树发布)-第1张图片-佛山资讯网

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 对象开启此功能。

标签: linux js json node go nginx 编码 edge websocket 工具 mac ai prox

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~