|
| 1 | +# TBD |
| 2 | + |
| 3 | +2025 年 12 月 17 日,主题为 TBD 的 Kubernetes v1.35 正式发布。 |
| 4 | + |
| 5 | +此版本距离上版本发布时隔 4 个月,是 2025 年的最后一个版本。 |
| 6 | + |
| 7 | +与之前的版本类似,Kubernetes v1.35 版本引入了多项新的 Alpha、Beta 和 Stable 的功能。一贯交付高质量版本的承诺凸显了 Kubernetes 社区的开发周期实力和社区的活跃支持。 |
| 8 | + |
| 9 | +此版本包含 53 项改进。在这些改进功能中,有 21 项已晋升为 Stable,有 17 项进入 Beta 阶段,有 15 项为 Alpha 阶段。 |
| 10 | + |
| 11 | +## 发布主题和 Logo |
| 12 | + |
| 13 | +Kubernetes v1.35 的发布主题是 TBD:它描述地是 TBD。 |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +## GA 和稳定的功能 |
| 18 | + |
| 19 | +GA 全称 General Availability,即正式发布。Kubernetes 的进阶路线通常是 Alpha、Beta、Stable (即 GA)、Deprecation/Removal 这四个阶段。下文择取了部分特性详述。如果对其他特性感兴趣,请移步至具体的 KEP 页面了解进展和详情。 |
| 20 | + |
| 21 | +### TBD |
| 22 | + |
| 23 | +TBD |
| 24 | + |
| 25 | +### 更新总览 |
| 26 | + |
| 27 | +- [KEP-859 Kubectl 发起请求时会携带 Kubectl-Command 和 Kubectl-Session 两个 HTTP Header,用于追踪请求来源和标识会话](https://kep.k8s.io/859) |
| 28 | +- [KEP-1287 支持了 Pod 资源原地升级(In-Place Update)功能,允许在不重新创建 Pod 或重新启动容器的情况下更改资源](https://kep.k8s.io/1287) |
| 29 | +- [KEP-3015 添加一种方法来向 kube-proxy 发出信号,表明它应该尽可能将流量传输到本地端点,以提高效率](https://kep.k8s.io/3015) |
| 30 | +- [KEP-3331 添加结构化身份验证配置](https://kep.k8s.io/3331) |
| 31 | +- [KEP-3619 细粒度的补充组控制](https://kep.k8s.io/3619) |
| 32 | +- [KEP-3673 为 kubelet 添加节点级限制,以限制并行镜像拉取的数量](https://kep.k8s.io/3673) |
| 33 | +- [KEP-3983 添加对 kubelet 插入式配置目录的支持](https://kep.k8s.io/3983) |
| 34 | +- [KEP-4006 将 Kubernetes 客户端的双向流协议从 SPDY/3.1 转换为 WebSockets](https://kep.k8s.io/4006) |
| 35 | +- [KEP-4210 添加 Kubelet 选项,用于指定镜像在被垃圾回收之前保留的最大期限](https://kep.k8s.io/4210) |
| 36 | +- [KEP-4368 允许 Job 的协调过程被委派给外部控制器的 `manage-by` 工作机制](https://kep.k8s.io/4368) |
| 37 | +- [KEP-4540 引入了新的 CPUManager 策略选项 strict-cpu-reservation,确保 reservedSystemCPUs 严格保留用于系统守护程序或中断处理,并且不会被 QoS 类为 Burstable 和 BestEffort 的 Pod 使用](https://kep.k8s.io/4540) |
| 38 | +- [KEP-4622 向 kubelet 添加一个配置选项,允许在 TopologyManager 中配置 maxAllowableNUMANodes 的值](https://kep.k8s.io/4622) |
| 39 | +- [KEP-5067 利用现有的元数据 Generation 字段,并在 Pod 状态中添加一个新的 status.observedGeneration 字段,允许 Pod 状态字段表示当前哪些 Pod 更新反映在 Pod 状态中](https://kep.k8s.io/5067) |
| 40 | +- [KEP-5468 用于在 Kubernetes E2E 测试期间, 通过组件指标检测指标不变性的违规情况](https://kep.k8s.io/5468) |
| 41 | +- [KEP-3304 `k8s.io/apimachinery/util/resourceversion` 提供了一个帮助函数 `CompareResourceVersion`, 用于允许客户端比较同一类型对象的资源版本大小](https://kep.k8s.io/5504) |
| 42 | +- [KEP-5589 删除 Kubernetes API 类型的 gogo protobuf 依赖项](https://kep.k8s.io/5589) |
| 43 | + |
| 44 | +## 进入 Beta 阶段的功能 |
| 45 | + |
| 46 | +Beta 阶段的功能是指那些已经经过 Alpha 阶段的功能,且在 Beta 阶段中添加了更多的测试和验证,通常情况下是默认启用的。下文择取了部分特性详述。如果对其他特性感兴趣,请移步至具体的 KEP 页面了解进展和详情。 |
| 47 | + |
| 48 | +### TBD |
| 49 | + |
| 50 | +TBD |
| 51 | + |
| 52 | +### 更新总览 |
| 53 | + |
| 54 | +- [KEP-127 支持用户命名空间,进程能够在具有与主机不同的用户和组 ID 的 pod 中运行。](https://kep.k8s.io/127) |
| 55 | +- [KEP-961 StatefulSet 增加 `MaxUnavailable` 字段,支持同时下线多个 Pod 达到快速滚动更新的目的](https://kep.k8s.io/961) |
| 56 | +- [KEP-3077 下文日志记录使函数的调用者能够控制日志记录的所有方面(输出格式、详细程度、附加值和名称)](https://kep.k8s.io/3077) |
| 57 | +- [KEP-3721 支持从文件实例化容器的环境变量。该文件必须位于 emptyDir 卷中。该环境变量文件可以由 emptyDir 卷中的 initContainer 创建。kubelet 将从 emptyDir 卷中的指定文件实例化容器中的环境变量,但不会挂载该文件。请注意,该卷只会挂载到环境变量生产者容器(initContainer),而使用该环境变量的普通容器不会挂载该卷。](https://kep.k8s.io/3721) |
| 58 | +- [KEP-4192 移动存储版本迁移器到主库](https://kep.k8s.io/4192) |
| 59 | +- [KEP-4317 为 Pod 提供了使用 mTLS 向 kube-apiserver 进行身份验证的内置功能。它由易于外部项目复用的组件构建而成,以便使用 X.509 证书提供更多功能](https://kep.k8s.io/4317) |
| 60 | +- [KEP-4742 允许在 Pod 中通过 downward API 中使用节点标签](https://kep.k8s.io/4742) |
| 61 | +- [KEP-4762 在 podSpec 中引入了一个新的字段 hostnameOverride, 允许用户将任意的完全限定域名 (FQDN) 设置为 Pod 的主机名](https://kep.k8s.io/4762) |
| 62 | +- [KEP-4876 允许 CSI 驱动程序可以在运行时动态调整可附加卷的最大数量](https://kep.k8s.io/4876) |
| 63 | +- [KEP-4951 HorizontalPodAutoscaler 新增 tolerance 字段来指定允许的指标偏差,当使用比率约为 1 时,使用自定义值可精细地触发扩容操作](https://kep.k8s.io/4951) |
| 64 | +- [KEP-5278 除了使用 NominatedNodeName 来指示正在进行的抢占之外,调度器还可以在绑定周期开始时指定它,以向其他组件显示预期的 Pod 位置。此外,其他组件也可以将 NominatedNodeName 放在待处理的 Pod 上,以指示该 Pod 优先调度到特定节点](https://kep.k8s.io/5278) |
| 65 | +- [KEP-5295 kubectl 引入 KYAML,一种更安全、更少歧义的 YAML 子集/编码](https://kep.k8s.io/5295) |
| 66 | +- [KEP-5307 引入了容器重启规则,以便 kubelet 可以在容器退出时应用这些规则。这将允许用户配置容器的特殊退出代码,使其被视为非故障状态,即使 Pod 的 restartPolicy=Never 也能原地重启容器。](https://kep.k8s.io/5307) |
| 67 | +- [KEP-5311 放宽 Service 的名称验证, 允许服务名称以数字开头。](https://kep.k8s.io/5311) |
| 68 | +- [KEP-5538 现在,CSI 驱动程序可以通过在 CSIDriver 对象中设置 `spec.serviceAccountTokenInSecrets: true` 来选择通过 secrets 字段而非卷上下文接收服务帐户令牌。这可以防止令牌在日志和其他输出中暴露。](https://kep.k8s.io/5538) |
| 69 | +- [KEP-5573 Kubernetes 已弃用 cgroup v1, 移除将遵循 Kubernetes 弃用策略。默认情况下,kubelet 将不再在 cgroup v1 节点上启动。要禁用此设置,集群管理员应在 kubelet 配置文件中将 failCgroupV1 设置为 false](https://kep.k8s.io/5573) |
| 70 | +- [KEP-5593 改进 Pod 重启退避逻辑,以更好地匹配它创建的实际负载并满足新兴用例,同时为集群作员提供一个选项,以便为特定节点上的所有容器配置更低的最大回退,最低可至 1 秒](https://kep.k8s.io/5593) |
| 71 | + |
| 72 | + |
| 73 | +## 进入 Alpha 阶段的功能 |
| 74 | + |
| 75 | +Alpha 阶段的功能是指那些刚刚被引入的功能,这些功能是默认关闭的,需要用户手动开启。 |
| 76 | + |
| 77 | +### TBD |
| 78 | + |
| 79 | +TBD |
| 80 | + |
| 81 | +### 更新总览 |
| 82 | + |
| 83 | +- [KEP-4020 允许在存在多个不同版本的 API 服务器时,由正确的 API 服务器处理资源请求](https://kep.k8s.io/4020) |
| 84 | +- [KEP-4815 向 DRA 添加对可分区设备的支持](https://kep.k8s.io/4815) |
| 85 | +- [KEP-4827 为所有核心组件实现 statusz 端点来公开有关组件基本信息、运行状况和关键指标的标准化实时数据](https://kep.k8s.io/4827) |
| 86 | +- [KEP-4828 为所有核心组件实现 flagz 端点来公开有关组件的命令行标志的配置参数](https://kep.k8s.io/4828) |
| 87 | +- [KEP-4872 加强 Kubelet Serving 中 Kube-API 服务器的证书验证](https://kep.k8s.io/4872) |
| 88 | +- [KEP-5007 DRA 引入一种机制 ( BindingConditions 和 BindingFailureConditions),允许调度程序推迟 Pod 绑定,直到确认外部资源已准备就绪](https://kep.k8s.io/5007) |
| 89 | +- [KEP-5030 修复集群自动扩缩器 (CAS),使其在扩缩新节点时能够感知节点的卷挂载限制,并防止调度器将 pod 放置在未安装特定 CSI 驱动程序的节点上。](https://kep.k8s.io/5030) |
| 90 | +- [KEP-5055 支持将设备标记为受污染可以防止将其用于新 Pod 和/或导致使用它们的 Pod 停止, 用户可以决定是否容忍这些污染。](https://kep.k8s.io/5055) |
| 91 | +- [KEP-5075 允许 ResourceSlice 中的单个设备在不同的独立 ResourceClaims 之间共享,这些 ResourceClaims 由可分配容量值进行管理(前提是驱动程序允许)。这使得 DRA 设备可以由独立的工作负载共享,而不是像现在这样只能由协作的工作负载共享](https://kep.k8s.io/5075) |
| 92 | +- [KEP-5237 将路由控制器( k8s.io/cloud-provider )的协调循环从固定间隔切换到基于 Watch 的方式](https://kep.k8s.io/5237) |
| 93 | +- [KEP-5284 引入新的授权规则,以限制对指定资源执行指定操作的模拟](https://kep.k8s.io/5284) |
| 94 | +- [KEP-5328 提出了一个节点声明特性框架,用于节点声明特定、特性门控的 Kubernetes 特性的可用性。控制平面将使用此框架进行调度和准入决策,主要用于管理版本偏差。对于调度,kube-scheduler 将利用这些声明的特性来确保 pod 仅被部署到具备成功运行所需特性的节点上。对于 API 请求验证,准入控制器将阻止在缺乏所需特性支持的节点上执行操作。其目的是通过减少对手动配置(例如污点、容忍度和复杂的节点标签方案)的依赖来简化集群操作](https://kep.k8s.io/5328) |
| 95 | +- [KEP-5381 将 PersistentVolume.spec.nodeAffinity 字段设为可变字段](https://kep.k8s.io/5381) |
| 96 | +- [KEP-5440 允许在 Job 被暂停时修改 PodTemplate 上的容器请求/限制。](https://kep.k8s.io/5440) |
| 97 | +- [KEP-5607 允许 Pod 同时使用用户命名空间和主机网络](https://kep.k8s.io/5607) |
| 98 | + |
| 99 | +## 删除和废弃功能 |
| 100 | + |
| 101 | +### kube-proxy 中的 ipvs 模式 |
| 102 | + |
| 103 | +已将 kube-proxy 中的 ipvs 模式标记为已弃用。kube-proxy 中的 ipvs 模式已被弃用,并将在未来的 Kubernetes 版本中移除。建议用户迁移到 nftables。 |
| 104 | + |
| 105 | +### 重启 kubelet 会改变 pod 状态 |
| 106 | + |
| 107 | +确保高可用性并最大限度地减少服务中断是 Kubernetes 集群的关键考量因素。默认情况下,kubelet 重启时会将所有容器的 Start 和 Ready 状态重置为 False。这意味着之前建立的任何成功探测状态都会在重启后丢失。因此,即使在 kubelet 重启前服务运行正常,也可能被错误地标记为不可用。这种重置会导致对服务健康状况的错误判断,并对集群的整体性能产生负面影响,甚至可能触发不必要的警报或负载均衡调整。我们将添加一个已弃用的功能门控: ChangeContainerStatusOnKubeletRestart 。此功能门控默认处于禁用状态。禁用后,Kubelet 在重启后将不会更改容器状态。用户可以启用功能门控 ChangeContainerStatusOnKubeletRestart 来恢复 Kubelet 在重启后更改容器状态的行为。 |
| 108 | + |
| 109 | +## DaoCloud 社区贡献 |
| 110 | + |
| 111 | +上半年,DaoCloud 参与多个问题修复和功能研发,并取得了不少成就。其中: |
| 112 | + |
| 113 | +- [徐俊杰(pacoxu)](https://github.com/pacoxu) 连任 Kubernetes 指导委员会(Steering Committee)席位; |
| 114 | +- [蒋兴彦(chaunceyjiang)](https://github.com/chaunceyjiang) 成为 vllm 项目 Function Call Owner; |
| 115 | + |
| 116 | +## 发行说明 |
| 117 | + |
| 118 | +上述内容就是 Kubernetes v1.35 的主要更新和内容啦,更多的发布说明可以查看 [Kubernetes v1.35 版本的完整详细信息](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.35.md)。 |
| 119 | + |
| 120 | +我们下次版本发布时再见! |
| 121 | + |
| 122 | +## 历史文档 |
| 123 | + |
| 124 | +- [迎风破浪的三只熊——Kubernetes v1.34 发布,看点全解析](https://mp.weixin.qq.com/s/adEqoMmWXWpqck6ZbCvLLg) |
| 125 | +- [重磅!K8s正式支持Sidecar容器,v1.33版本这些改动将影响你的集群](https://mp.weixin.qq.com/s/a7ZLS59ibSbr-7m1TJpehw) |
| 126 | +- [Kubernetes 1.32 还在写 Webhook? 你已经 OUT 了!](https://mp.weixin.qq.com/s?__biz=MzI5ODQ2MzI3NQ==&mid=2247513735&idx=1&sn=e5f844df272b5bb691382fb5f324cbbd&chksm=ed0baa783029653a0e13882cd76ef2dc29eb75ada3a7d213c07a3bff3829abd230cad5d8f340&scene=126&sessionid=1734429261#rd) |
| 127 | +- [Kubernetes 1.31 发布!十年 OCI 镜像借着 AI 的风终于加入 Volume 的大家庭 ~](https://mp.weixin.qq.com/s/bl5ozc90PhWMO3l-deiJbw) |
| 128 | +- [最可爱的版本 UwU - Kubernetes v1.30 发布!](https://mp.weixin.qq.com/s?__biz=MzA5NTUxNzE4MQ==&mid=2659286459&idx=1&sn=bcb8d232b7b611caf89b7dbf17ce0299&chksm=8bcbfd29bcbc743f88806920a1f5200450deac6575db3d20371f76c54d33140d5f4ce39f19f7) |
| 129 | +- [Kubernetes 1.29 全新特性: 抛弃 iptables 还在等什么...](https://mp.weixin.qq.com/s/ZZJBRWauVo-VwNFHkNQ_2w) |
| 130 | +- [Kubernetes 1.28 震撼发布,Sidecar Containers 迎面而来](https://mp.weixin.qq.com/s/Dr_JpSD9tzfahslZO2bX5A) |
| 131 | +- [近两年功能增加最多!Kubernetes 1.27 正式发布](https://mp.weixin.qq.com/s/maDEiCGzOPSDkH9dUxIxdA) |
| 132 | +- [Kubernetes 正式发布 v1.26,稳定性显著提升](https://mp.weixin.qq.com/s/qwzmeIM4INz-_BK_gbwOxw) |
| 133 | +- [Kubernetes 1.25 正式发布,多方面重大突破](https://mp.weixin.qq.com/s/aRmLBYpk0MhLJAwY85DyuA) |
| 134 | +- [Kubernetes 1.24 走向成熟的 Kubernetes](https://mp.weixin.qq.com/s/vqH8ueaZeEeZbx_axNVSjg) |
| 135 | +- [Kubernetes 1.23 正式发布,有哪些增强?](https://mp.weixin.qq.com/s/A5GBv5Yn6tQK_r6_FSyp9A) |
| 136 | +- [Kubernetes 1.22 颠覆你的想象:可启用 Swap,推出 PSP 替换方案,还有……](https://mp.weixin.qq.com/s/9nH2UagDm6TkGhEyoYPgpQ) |
| 137 | +- [Kubernetes 1.21 震撼发布 | PSP 将被废除,BareMetal 得到增强](https://mp.weixin.qq.com/s/amGjvytJatO-5a7Nz4BYPw) |
| 138 | + |
| 139 | +## 参考 |
| 140 | + |
| 141 | +1. Kubernetes 增强特性 <https://kep.k8s.io/> |
| 142 | +2. Kubernetes 1.35 发布团队 <https://github.com/kubernetes/sig-release/blob/master/releases/release-1.35> |
| 143 | +3. Kubernetes 1.35 变更日志 <https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.35.md> |
| 144 | +4. Kubernetes 1.35 主题讨论 <https://github.com/kubernetes/sig-release/discussions/2903> |
0 commit comments