Kubernetes v1.32: Penelope

编辑: Matteo Bianchi, Edith Puclla, William Rizzo, Ryota Sawada, Rashan Smith

宣布 Kubernetes v1.32 版本:Penelope!

与之前的版本一样,Kubernetes v1.32 版本引入了新的稳定版、测试版和 Alpha 功能。高质量版本的持续交付强调了我们开发周期的强大以及来自我们社区的活跃支持。此版本总共包含 44 项增强功能。在这些增强功能中,13 项已升级为稳定版,12 项进入测试版,19 项进入 Alpha 版。

Kubernetes v1.32 发布主题是“Penelope”。

如果 Kubernetes 在古希腊语中是“飞行员”的意思,那么在此版本中,我们从这个起源出发,反思 Kubernetes 的过去 10 年和我们的成就:每个发布周期都是一次旅程,就像《奥德赛》中的佩内洛普一样,
编织了 10 年——每天晚上都会拆除白天所做的一部分——每个版本都会添加新功能并删除其他功能,尽管这里的目的更加明确,那就是不断改进 Kubernetes。v1.32 是 Kubernetes 十周年纪念的最后一次发布,我们想向所有参与到全球 Kubernetes 团队的人致敬,他们穿越云原生海洋,历经危险和挑战:愿我们继续共同编织 Kubernetes 的未来。

近期关键功能更新

关于 DRA 增强功能的说明

在此版本中,与上一个版本一样,Kubernetes 项目继续提出对动态资源分配 (DRA) 的多项增强,动态资源分配是 Kubernetes 资源管理系统的关键组件。这些增强旨在提高对需要专用硬件(如 GPU、FPGA 和网络适配器)的工作负载的资源分配的灵活性和效率。这些功能对于机器学习或高性能计算应用程序等用例特别有用。启用 DRA 结构化参数支持的核心部分已升级为测试版

节点和服务容器更新的质量提升

SIG Node 具有以下超越 KEP 的亮点

  1. 当 kubelet 的运行状况检查失败时,系统监控程序功能现在用于重新启动 kubelet,同时还限制了给定时间段内的最大重启次数。这提高了 kubelet 的可靠性。有关更多详细信息,请参阅拉取请求#127566

  2. 当遇到镜像拉取回退错误时,Pod 状态中显示的消息已得到改进,更加人性化,并指示 Pod 处于此状态的原因的详细信息。当发生镜像拉取回退时,该错误会附加到 Pod 规范中的 status.containerStatuses[*].state.waiting.message 字段,并在 reason 字段中包含 ImagePullBackOff 值。此更改为您提供了更多上下文,并帮助您确定问题的根本原因。有关更多详细信息,请参阅拉取请求#127918

  3. 服务容器功能的目标是在 v1.33 中升级为稳定版。要查看剩余的工作项和用户的反馈,请参阅问题中的评论#753

升级为稳定版的功能亮点

以下是 v1.32 版本之后现已稳定的部分改进。

自定义资源字段选择器

自定义资源字段选择器允许开发人员向自定义资源添加字段选择器,从而镜像内置 Kubernetes 对象的功能。这允许更高效、更精确地过滤自定义资源,从而促进更好的 API 设计实践。

这项工作是KEP #4358的一部分,由 SIG API Machinery 完成。

支持调整内存支持卷的大小

此功能可以根据 Pod 资源限制动态调整内存支持卷的大小,从而提高工作负载的可移植性和整体节点资源利用率。

这项工作是KEP #1967的一部分,由 SIG Node 完成。

绑定服务帐户令牌改进

在服务帐户令牌声明中包含节点名称允许用户在授权和准入(ValidatingAdmissionPolicy)期间使用此类信息。此外,此改进可防止服务帐户凭据成为节点的权限提升路径。

这项工作是KEP #4193的一部分,由 SIG Auth 完成。

结构化授权配置

可以在 API 服务器中配置多个授权器,以允许进行结构化授权决策,并支持 Webhook 中的 CEL 匹配条件。这项工作是KEP #3221的一部分,由 SIG Auth 完成。

自动删除由 StatefulSet 创建的 PVC

当不再需要时,由 StatefulSet 创建的 PersistentVolumeClaims (PVC) 会自动删除,同时确保在 StatefulSet 更新和节点维护期间数据的持久性。此功能简化了 StatefulSet 的存储管理并降低了孤立 PVC 的风险。

这项工作是KEP #1847的一部分,由 SIG Apps 完成。

升级为测试版的功能亮点

