Kubernetes v1.32:Penelope

文摘   2024-12-12 10:13   中国香港  

作者Kubernetes v1.32 发布团队[1]

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

宣布 Kubernetes v1.32:Penelope 的发布!

与之前的版本相符,Kubernetes v1.32 的发布引入了新的稳定(stable)、测试(beta)和预览(alpha)功能。高质量版本的持续交付体现了我们的开发周期的强大以及社区的积极支持。本次发布共包含 44 项增强功能。其中,13 项已升级为稳定,12 项进入测试,19 项进入预览。

发布主题和标志

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

如果 Kubernetes 在古希腊语中是“领航员”,那么在这个版本中,我们从这个起源反思过去十年 Kubernetes 的成就:每个发布周期都是一段旅程。就像《奥德赛》中的 Penelope,十年来每晚都拆掉白天编织的部分,每次发布都增加新功能并移除旧功能,目的是不断提升 Kubernetes。v1.32 是 Kubernetes 十周年纪念的最后一个发布,我们希望向所有参与全球 Kubernetes 团队的成员致敬,愿我们共同编织 Kubernetes 的未来。

最近关键功能更新

关于 DRA 增强的说明

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

节点和侧车容器的生活质量改进

SIG Node 有以下亮点,超出了 KEP 的范围:

  1. 现在使用 systemd 监视功能,在 kubelet 健康检查失败时重新启动 kubelet,并限制在特定时间段内的最大重启次数。这提高了 kubelet 的可靠性。详细信息请参见 pull request #127566。
  2. 当遇到镜像拉取回退错误时,Pod 状态中显示的消息已改进,更加人性化,并说明了 Pod 处于这种状态的原因。当发生镜像拉取回退时,错误信息将附加到 Pod 规范中的 status.containerStatuses[*].state.waiting.message 字段,并在原因字段中标明 ImagePullBackOff。此更改为你提供了更多上下文,帮助识别问题的根本原因。详细信息请参见 pull request #127918。
  3. 侧车容器功能计划在 v1.33 中毕业到稳定。有关剩余工作项和用户反馈,请查看 issue #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 创建的持久卷声明(PVC)在不再需要时会自动删除,同时确保 StatefulSet 更新和节点维护期间的数据持久性。此功能简化了 StatefulSet 的存储管理,减少了孤立 PVC 的风险。

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

Beta 阶段功能亮点

以下是 v1.32 发布后现在进入测试阶段的一些改进。

Job API 管理机制

Jobs 的 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,让用户能够一起对多个卷进行快照,确保卷之间的数据一致性。

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

结构化参数支持

动态资源分配(DRA)的核心部分,结构化参数支持,已提升至测试阶段。这允许 kube-scheduler 和集群自动扩展器直接模拟请求分配,无需第三方驱动。现在这些组件可以基于集群当前状态预测资源请求是否可满足,而无需实际承诺分配。通过消除对第三方驱动的需求,该功能提升了资源分配的规划和决策效率,使调度和扩展过程更加高效。

这项工作是 KEP #4381 的一部分,由 WG Device Management(一个包含 SIG Node、SIG Scheduling 和 SIG Autoscaling 的跨职能团队)完成。

标签和字段选择器授权

标签和字段选择器可以用于授权决策。节点授权器自动利用这一点,限制节点仅列出或监视自己的 Pod。Webhook 授权器可以更新,以根据所使用的标签或字段选择器限制请求。

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

Alpha 阶段新功能亮点

以下是 v1.32 发布中引入的一些关键改进,作为预览功能。

Kubernetes 调度器的异步抢占

Kubernetes 调度器增强了异步抢占功能,提高了调度吞吐量,通过异步处理抢占操作来确保高优先级 Pod 获得所需资源。抢占会驱逐低优先级 Pod,但这一过程之前涉及繁重的操作,如 API 调用来删除 Pod,导致调度器缓慢。通过这项增强,这些任务现在可以并行处理,使调度器能够继续调度其他 Pod 而不延迟。这一改进在 Pod 更换频繁或调度失败的集群中尤为有益,确保了更高效和更具弹性的调度过程。

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

使用 CEL 表达式的变更入场策略

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

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

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

Pod 级资源规格

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

通过在 Pod 级别利用 Linux cgroup 设置,Kubernetes 确保了这些资源限制的执行,同时使紧密耦合的容器能够更有效地协作,而不会受到人为限制的影响。重要的是,该功能与现有的容器级资源设置保持向后兼容,允许用户逐步采纳,而不干扰当前的工作流程或现有配置。

这对多容器 Pod 是一次重大改进,因为它减少了跨容器管理资源分配的操作复杂性。它还为紧密集成的应用程序(如侧车架构)提供了性能提升,容器共享工作负载或依赖于彼此的可用性以实现最佳性能。

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

允许 PreStop 钩子的睡眠动作为零值

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

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

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

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

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

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

核心组件的新 statusz 和 flagz 端点

你可以为核心组件启用两个新的 HTTP 端点,/statusz 和 /flagz。这增强了集群的可调试性,让你了解组件运行的版本(如 Golang 版本)、正常运行时间,以及执行该组件的命令行标志,从而更容易诊断运行时和配置问题。

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

Windows 的反击!

为 Kubernetes 集群中的 Windows 节点添加了优雅关闭的支持。在此发布之前,Kubernetes 为 Linux 节点提供了优雅节点关闭功能,但缺乏对 Windows 的相应支持。此增强使 Windows 节点上的 kubelet 能够正确处理系统关闭事件,从而确保在 Windows 节点上运行的 Pods 被优雅终止,允许工作负载在不中断的情况下重新调度。这一改进增强了包含 Windows 节点的集群的可靠性和稳定性,尤其是在计划维护或系统更新期间。

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

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

1.32 版本的毕业、弃用和移除

毕业到稳定版本

以下是所有毕业到稳定版本(也称为正式发布)的功能。有关新功能和从 alpha 到 beta 的完整更新列表,请参阅发布说明。

本次发布共包含 13 项增强功能提升为稳定版本:

  • 结构化授权配置
  • 服务账户令牌改进
  • 自定义资源字段选择器
  • 重试生成名称
  • 使 Kubernetes 了解负载均衡行为
  • 为 Pod 添加字段 status.hostIPs
  • kubectl debug 中的自定义配置文件
  • 内存管理器
  • 支持动态调整内存卷大小
  • 拓扑管理器中的多 NUMA 对齐改进
  • 为 Job 注释添加作业创建时间戳
  • 为 StatefulSets 和索引 Job 添加 Pod 索引标签
  • 自动删除由 StatefulSet 创建的 PVC

弃用和移除

随着 Kubernetes 的发展,某些功能可能会被弃用、移除或替换为更好的功能,以确保项目的整体健康。有关此过程的更多详细信息,请参阅 Kubernetes 弃用和移除政策。

旧 DRA 实现的撤回

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

然而,在 Kubernetes v1.32 中,DRA 的实现方式将发生重大变化。与原始实现相关的代码将被移除,KEP #4381 将成为“新”的基础功能。

改变现有方法的决定源于其与集群自动扩展的不兼容,因为资源可用性不透明,导致集群自动扩展器和控制器的决策复杂化。新添加的结构化参数模型替代了这一功能。

此次移除将使 Kubernetes 能够更可预测地处理新硬件需求和资源声明,避免反复调用 kube-apiserver 的复杂性。

有关更多信息,请查看增强问题 #3063。

API 移除

Kubernetes v1.32 中有一个 API 被移除:

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

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

发布说明和升级操作要求

请查看 Kubernetes v1.32 发布的完整详细信息,参见我们的发布说明。

可用性

Kubernetes v1.32 可在 GitHub 或 Kubernetes 下载页面下载。

要开始使用 Kubernetes,请查看这些互动教程或使用 minikube 运行本地 Kubernetes 集群。你也可以通过 kubeadm 轻松安装 v1.32。

发布团队

Kubernetes 的成功离不开社区的支持、承诺和辛勤工作。每个发布团队由热心的社区志愿者组成,他们共同努力构建你依赖的 Kubernetes 发布的各个部分。这需要来自社区各个角落的专业技能,从代码本身到文档和项目管理。

我们要感谢整个发布团队为将 Kubernetes v1.32 发布带给社区所付出的劳动。发布团队的成员从第一次参与的成员到具有多个发布周期经验的团队领导都有。特别感谢我们的发布负责人 Frederico Muñoz,他优雅地领导团队,处理每个问题都非常细致,确保发布顺利高效。最后,感谢所有发布成员——无论是负责人还是参与者——以及以下 SIGs 在这 14 周发布工作中所取得的出色成果:

  • SIG Docs - 为文档和博客审查提供基础支持,并与发布通讯和文档持续合作;
  • SIG k8s Infra 和 SIG Testing - 在维护测试框架及所有必要的基础组件方面做出了杰出贡献;
  • SIG Release 和所有发布经理 - 在整个发布协调过程中提供了令人难以置信的支持,优雅及时地解决了最具挑战性的问题。

项目进展

CNCF K8s DevStats 项目汇总了许多与 Kubernetes 及各个子项目进展相关的数据点。这些数据涵盖了个人贡献、参与公司数量等,展示了推动这一生态系统发展的深度和广度。

在 v1.32 发布周期中(从 9 月 9 日到 12 月 11 日,共 14 周),截至撰写时,共有 125 家不同公司和 559 位个人对 Kubernetes 作出了贡献。

在整个云原生生态系统中,参与公司数量达到了 433 家,总贡献者为 2441 人。与上一个发布周期相比,总体贡献增加了 7%,参与公司数量增加了 14%,显示出云原生项目背后强烈的兴趣和社区支持。