以下是 v1.32 版本之后现已升级为测试版的部分改进。

Job API managed-by 机制

Job 的 managedBy 字段在 v1.32 版本中已升级为测试版。此功能使外部控制器(如Kueue)能够管理 Job 同步,从而提供更大的灵活性以及与高级工作负载管理系统的集成。

这项工作是KEP #4368的一部分,由 SIG Apps 完成。

仅允许为配置的端点进行匿名身份验证

此功能允许管理员指定允许哪些端点进行匿名请求。例如,管理员可以选择仅允许匿名访问运行状况端点(如 /healthz/livez/readyz),同时确保防止匿名访问其他集群端点或资源,即使用户错误配置了 RBAC。

这项工作是KEP #4633的一部分,由 SIG Auth 完成。

kube-scheduler 中用于精确重新排队的每个插件回调函数增强

此功能通过每个插件的回调函数 (QueueingHint) 更高效的调度重试决策来提高调度吞吐量。所有插件现在都具有 QueueingHints。

这项工作是KEP #4247的一部分,由 SIG Scheduling 完成。

从卷扩展失败中恢复

此功能允许用户通过使用较小的尺寸重试来从卷扩展失败中恢复。此增强功能确保卷扩展更具弹性和可靠性,从而降低该过程中数据丢失或损坏的风险。

这项工作是KEP #1790的一部分,由 SIG Storage 完成。

卷组快照

此功能引入了 VolumeGroupSnapshot API,该 API 允许用户一起拍摄多个卷的快照,从而确保卷之间的数据一致性。

这项工作是KEP #3476的一部分,由 SIG Storage 完成。

结构化参数支持

动态资源分配 (DRA) 的核心部分,结构化参数支持,已升级为测试版。这允许 kube-scheduler 和 Cluster Autoscaler 直接模拟声明分配,而无需第三方驱动程序。这些组件现在可以预测资源请求是否可以根据集群的当前状态得到满足,而无需实际提交分配。通过消除第三方驱动程序来验证或测试分配的需求,此功能改进了资源分配的计划和决策制定,从而使调度和缩放过程更加高效。

这项工作是KEP #4381的一部分,由设备管理工作组(一个包含 SIG NodeSIG SchedulingSIG Autoscaling 的跨职能团队)完成。

标签和字段选择器授权

标签和字段选择器可以用于授权决策。节点授权器自动利用此功能将节点限制为仅列出或监视其 Pod。Webhook 授权器可以更新为根据所使用的标签或字段选择器来限制请求。

这项工作是KEP #4601的一部分,由 SIG Auth 完成。

Alpha 版新功能亮点

以下是在 v1.32 版本中作为 alpha 功能引入的关键改进。

Kubernetes 调度程序中的异步抢占

Kubernetes 调度器已通过异步抢占功能得到增强,该功能通过异步处理抢占操作来提高调度吞吐量。抢占确保高优先级 Pod 通过驱逐低优先级 Pod 来获得所需的资源,但此过程之前涉及诸如调用 API 删除 Pod 等繁重操作,从而减慢了调度器的速度。通过此增强功能,此类任务现在可以并行处理,允许调度器继续调度其他 Pod 而不会出现延迟。此改进在 Pod 高度波动或频繁出现调度失败的集群中尤其有益,可确保更高效、更具弹性的调度过程。

这项工作是 KEP #4832 的一部分,由 SIG Scheduling 完成。

使用 CEL 表达式的修改准入策略

此功能利用 CEL 的对象实例化和 JSON Patch 策略,并结合服务器端应用合并算法。它简化了策略定义,减少了修改冲突,并提高了准入控制性能,同时为 Kubernetes 中更健壮、更可扩展的策略框架奠定了基础。

Kubernetes API 服务器现在支持基于通用表达式语言 (CEL) 的修改准入策略,为修改准入 Webhook 提供了一种轻量级、高效的替代方案。通过此增强功能,管理员可以使用 CEL 声明修改,例如设置标签、默认字段或使用简单的声明式表达式注入 sidecar。此方法降低了操作复杂性,消除了对 Webhook 的需求,并直接与 kube-apiserver 集成,从而提供更快、更可靠的进程内修改处理。

这项工作是 KEP #3962 的一部分,由 SIG API Machinery 完成。

Pod 级别资源规范

此增强功能通过引入在 Pod 级别设置资源请求和限制的功能来简化 Kubernetes 中的资源管理,从而创建一个共享池,Pod 中的所有容器都可以动态使用。这对于具有容器资源需求波动或突发的工作负载尤其有价值,因为它最大限度地减少了过度配置,并提高了整体资源效率。

通过在 Pod 级别利用 Linux cgroup 设置,Kubernetes 确保强制执行这些资源限制,同时使紧密耦合的容器能够更有效地协作,而不会受到人为约束。重要的是,此功能保持了与现有容器级资源设置的向后兼容性,允许用户以增量方式采用它,而不会中断当前工作流程或现有配置。

这标志着多容器 Pod 的重大改进,因为它降低了跨容器管理资源分配的操作复杂性。它还为紧密集成的应用程序(例如 sidecar 架构)提供了性能提升,在这些架构中,容器共享工作负载或依赖彼此的可用性以实现最佳性能。

这项工作是 KEP #2837 的一部分,由 SIG Node 完成。

允许 PreStop 钩子的 sleep 操作设置为零值

此增强功能引入了为 Kubernetes 中的 PreStop 生命周期钩子设置零秒睡眠持续时间的功能,为资源验证和自定义提供了更灵活和无操作的选项。以前,尝试为 sleep 操作定义零值会导致验证错误,从而限制了其使用。通过此更新,用户可以将零秒持续时间配置为有效的睡眠设置,从而在需要时启用立即执行和终止行为。

此增强功能向后兼容,作为由 PodLifecycleSleepActionAllowZero 功能门控制的选择加入功能引入。此更改对于需要 PreStop 钩子进行验证或准入 Webhook 处理而无需实际睡眠持续时间的场景特别有益。通过与 time.After Go 函数的功能保持一致,此更新简化了配置并扩展了 Kubernetes 工作负载的可用性。

这项工作是 KEP #4818 的一部分,由 SIG Node 完成。

DRA:资源声明状态的标准化网络接口数据

此增强功能添加了一个新字段,允许驱动程序报告 ResourceClaim 中每个已分配对象的特定设备状态数据。它还建立了一种表示网络设备信息的标准化方法。

这项工作是 KEP #4817 的一部分,由 SIG Network 完成。

核心组件的新 statusz 和 flagz 端点

您可以为核心组件启用两个新的 HTTP 端点,/statusz/flagz。这些端点通过深入了解该组件运行的版本(例如 Go 版本)及其运行时间以及该组件执行时使用的命令行标志,从而增强了集群的可调试性;从而更容易诊断运行时和配置问题。

这项工作是 KEP #4827KEP #4828 的一部分,由 SIG Instrumentation 完成。

Windows 反击!

已添加对 Kubernetes 集群中 Windows 节点正常关闭的支持。在此版本之前,Kubernetes 为 Linux 节点提供了正常节点关闭功能,但缺乏对 Windows 的同等支持。此增强功能使 Windows 节点上的 kubelet 能够正确处理系统关闭事件。这样做可以确保在 Windows 节点上运行的 Pod 正常终止,从而允许重新调度工作负载而不会中断。此改进增强了包含 Windows 节点的集群的可靠性和稳定性,尤其是在计划维护或任何系统更新期间。

此外,还为 Windows 节点添加了 CPU 和内存亲和性支持,并对 CPU 管理器、内存管理器和拓扑管理器进行了改进。

这项工作分别是 KEP #4802KEP #4885 的一部分,由 SIG Windows 完成。

1.32 中的毕业、弃用和删除

毕业到稳定版

这里列出了所有毕业为稳定版(也称为正式发布)的功能。有关包括新功能以及从 Alpha 版到 Beta 版的毕业的完整更新列表,请参阅发行说明。

此版本总共包含 13 项升级为稳定版的增强功能

弃用和删除

随着 Kubernetes 的开发和成熟,为了项目的整体健康,某些功能可能会被弃用、删除或替换为更好的功能。有关此过程的更多详细信息,请参阅 Kubernetes 弃用和删除策略

撤销旧的 DRA 实现

增强功能 #3063 在 Kubernetes 1.26 中引入了动态资源分配 (DRA)。

但是,在 Kubernetes v1.32 中,此 DRA 方法将发生重大更改。与原始实现相关的代码将被删除,留下 KEP #4381 作为“新的”基本功能。

更改现有方法的决定源于其与集群自动缩放的不兼容性,因为资源可用性是不透明的,这使集群自动缩放器和控制器都难以做出决策。新添加的结构化参数模型替代了该功能。

此删除将允许 Kubernetes 更可预测地处理新的硬件要求和资源声明,从而绕过与 kube-apiserver 来回调用 API 的复杂性。