数据来源

  • 贡献 Kubernetes 的公司[2]
  • 整体生态系统贡献[3]

这里的“贡献”是指某人提交代码、进行代码审查、评论、创建问题或 PR、审查 PR(包括博客和文档),或对问题和 PR 进行评论。

如果你有兴趣贡献,请访问我们的贡献者网站了解入门信息。

查看 DevStats,了解 Kubernetes 项目和社区的整体进展。

活动更新

探索 2025 年 3 月至 6 月即将举行的 Kubernetes 和云原生活动,包括 KubeCon 和 KCD,获取最新信息,与 Kubernetes 社区互动。

2025 年 3 月

  • KCD - Kubernetes Community Days: 北京,中国 | 3 月
  • KCD - Kubernetes Community Days: 瓜达拉哈拉,墨西哥 | 2025 年 3 月 16 日
  • KCD - Kubernetes Community Days: 里约热内卢,巴西 | 2025 年 3 月 22 日

2025 年 4 月

  • KubeCon + CloudNativeCon 欧洲 2025 | 2025 年 4 月 1-4 日 | 英国伦敦
  • KCD - Kubernetes Community Days: 布达佩斯,匈牙利 | 2025 年 4 月 23 日
  • KCD - Kubernetes Community Days: 钦奈,印度 | 2025 年 4 月 26 日
  • KCD - Kubernetes Community Days: 奥克兰,新西兰 | 2025 年 4 月 28 日

2025 年 5 月

  • KCD - Kubernetes Community Days: 赫尔辛基,芬兰 | 2025 年 5 月 6 日
  • KCD - Kubernetes Community Days: 旧金山,美国 | 2025 年 5 月 8 日
  • KCD - Kubernetes Community Days: 奥斯丁,美国 | 2025 年 5 月 15 日
  • KCD - Kubernetes Community Days: 首尔,韩国 | 2025 年 5 月 22 日
  • KCD - Kubernetes Community Days: 伊斯坦布尔,土耳其 | 2025 年 5 月 23 日
  • KCD - Kubernetes Community Days: 赫拉迪亚,哥斯达黎加 | 2025 年 5 月 31 日
  • KCD - Kubernetes Community Days: 纽约,美国 | 5 月

2025 年 6 月

  • KCD - Kubernetes Community Days: 布拉迪斯拉发,斯洛伐克 | 2025 年 6 月 5 日
  • KCD - Kubernetes Community Days: 班加罗尔,印度 | 2025 年 6 月 6 日
  • KubeCon + CloudNativeCon 中国 2025 | 2025 年 6 月 10-11 日 | 香港
  • KCD - Kubernetes Community Days: 安提瓜,危地马拉 | 2025 年 6 月 14 日
  • KubeCon + CloudNativeCon 日本 2025 | 2025 年 6 月 16-17 日 | 东京,日本
  • KCD - Kubernetes Community Days: 尼日利亚,非洲 | 2025 年 6 月 19 日

即将举行的发布网络研讨会

请于 2024 年 1 月 9 日(星期四)下午 5:00(UTC)参加 Kubernetes v1.32 发布团队的网络研讨会,了解本次发布的亮点、弃用和移除的信息,以帮助你规划升级。有关更多信息和注册,请访问 CNCF 在线项目网站的活动页面。

参与方式

参与 Kubernetes 的最简单方法是加入与你兴趣相符的多个特别兴趣小组(SIG)之一。如果你有想与 Kubernetes 社区分享的内容,请在我们的每周社区会议上发声,并通过以下渠道参与。感谢你持续的反馈和支持。

  • 在 Bluesky 上关注我们 @Kubernetes.io 获取最新更新
  • 加入社区讨论平台 Discuss
  • 加入 Slack 社区
  • 在 Stack Overflow 上提问(或回答问题)
  • 分享你的 Kubernetes 故事
  • 阅读博客,了解 Kubernetes 的最新动态
  • 了解更多关于 Kubernetes 发布团队的信息
参考资料
[1]

Kubernetes v1.32 发布团队: https://github.com/kubernetes/sig-release/blob/master/releases/release-1.32/release-team.md

[2]

贡献 Kubernetes 的公司: https://k8s.devstats.cncf.io/d/11/companies-contributing-in-repository-groups?orgId=1&from=1725832800000&to=1733961599000&var-period=d28&var-repogroup_name=Kubernetes&var-repo_name=kubernetes%2Fkubernetes

[3]

整体生态系统贡献: https://k8s.devstats.cncf.io/d/11/companies-contributing-in-repository-groups?orgId=1&from=1725832800000&to=1733961599000&var-period=d28&var-repogroup_name=All&var-repo_name=kubernetes%2Fkubernetes


点击【阅读原文】阅读网站原文



CNCF概况(幻灯片)

扫描二维码联系我们!




CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux  Foundation,是非营利性组织。 

CNCF云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请关注CNCF微信公众号。

CNCF
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
 最新文章