请参阅增强功能问题 #3063 以了解更多信息。

API 删除

Kubernetes v1.32 中有一个 API 删除

  • 已删除 FlowSchema 和 PriorityLevelConfiguration 的 flowcontrol.apiserver.k8s.io/v1beta3 API 版本。要为此做好准备,您可以编辑现有清单并重写客户端软件以使用自 v1.29 起可用的 flowcontrol.apiserver.k8s.io/v1 API 版本。所有现有的持久化对象都可以通过新的 API 访问。flowcontrol.apiserver.k8s.io/v1beta3 中的显著更改包括,PriorityLevelConfiguration spec.limited.nominalConcurrencyShares 字段仅在未指定时默认为 30,并且显式值 0 不会更改为 30。

有关更多信息,请参阅 API 弃用指南

发行说明和所需的升级操作

在我们的 发行说明中查看 Kubernetes v1.32 版本的完整详细信息。

可用性

Kubernetes v1.32 可在 GitHubKubernetes 下载页面上下载。

要开始使用 Kubernetes,请查看这些交互式教程或使用 minikube 运行本地 Kubernetes 集群。您还可以使用 kubeadm 轻松安装 v1.32。

发布团队

Kubernetes 的发展离不开其社区的支持、承诺和辛勤工作。每个发布团队都由敬业的社区志愿者组成,他们共同努力构建构成您依赖的 Kubernetes 版本的许多部分。这需要我们社区各个角落的人员的专业技能,从代码本身到其文档和项目管理。

我们要感谢整个 发布团队为向我们的社区交付 Kubernetes v1.32 版本所付出的辛勤工作。发布团队的成员包括初次参与的影子成员和经验丰富的团队领导,他们的经验在多个发布周期中得到磨练。特别感谢我们的发布负责人 Frederico Muñoz,他出色地领导了发布团队,并以最大的谨慎处理任何事项,确保此版本顺利高效地执行。最后但并非最不重要的一点是,非常感谢所有发布成员 - 领导和影子成员 - 以及以下 SIG 在这 14 周的发布工作中取得的巨大成就和成果

  • SIG Docs - 为文档和博客评审以及与发布 Comms 和文档的持续协作提供基本支持;
  • SIG k8s InfraSIG Testing - 为保持测试框架的检查以及所有必要的基础设施组件所做的出色工作;
  • SIG Release 和所有发布经理 - 为在整个发布协调过程中提供的不可思议的支持,以优雅和及时的方式解决即使是最具挑战性的问题。

项目速度

CNCF K8s DevStats 项目汇总了与 Kubernetes 和各种子项目的速度相关的许多有趣的数据点。这包括从个人贡献到正在贡献的公司的数量的所有内容,并且说明了为发展这个生态系统所付出的努力的深度和广度。

在 v1.32 发布周期中,该周期持续了 14 周(9 月 9 日至 12 月 11 日),截至撰写本文时,我们看到来自多达 125 家不同公司和 559 个人的对 Kubernetes 的贡献。

在整个云原生生态系统中,共有 433 家公司,贡献者总数达 2441 人。与上一个版本周期相比,整体贡献增加了 7%,参与的公司数量增加了 14%,这表明云原生项目背后存在着强大的兴趣和社区支持。

此数据来源

我们所说的贡献是指有人进行提交、代码审查、评论、创建 issue 或 PR、审查 PR(包括博客和文档)或评论 issue 和 PR。

如果您有兴趣参与贡献,请访问我们贡献者网站上的入门指南

查看 DevStats,以了解更多关于 Kubernetes 项目和社区的整体活跃度。

活动更新

探索 2025 年 3 月至 6 月即将举行的 Kubernetes 和云原生活动,包括 KubeCon 和 KCD。随时了解 Kubernetes 社区的最新动态并参与其中。

2025 年 3 月

2025 年 4 月

2025 年 5 月

2025 年 6 月

即将发布的版本网络研讨会

加入 Kubernetes v1.32 发布团队成员的行列,于 2025 年 1 月 9 日星期四下午 5:00 (UTC),了解此版本的发布亮点,以及为帮助您规划升级的弃用和删除信息。有关更多信息和注册,请访问 CNCF 在线项目网站上的活动页面

参与其中

参与 Kubernetes 最简单的方法是加入与您兴趣相符的众多特别兴趣小组(SIG)之一。 有什么想向 Kubernetes 社区广播的内容吗? 在我们的每周社区会议以及以下渠道中分享您的声音。 感谢您的持续反馈和支持。