前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kubernetes v1.33 发布:64 项增强,18 项重磅功能转正 Stable!Sidecar 终于 Stable啦!

Kubernetes v1.33 发布:64 项增强,18 项重磅功能转正 Stable!Sidecar 终于 Stable啦!

作者头像
希里安
发布于 2025-04-30 06:56:13
发布于 2025-04-30 06:56:13
3350
举报
文章被收录于专栏:希里安希里安

近日见闻

时间过得真快,一转眼k8s都更新到1.33了,我印象最深刻的是1.18,因为这是我正式学习和接触k8s的第一个版本,希里安那时候考试认证的时候也才1.2x的版本,一晃过去好几年了!

看看希里安以往的报道,虽然没有紧跟每一个更新,但是每一次写相关更新的文章,我都会感叹时光的飞逝!所以珍惜当下才是最重要的呀!

K8s即将迎来1.30版本

k8s又又更新了啦!1.28: Planternetes发布!

k8s又又更新了啦!1.27.4版本日志

k8s刚刚更新1.27.3版本啦!

Kubernetes v1.33: Octarine 2025年4月23日发布

据官网统计,在 v1.33 发布周期(从 2025 年 1 月 13 日持续到 4 月 23 日,共 15 周)期间,Kubernetes 收到了来自多达 121 家不同公司和 570 位个人(截至撰写本文时,发布日期前几周)的贡献。在更广泛的云原生生态系统中,公司数量增加到 435 家,总贡献者数量达到 2400 人。

开源社区的力量真的很强大!

希里安开源项目 CILIKUBE 预告!

所以借这次K8s更新在这里再次给大家介绍下希里安自己的开源项目CILIKUBE,这是一款使用现代主流技术栈(Vue3, TypeScript, Go, Gin)构建的开源、初学者友好的全栈 Kubernetes 集群管理平台。非常适合k8s运维小白以及作为学习 Vue3/Go Web 开发 Kubernetes 二次开发的入门项目,纯爱发电,感兴趣的朋友点个免费的关注和star!

项目地址:https://github.com/ciliverse/cilikube

login.png
login.png
first.png
first.png
minikube2.png
minikube2.png

Kubernetes v1.33 发布公告重点内容总结

先不看翻译直接看重点,看看有哪些重点内容:

发布概览:

  • 版本号与代号: Kubernetes v1.33,代号 Octarine (魔术的颜色),灵感来自特里·普拉切特的《碟形世界》。
  • 发布日期: 2025 年 4 月 23 日。
  • 增强功能统计: 共 64 项增强功能。
    • Stable (稳定): 18 项
    • Beta (测试): 20 项
    • Alpha (实验): 24 项
    • Deprecated/Withdrawn (弃用/撤回): 2 项

核心亮点与重要特性:

  1. 1. 重要特性毕业到 Stable (稳定):
    • Sidecar 容器 成为 stable 功能,作为特殊的 initContainers 实现,restartPolicy: Always,确保在主容器前启动并全程运行。
    • 多个 Service CIDR 允许集群管理员通过 ServiceCIDRIPAddress API 动态增加 ClusterIP Service 的可用 IP 地址范围。
    • kube-proxy 的 nftables 后端: 毕业到 stable,提供了更高性能和可伸缩性的 Service 实现(Linux 上默认仍为 iptables)。
    • 带 trafficDistribution: PreferClose 的拓扑感知路由 毕业到 GA,优化多区域集群流量,优先路由到同一区域的端点。
    • 卷填充器 (Volume populators): 毕业到 GA,允许通过 dataSourceRef 使用自定义资源作为数据源预填充卷。
    • 始终遵循 PersistentVolume 回收策略: 通过 finalizer 确保无论 PV/PVC 删除顺序如何,PV 的“Delete”回收策略都能被执行,防止存储资源泄漏。
    • kubectl 中的子资源支持: --subresource 参数在 get, patch, edit, apply, replace 等命令中普遍可用。
    • 索引 Job 的每个索引回退限制: 允许为 Indexed Job 的每个索引设置单独的回退限制,提高细粒度控制。
    • Job 成功策略: 允许使用 .spec.successPolicy 定义 Job 的成功条件(基于成功索引或数量)。
    • 绑定的 ServiceAccount Token 安全性改进: 包含 JWT ID、节点信息等,支持节点限制,增强安全性。
    • Pod 亲和性/反亲和性中的 matchLabelKeys/mismatchLabelKeys: 提供更灵活的标签匹配方式来定义亲和性/反亲和性。
    • 计算 PodTopologySpread 倾斜时考虑污点和容忍度: 允许在计算 Pod 分布时考虑节点亲和性和污点。
    • 拒绝非 SMT 对齐工作负载: CPU Manager 策略可强制在 SMT 系统上分配完整的 CPU 核心对。
    • CRD Validation Ratcheting: CRD 验证加强。
    • Services 的流量分发: 相关功能。
    • 递归只读 (RRO) 挂载。
  2. 2. 关键特性进入 Beta (测试):
    • Pod 资源原地修改大小: 允许在不替换 Pod 的情况下动态更新容器的 CPU/内存资源。
    • 支持 Linux Pod 中的用户命名空间: 默认启用 beta,通过 pod.spec.hostUsers 选择加入,是重要的安全增强。
    • 支持将镜像挂载为卷: 允许将 OCI 镜像直接用作 Pod 中的卷。
    • ClusterTrustBundles: 用于在集群中分发 X.509 信任锚(根证书)的集群范围资源。
    • Scheduler 异步抢占: 并行处理 Pod 驱逐,提高调度效率。
    • 细粒度 SupplementalGroups 控制: supplementalGroupsPolicy 默认启用 beta,提供 Merge (默认) 和 Strict 策略。
    • Pod procMount 选项: 默认启用 beta,允许微调 /proc 访问权限,有助于非特权容器。
    • 用于 Windows kube-proxy 的 Direct Service Return (DSR) 支持。
    • 动态资源分配 (DRA) 结构化参数支持: API 改进 (v1beta2),支持普通用户访问,增强驱动升级。
    • 用于网络接口的动态资源分配 (DRA): 标准化报告网络接口数据。
    • 当调度器 activeQ 为空时尽早处理未调度 Pod。
    • CPUManager 策略将 CPU 分布到 NUMA 节点。
    • 容器 PreStop hook 的零秒休眠: 允许定义无操作的 PreStop hook。
    • 内部工具 validation-gen: 用于声明式验证 Kubernetes 原生类型。
  3. 3. 关键特性进入 Alpha (实验):
    • kubectl 的新配置选项 .kuberc: 用于分离用户偏好设置 (别名、覆盖) 和 kubeconfig。需要设置环境变量 KUBECTL_KUBERC=true 选择启用。
    • 动态资源分配 (DRA) 的多项增强: 包括设备污点/容忍度 (DRADeviceTaints)、优先列表 (DRAPrioritizedList)、管理员访问控制 (DRAAdminAccess)、可分区设备支持 (DRAPartitionableDevices)。这是 DRA 的重要发展方向。
    • HorizontalPodAutoscaler 的可配置容忍度。
    • 可配置的容器重启延迟 (Tune CrashLoopBackOff)。
    • 自定义容器停止信号: 可以在 Pod 规范中定义 (lifecycle.stopSignal)。
    • 健壮的镜像拉取策略:IfNotPresentNever 镜像强制进行认证检查。
    • 节点拓扑标签通过 downward API 提供。
    • 通过 generation 和 observed generation 提供更好的 Pod 状态。
    • 支持 kubelet CPU 管理器中的拆分 L3 缓存架构。
    • PSI (Pressure Stall Information) 指标用于改进调度。
    • 使用 kubelet 进行无 Secret 的镜像拉取: 支持使用 ServiceAccount token 进行镜像仓库认证。
  4. 4. 重要弃用和移除:
    • Stable Endpoints API 弃用: 已被 EndpointSlices API 取代(自 v1.21 稳定)。建议用户迁移到 EndpointSlices。
    • 移除节点状态中的 kube-proxy 版本信息: .status.nodeInfo.kubeProxyVersion 字段被移除,因为它不准确且已在 v1.31 弃用。
    • 移除树内 gitRepo 卷驱动: 树内代码被移除,因存在安全风险。GitRepoVolumeDriver feature gate 允许临时重新启用(v1.39 完全移除)。建议使用 git-sync 或 initContainers 替代。
    • 移除对 Windows Pod 的主机网络支持: 此功能因技术限制从未稳定,现已完全移除(不影响 HostProcess 容器)。

原文翻译

以下为中文翻译(AI翻译)

与之前的版本类似,Kubernetes v1.33 版本引入了新的 Stable(稳定)、Beta(测试)和 Alpha(实验)特性。高质量版本的持续交付凸显了我们开发周期的强大实力以及社区的活跃支持。

此版本包含 64 项增强功能(enhancements)。其中,18 项已升级到 Stable,20 项进入 Beta,24 项进入 Alpha,2 项被弃用或撤回。

此版本中还有几项值得注意的弃用和移除;如果您已经在运行旧版本的 Kubernetes,请务必阅读相关内容。

发布主题和标志

Kubernetes v1.33 标志:Octarine

Kubernetes v1.33 的主题是 Octarine:魔术的颜色¹,灵感来自特里·普拉切特的《碟形世界》系列。此版本突显了 Kubernetes 在整个生态系统中实现的开源魔法²。

如果您熟悉碟形世界,您可能会认出一只小小的沼泽龙栖息在不见大学的塔楼顶,仰望着安赫-莫波克城上空的 Kubernetes 月亮,背景中有 64 颗星星³。

随着 Kubernetes 进入第二个十年,我们庆祝维护者的巫师般的技艺、新贡献者的好奇心,以及推动项目前进的协作精神。v1.33 版本的发布提醒我们,正如普拉切特所写:“即使你知道它是怎么做到的,它仍然是魔法。” 即使你了解 Kubernetes 代码库的来龙去脉,在发布周期结束时回顾,你会意识到 Kubernetes 仍然充满魔力。

Kubernetes v1.33 是开源创新持久力量的证明,来自世界各地的数百⁴名贡献者共同努力创造出非凡的成果。在每一个新功能背后,Kubernetes 社区致力于维护和改进项目,确保它保持安全、可靠并按时发布。每个版本都在前一个版本的基础上构建,创造出比我们独自能实现的更伟大的事物。

  1. 1. Octarine 是神秘的第八种颜色,只有那些 attuned to the arcane(与神秘事物协调一致)的人才能看到——巫师、女巫,当然还有猫。偶尔也会有盯着 IPtables 规则太久的人。
  2. 2. 任何足够先进的技术都与魔法无异……?
  3. 3. v1.33 中包含 64 个 KEPs (Kubernetes Enhancement Proposals) 并非巧合。
  4. 4. 请参阅 v1.33 🚀 的项目速度部分。

重点更新聚焦

Kubernetes v1.33 包含众多新功能和改进。以下是发布团队希望重点介绍的一些精选更新!

Stable: Sidecar 容器

Sidecar 模式涉及部署单独的辅助容器来处理额外的功能,例如网络、日志记录和指标收集。Sidecar 容器在 v1.33 中毕业到 stable。

Kubernetes 将 Sidecar 实现为一种特殊的 init 容器,具有 restartPolicy: Always,确保 Sidecar 在应用容器启动之前启动,在 Pod 的整个生命周期中保持运行,并在主容器退出后自动终止。

此外,Sidecar 可以利用探针(startup, readiness, liveness)来指示其操作状态,并且它们的 Out-Of-Memory (OOM) 分数调整与主容器一致,以防止在内存压力下过早终止。

要了解更多信息,请阅读 Sidecar 容器。

这项工作是作为 SIG Node 领导的 KEP-753: Sidecar Containers 的一部分完成的。

Beta: Pod 垂直扩展的资源原地修改大小

工作负载可以使用 Deployment、StatefulSet 等 API 来定义。这些 API 描述了应该运行的 Pod 的模板,包括内存和 CPU 资源以及应该运行的 Pod 副本数量。工作负载可以通过更新 Pod 副本数量进行水平扩展,或者通过更新 Pod 容器所需的资源进行垂直扩展。在此增强之前,Pod 规范中定义的容器资源是不可变的,更新 Pod 模板中的任何这些细节都会触发 Pod 替换。

但是,如果您可以在不重启现有 Pod 的情况下动态更新其资源配置呢?

KEP-1287 正是为了实现这种 Pod 原地更新。它在 v1.27 中作为 alpha 发布,并在 v1.33 中毕业到 beta。这为有状态进程的垂直扩展提供了各种可能性,无需停机;在流量较低时无缝缩小;甚至可以在启动期间分配更大的资源,然后在初始设置完成后减少。

这项工作是作为 SIG Node 和 SIG Autoscaling 领导的 KEP-1287: In-Place Update of Pod Resources 的一部分完成的。

Alpha: kubectl 的新配置选项 .kuberc 用于用户偏好设置

在 v1.33 中,kubectl 引入了一个新的 alpha 特性,通过可选的配置文件 .kuberc 来设置用户偏好。该文件可以包含 kubectl 别名和覆盖(例如,默认使用服务器端应用),同时将集群凭据和主机信息保留在 kubeconfig 中。这种分离允许共享相同的 kubectl 交互用户偏好,而不管目标集群和使用的 kubeconfig 是什么。

要启用此 alpha 特性,用户可以设置环境变量 KUBECTL_KUBERC=true 并创建 .kuberc 配置文件。默认情况下,kubectl 在 ~/.kube/kuberc 中查找此文件。您也可以使用 --kuberc 标志指定替代位置,例如:kubectl --kuberc /var/kube/rc

这项工作是作为 SIG CLI 领导的 KEP-3104: Separate kubectl user preferences from cluster configs 的一部分完成的。

毕业到 Stable 的特性

以下是 v1.33 版本后升级到 stable 的一些精选改进。

  • 索引 Job 的每个索引回退限制 (Backoff limits per index for indexed Jobs) 此版本毕业了一个特性,允许为索引 Job 设置每个索引的回退限制。传统上,Kubernetes Job 中的 backoffLimit 参数指定了在将整个 Job 视为失败之前重试的次数。此增强功能允许索引 Job 中的每个索引拥有自己的回退限制,为单个任务的重试行为提供更细粒度的控制。这确保了特定索引的失败不会过早终止整个 Job,从而允许其他索引独立继续处理。 这项工作是作为 SIG Apps 领导的 KEP-3850: Backoff Limit Per Index For Indexed Jobs 的一部分完成的。
  • Job 成功策略 (Job success policy) 使用 .spec.successPolicy,用户可以指定必须成功哪些 Pod 索引(succeededIndexes),必须成功多少个 Pod(succeededCount),或两者的组合。此功能适用于各种工作负载,包括部分完成即足够的模拟,以及只有 leader 的成功决定 Job 整体结果的 leader-worker 模式。 这项工作是作为 SIG Apps 领导的 KEP-3998: Job success/completion policy 的一部分完成的。
  • 绑定的 ServiceAccount Token 安全性改进 (Bound ServiceAccount token security improvements) 此增强功能引入了一些特性,例如在 token 中包含唯一的 token 标识符(即 JWT ID Claim,也称为 JTI)和节点信息,从而实现更精确的验证和审计。此外,它支持节点特定的限制,确保 token 只能在指定的节点上使用,从而降低 token 滥用和潜在安全漏洞的风险。这些现已普遍可用的改进旨在增强 Kubernetes 集群中 Service Account token 的整体安全性。 这项工作是作为 SIG Auth 领导的 KEP-4193: Bound service account token improvements 的一部分完成的。
  • kubectl 中的子资源支持 (Subresource support in kubectl) --subresource 参数现已普遍可用于 kubectl 子命令,例如 get, patch, edit, applyreplace,允许用户为所有支持子资源的资源获取和更新子资源。要了解更多关于支持的子资源的信息,请访问 kubectl 参考文档。 这项工作是作为 SIG CLI 领导的 KEP-2590: Add subresource support to kubectl 的一部分完成的。
  • 多个 Service CIDR (Multiple Service CIDRs) 此增强功能引入了 Service IP 分配逻辑的新实现。在整个集群中,每个类型为 ClusterIP 的 Service 必须分配一个唯一的 IP 地址。尝试创建已分配特定集群 IP 的 Service 将返回错误。更新后的 IP 地址分配器逻辑使用了两个新稳定的 API 对象:ServiceCIDRIPAddress。这些现已普遍可用的 API 允许集群管理员动态增加 ClusterIP 类型 Service 可用的 IP 地址数量(通过创建新的 ServiceCIDR 对象)。 这项工作是作为 SIG Network 领导的 KEP-1880: Multiple Service CIDRs 的一部分完成的。
  • kube-proxy 的 nftables 后端 (nftables backend for kube-proxy) kube-proxy 的 nftables 后端现已稳定,增加了一个新的实现,显著提高了 Kubernetes 集群内 Service 实现的性能和可扩展性。出于兼容性原因,iptables 在 Linux 节点上仍然是默认设置。如果您想尝试,请查看迁移指南。 这项工作是作为 SIG Network 领导的 KEP-3866: nftables kube-proxy backend 的一部分完成的。
  • 带 trafficDistribution: PreferClose 的拓扑感知路由 (Topology aware routing with trafficDistribution: PreferClose) 此版本将拓扑感知路由和流量分发升级到 GA,这将允许我们在多区域集群中优化 Service 流量。EndpointSlices 中的拓扑感知提示将使 kube-proxy 等组件能够优先将流量路由到同一区域内的端点,从而降低延迟和跨区域数据传输成本。在此基础上,trafficDistribution 字段已添加到 Service 规范中,其 PreferClose 选项根据网络拓扑将流量导向最近的可用端点。此配置通过最大程度地减少区域间通信来增强性能和成本效益。 这项工作是作为 SIG Network 领导的 KEP-4444: Traffic Distribution for Services 和 KEP-2433: Topology Aware Routing 的一部分完成的。
  • 拒绝非 SMT 对齐工作负载的选项 (Options to reject non SMT-aligned workload) 此功能为 CPU 管理器添加了策略选项,使其能够拒绝与同步多线程 (SMT) 配置不对齐的工作负载。此增强功能现已普遍可用,确保当 Pod 请求独占使用 CPU 核心时,CPU 管理器可以在启用 SMT 的系统上强制分配完整的核心对(包括主线程和兄弟线程),从而防止工作负载以非预期方式共享 CPU 资源的情况。 这项工作是作为 SIG Node 领导的 KEP-2625: node: cpumanager: add options to reject non SMT-aligned workload 的一部分完成的。
  • 使用 matchLabelKeys 和 mismatchLabelKeys 定义 Pod 亲和性或反亲和性 (Defining Pod affinity or anti-affinity using matchLabelKeys and mismatchLabelKeys) matchLabelKeysmismatchLabelKeys 字段在 Pod 亲和性条款中可用,使用户能够精细控制 Pod 预期共存(亲和性)或不共存(反亲和性)的范围。这些新稳定的选项补充了现有的 labelSelector 机制。亲和性字段有助于增强调度,适用于灵活的滚动更新,以及基于全局配置隔离由工具或控制器管理的 Service。 这项工作是作为 SIG Scheduling 领导的 KEP-3633: Introduce MatchLabelKeys to Pod Affinity and Pod Anti Affinity 的一部分完成的。
  • 计算 Pod 拓扑分布倾斜时考虑污点和容忍度 (Considering taints and tolerations when calculating Pod topology spread skew) 此增强功能通过引入两个字段:nodeAffinityPolicynodeTaintsPolicy,改进了 PodTopologySpread。这些字段允许用户指定在计算 Pod 在节点间的分布时是否应考虑节点亲和性规则和节点污点。默认情况下,nodeAffinityPolicy 设置为 Honor,意味着只有符合 Pod 节点亲和性或选择器的节点才包含在分布计算中。nodeTaintsPolicy 默认为 Ignore,表示除非指定,否则不考虑节点污点。此增强功能提供了更精细的 Pod 放置控制,确保 Pod 被调度到满足亲和性和污点容忍度要求的节点上,从而防止 Pod 因未满足约束而保持 Pending 的情况。 这项工作是作为 SIG Scheduling 领导的 KEP-3094: Take taints/tolerations into consideration when calculating PodTopologySpread skew 的一部分完成的。
  • 卷填充器 (Volume populators) 在 v1.24 中作为 beta 发布后,卷填充器在 v1.33 中毕业到 GA。此新稳定功能提供了一种允许用户使用各种来源的数据预填充卷的方式,而不仅仅是来自 PersistentVolumeClaim (PVC) 克隆或卷快照。该机制依赖于 PersistentVolumeClaim 中的 dataSourceRef 字段。此字段比现有的 dataSource 字段提供了更大的灵活性,并允许使用自定义资源作为数据源。 一个特殊的控制器 volume-data-source-validator 与一个新稳定的自定义资源定义 (CRD) VolumePopulator API 一起验证这些数据源引用。VolumePopulator API 允许卷填充器控制器注册它们支持的数据源类型。您需要使用适当的 CRD 设置您的集群才能使用卷填充器。 这项工作是作为 SIG Storage 领导的 KEP-1495: Generic data populators 的一部分完成的。
  • 始终遵循 PersistentVolume 回收策略 (Always honor PersistentVolume reclaim policy) 此增强功能解决了 PersistentVolume (PV) 回收策略未始终遵循的问题,可能导致存储资源泄漏。具体来说,如果在其关联的 Persistent Volume Claim (PVC) 之前删除 PV,则可能不会执行“Delete”回收策略,从而使底层存储资产保持不变。为了缓解此问题,Kubernetes 现在在相关的 PV 上设置 finalizer,确保无论删除顺序如何,都强制执行回收策略。此增强功能可防止意外保留存储资源并维护 PV 生命周期管理的一致性。 这项工作是作为 SIG Storage 领导的 KEP-2644: Always Honor PersistentVolume Reclaim Policy 的一部分完成的。

Beta 版新特性

以下是 v1.33 版本后进入 beta 的一些精选改进。

  • 支持 Windows kube-proxy 中的直接服务返回 (DSR) (Support for Direct Service Return (DSR) in Windows kube-proxy) DSR 通过允许通过负载均衡器路由的返回流量绕过负载均衡器并直接响应客户端来提供性能优化;减少负载均衡器上的负载,并降低总体延迟。有关 Windows 上 DSR 的信息,请阅读 直连服务器返回 (DSR) 简介。 最初在 v1.14 中引入,对 DSR 的支持已由 SIG Windows 作为 KEP-5100: Support for Direct Service Return (DSR) and overlay networking in Windows kube-proxy 的一部分提升到 beta。
  • 结构化参数支持 (Structured parameter support) 虽然结构化参数支持在 Kubernetes v1.33 中继续作为 beta 特性,但 DRA (Dynamic Resource Allocation) 的这一核心部分已取得了显著改进。新的 v1beta2 版本简化了 resource.k8s.io API,并且具有命名空间级别集群编辑角色的普通用户现在可以使用 DRA。 kubelet 现在包括无缝升级支持,使部署为 DaemonSets 的驱动程序可以使用滚动更新机制。对于 DRA 实现,这可以防止 ResourceSlices 的删除和重新创建,允许它们在升级期间保持不变。此外,在 kubelet 注销驱动程序后,已引入了 30 秒的宽限期,为不使用滚动更新的驱动程序提供了更好的支持。 这项工作是作为 WG Device Management (一个跨功能团队,包括 SIG Node, SIG Scheduling 和 SIG Autoscaling) 领导的 KEP-4381: DRA: structured parameters 的一部分完成的。
  • 用于网络接口的动态资源分配 (DRA) (Dynamic Resource Allocation (DRA) for network interfaces) 通过 DRA 标准化报告网络接口数据的功能于 v1.32 引入,并在 v1.33 中毕业到 beta。这使得更原生的 Kubernetes 网络集成成为可能,简化了网络设备的开发和管理。这已在之前的 v1.32 发布公告博客中介绍过。 这项工作是作为 SIG Network, SIG Node 和 WG Device Management 领导的 KEP-4817: DRA: Resource Claim Status with possible standardized network interface data 的一部分完成的。
  • 当调度器 activeQ 中没有任何 Pod 时尽早处理未调度 Pod (Handle unscheduled pods early when scheduler does not have any pod on activeQ) 此功能改善了队列调度行为。在幕后,调度器通过在 activeQ 为空时从 backoffQ 中弹出因错误未退避的 Pod 来实现此目的。以前,即使 activeQ 为空,调度器也会处于空闲状态;此增强功能通过防止这种情况发生来提高调度效率。 这项工作是作为 SIG Scheduling 领导的 KEP-5142: Pop pod from backoffQ when activeQ is empty 的一部分完成的。
  • Kubernetes 调度器中的异步抢占 (Asynchronous preemption in the Kubernetes Scheduler) 抢占通过驱逐较低优先级的 Pod 来确保较高优先级的 Pod 获得所需的资源。异步抢占于 v1.32 中作为 alpha 引入,并在 v1.33 中毕业到 beta。通过此增强功能,删除 Pod 等繁重操作可以并行处理,允许调度器继续调度其他 Pod 而不会延迟。此改进在 Pod churn 或频繁调度失败率高的集群中特别有益,确保了更高效和有弹性的调度过程。 这项工作是作为 SIG Scheduling 领导的 KEP-4832: Asynchronous preemption in the scheduler 的一部分完成的。
  • ClusterTrustBundles ClusterTrustBundle 是一个集群范围的资源,旨在保存 X.509 信任锚(根证书),已在 v1.33 中毕业到 beta。此 API 使集群内证书签名者更容易向集群工作负载发布和通信 X.509 信任锚。 这项工作是作为 SIG Auth 领导的 KEP-3257: ClusterTrustBundles (previously Trust Anchor Sets) 的一部分完成的。
  • 细粒度 SupplementalGroups 控制 (Fine-grained SupplementalGroups control) 此功能于 v1.31 引入,在 v1.33 中毕业到 beta 并默认启用。前提是您的集群已启用 SupplementalGroupsPolicy feature gate,Pod 的 securityContext 中的 supplementalGroupsPolicy 字段支持两种策略:默认的 Merge 策略通过将指定组与容器镜像的 /etc/group 文件中的组合并来保持向后兼容性,而新的 Strict 策略仅适用于显式定义的组。 此增强功能有助于解决安全问题,即容器镜像中隐式组的成员身份可能导致意外的文件访问权限并绕过策略控制。 这项工作是作为 SIG Node 领导的 KEP-3619: Fine-grained SupplementalGroups control 的一部分完成的。
  • 支持将镜像挂载为卷 (Support for mounting images as volumes) 支持在 Pod 中使用 Open Container Initiative (OCI) 镜像作为卷的功能于 v1.31 引入,并已毕业到 beta。此功能允许用户在 Pod 中将镜像引用指定为卷,同时在容器内将其作为卷挂载重复使用。这开启了将卷数据单独打包,并在 Pod 中的容器之间共享的可能性,而无需将其包含在主镜像中,从而减少漏洞并简化镜像创建。 这项工作是作为 SIG Node 和 SIG Storage 领导的 KEP-4639: VolumeSource: OCI Artifact and/or Image 的一部分完成的。
  • 支持 Linux Pod 中的用户命名空间 (Support for user namespaces within Linux Pods) 截至撰写本文时,最老的开放 KEP 之一是 KEP-127,通过使用 Linux 用户命名空间改进 Pod 安全性。此 KEP 于 2016 年末首次开放,经过多次迭代,在 v1.25 中进行了 alpha 版本,在 v1.30 中进行了初始 beta 版本(默认禁用),并作为 v1.33 的一部分转移到默认启用 beta。 此支持不会影响现有 Pod,除非您手动指定 pod.spec.hostUsers 选择加入。正如 v1.30 抢先预览博客中强调的那样,这是缓解漏洞的重要里程碑。 这项工作是作为 SIG Node 领导的 KEP-127: Support User Namespaces in pods 的一部分完成的。
  • Pod procMount 选项 (Pod procMount option) procMount 选项于 v1.12 中作为 alpha 引入,并在 v1.31 中作为默认禁用 beta,在 v1.33 中转移到默认启用 beta。此增强功能通过允许用户微调对 /proc 文件系统的访问来改进 Pod 隔离。具体来说,它在 Pod securityContext 中添加了一个字段,允许您覆盖掩盖和标记某些 /proc 路径为只读的默认行为。这对于用户希望在使用用户命名空间的 Kubernetes Pod 中运行非特权容器的场景特别有用。通常,容器运行时(通过 CRI 实现)使用严格的 /proc 挂载设置启动外部容器。然而,要成功运行带有非特权 Pod 的嵌套容器,用户需要一种机制来放松这些默认设置,而此功能正提供了这一点。 这项工作是作为 SIG Node 领导的 KEP-4265: add ProcMount option 的一部分完成的。
  • CPUManager 策略将 CPU 分布到 NUMA 节点 (CPUManager policy to distribute CPUs across NUMA nodes) 此功能为 CPU 管理器添加了一个新的策略选项,将 CPU 分布到非统一内存访问 (NUMA) 节点,而不是将它们集中在单个节点上。它通过平衡多个 NUMA 节点上的工作负载来优化 CPU 资源分配,从而提高多 NUMA 系统中的性能和资源利用率。 这项工作是作为 SIG Node 领导的 KEP-2902: Add CPUManager policy option to distribute CPUs across NUMA nodes instead of packing them 的一部分完成的。
  • 容器 PreStop hook 的零秒休眠 (Zero-second sleeps for container PreStop hooks) Kubernetes 1.29 在 Pod 的 preStop 生命周期 hook 中引入了 Sleep 操作,允许容器在终止前暂停指定时长。这提供了一种简单的方法来延迟容器关闭,以便进行连接耗尽或清理操作等任务。 preStop hook 中的 Sleep 操作现在可以接受零秒时长作为 beta 特性。这允许定义一个无操作的 preStop hook,这在需要 preStop hook 但不需要延迟时非常有用。 这项工作是作为 SIG Node 领导的 KEP-3960: Introducing Sleep Action for PreStop Hook 和 KEP-4818: Allow zero value for Sleep Action of PreStop Hook 的一部分完成的。
  • 用于 Kubernetes 原生类型声明式验证的内部工具 (Internal tooling for declarative validation of Kubernetes-native types) 在幕后,Kubernetes 的内部机制开始使用一种新的机制来验证对象和对象的更改。Kubernetes v1.33 引入了 validation-gen,这是一个 Kubernetes 贡献者用于生成声明式验证规则的内部工具。总体目标是通过使开发人员能够声明式地指定验证约束来提高 API 验证的健壮性和可维护性,减少手动编码错误并确保代码库的一致性。 这项工作是作为 SIG API Machinery 领导的 KEP-5073: Declarative Validation Of Kubernetes Native Types With validation-gen 的一部分完成的。

Alpha 版新特性

以下是 v1.33 版本后进入 alpha 的一些精选改进。

  • HorizontalPodAutoscaler 的可配置容忍度 (Configurable tolerance for HorizontalPodAutoscalers) 此功能引入了 HorizontalPodAutoscaler 的可配置容忍度,可以抑制对小指标变化的伸缩反应。 这项工作是作为 SIG Autoscaling 领导的 KEP-4951: Configurable tolerance for Horizontal Pod Autoscalers 的一部分完成的。
  • 可配置的容器重启延迟 (Configurable container restart delay) 此功能于 v1.32 中作为 alpha1 引入,提供了一组 kubelet 级别的配置,用于微调 CrashLoopBackOff 的处理方式。 这项工作是作为 SIG Node 领导的 KEP-4603: Tune CrashLoopBackOff 的一部分完成的。
  • 自定义容器停止信号 (Custom container stop signals) 在 Kubernetes v1.33 之前,停止信号只能在容器镜像定义中设置(例如,通过镜像元数据中的 StopSignal 配置字段)。如果您想修改终止行为,需要构建自定义容器镜像。通过在 Kubernetes v1.33 中启用 (alpha) ContainerStopSignals feature gate,您现在可以直接在 Pod 规范中定义自定义停止信号。这在容器的 lifecycle.stopSignal 字段中定义,并且需要 Pod 的 spec.os.name 字段存在。如果未指定,容器将回退到镜像定义的停止信号(如果存在),或容器运行时默认值(通常为 Linux 的 SIGTERM)。 这项工作是作为 SIG Node 领导的 KEP-4960: Container Stop Signals 的一部分完成的。
  • DRA 增强功能 galore! (DRA enhancements galore!) Kubernetes v1.33 继续开发动态资源分配 (DRA),其功能专为当今复杂的 инфраструк 而设计。DRA 是一个用于在 Pod 和 Pod 内容器之间请求和共享资源的 API。这些资源通常是设备,例如 GPU、FPGA 和网络适配器。 以下是 v1.33 中引入的所有 alpha DRA feature gates:
    • • 类似于节点污点,通过启用 DRADeviceTaints feature gate,设备支持污点和容忍度。管理员或控制平面组件可以对设备设置污点以限制其使用。依赖这些设备的 Pod 的调度可能会在污点存在时暂停,并且/或者使用带污点设备的 Pod 可能会被驱逐。这项工作是作为 KEP-5055: DRA: device taints and tolerations 的一部分完成的。
    • • 通过启用 feature gate DRAPrioritizedList,DeviceRequests 获得一个名为 firstAvailable 的新字段。此字段是一个有序列表,允许用户指定请求可以通过不同方式满足,包括如果某些特定硬件不可用时根本不分配。这项工作是作为 KEP-4816: DRA: Prioritized Alternatives in Device Requests 的一部分完成的。
    • • 启用 feature gate DRAAdminAccess 后,只有被授权在标记有 resource.k8s.io/admin-access: "true" 的命名空间中创建 ResourceClaim 或 ResourceClaimTemplate 对象的非管理员用户才能使用 adminAccess 字段。这确保非管理员用户不能滥用 adminAccess 功能。这项工作是作为 KEP-5018: DRA: DRA: AdminAccess for ResourceClaims and ResourceClaimTemplates 的一部分完成的。
    • • 虽然自 v1.31 以来就可以使用设备分区,但供应商必须预先分区设备并相应地通告。通过在 v1.33 中启用 DRAPartitionableDevices feature gate,设备供应商可以通告多个分区,包括重叠的分区。Kubernetes 调度器将根据工作负载请求选择分区,并阻止同时分配冲突的分区。此功能使供应商能够在分配时动态创建分区。分配和动态分区是自动且对用户透明的,从而提高了资源利用率。这项工作是作为 KEP-4815: DRA: Add support for partitionable devices 的一部分完成的。 这些 feature gates 只有在您也启用了 DynamicResourceAllocation feature gate 时才会生效。 所有这些 DRA 工作都由 SIG Node, SIG Scheduling 和 SIG Auth 领导。
  • 健壮的镜像拉取策略,用于验证 IfNotPresent 和 Never 的镜像 (Robust image pull policy to authenticate images for IfNotPresent and Never) 此功能允许用户确保 kubelet 对每组新的凭据都需要进行镜像拉取认证检查,无论镜像是否已存在于节点上。 这项工作是作为 SIG Auth 领导的 KEP-2535: Ensure secret pulled images 的一部分完成的。
  • 节点拓扑标签通过 downward API 提供 (Node topology labels are available via downward API) 此功能使得节点拓扑标签可以通过 downward API 暴露。在 Kubernetes v1.33 之前,一个变通方法是使用 init 容器查询 Kubernetes API 以获取底层节点信息;此 alpha 功能简化了工作负载访问节点拓扑信息的方式。 这项工作是作为 SIG Node 领导的 KEP-4742: Expose Node labels via downward API 的一部分完成的。
  • 通过 generation 和 observed generation 提供更好的 Pod 状态 (Better pod status with generation and observed generation) 在此更改之前,pod 的 metadata.generation 字段未使用。除了扩展以支持 metadata.generation 外,此功能还将引入 status.observedGeneration 以提供更清晰的 pod 状态。 这项工作是作为 SIG Node 领导的 KEP-5067: Pod Generation 的一部分完成的。
  • 支持 kubelet 的 CPU 管理器中的拆分 L3 缓存架构 (Support for split level 3 cache architecture with kubelet’s CPU Manager) 之前的 kubelet 的 CPU 管理器不知道拆分 L3 缓存架构(也称为末级缓存,即 LLC),并且可能会在不考虑拆分 L3 缓存的情况下分配 CPU,导致“吵闹的邻居”问题。此 alpha 功能改进了 CPU 管理器,以更好地分配 CPU 核心,从而提高性能。 这项工作是作为 SIG Node 领导的 KEP-5109: Split L3 Cache Topology Awareness in CPU Manager 的一部分完成的。
  • PSI (Pressure Stall Information) 指标用于改进调度 (PSI (Pressure Stall Information) metrics for scheduling improvements) 此功能增加了在 Linux 节点上使用 cgroupv2 提供 PSI 统计信息和指标的支持。它可以检测资源短缺,并为节点提供更细粒度的 Pod 调度控制。 这项工作是作为 SIG Node 领导的 KEP-4205: Support PSI based on cgroupv2 的一部分完成的。
  • 使用 kubelet 进行无 Secret 的镜像拉取 (Secret-less image pulls with kubelet) kubelet 的 on-disk 凭证提供程序现在支持可选的 Kubernetes ServiceAccount (SA) token 获取。通过允许云提供商更好地与 OIDC 兼容的身份解决方案集成,这简化了与镜像仓库的认证。 这项工作是作为 SIG Auth 领导的 KEP-4412: Projected service account tokens for Kubelet image credential providers 的一部分完成的。

项目速度

CNCF K8s DevStats 项目汇总了与 Kubernetes 及各个子项目速度相关的几个有趣的数据点。这包括从个人贡献到贡献公司的数量,并说明了投入到这个生态系统发展中的努力的深度和广度。

在 v1.33 发布周期(从 2025 年 1 月 13 日持续到 4 月 23 日,共 15 周)期间,Kubernetes 收到了来自多达 121 家不同公司和 570 位个人(截至撰写本文时,发布日期前几周)的贡献。在更广泛的云原生生态系统中,公司数量增加到 435 家,总贡献者数量达到 2400 人。您可以在 此仪表板 中找到数据来源。与之前版本 v1.32 的速度数据相比,我们看到公司和个人的贡献水平相似,表明社区兴趣和参与度很高。

请注意,“贡献”计算包括提交代码、代码审查、评论、创建 issue 或 PR、审查 PR(包括博客和文档)或对 issue 和 PR 发表评论。如果您有兴趣贡献,请访问我们贡献者网站的 开始入门 部分。

访问 DevStats 了解更多关于 Kubernetes 项目和社区整体速度的信息。

活动更新

探索即将举行的 Kubernetes 和云原生活动,包括 KubeCon + CloudNativeCon、KCD 以及世界各地其他值得关注的会议。随时了解 Kubernetes 社区的最新动态并参与其中!

2025 年 5 月

  • • KCD - Kubernetes 社区日:哥斯达黎加:2025 年 5 月 3 日 | 哥斯达黎加埃雷迪亚
  • • KCD - Kubernetes 社区日:赫尔辛基:2025 年 5 月 6 日 | 芬兰赫尔辛基
  • • KCD - Kubernetes 社区日:德克萨斯州奥斯汀:2025 年 5 月 15 日 | 美国奥斯汀
  • • KCD - Kubernetes 社区日:首尔:2025 年 5 月 22 日 | 韩国首尔
  • • KCD - Kubernetes 社区日:土耳其伊斯坦布尔:2025 年 5 月 23 日 | 土耳其伊斯坦布尔
  • • KCD - Kubernetes 社区日:旧金山湾区:2025 年 5 月 28 日 | 美国旧金山

2025 年 6 月

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

2025 年 7 月

  • • KCD - Kubernetes 社区日:乌得勒支:2025 年 7 月 4 日 | 荷兰乌得勒支
  • • KCD - Kubernetes 社区日:台北:2025 年 7 月 5 日 | 台湾台北
  • • KCD - Kubernetes 社区日:秘鲁利马:2025 年 7 月 19 日 | 秘鲁利马

2025 年 8 月

  • • KubeCon + CloudNativeCon 印度 2025:2025 年 8 月 6-7 日 | 印度海得拉巴
  • • KCD - Kubernetes 社区日:哥伦比亚:2025 年 8 月 29 日 | 哥伦比亚波哥大

文章最后

好了,以上就是本次更新的所有内容,记得关注点赞希里安哦!欢迎交流!

再分享下一句话: “山高万仞,只登一步!

「我们不需要在AI浪潮里当游泳冠军,只需要学会在信息洪流中换气」

如果本文有帮到你,请点个“一键三连”支持!顺手给希里安点个关注 ,如果有任何技术问题,都可以私信cilliverse进行咨询。

更多实用AI干货,记得点赞收藏加关注:希里安

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 希里安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 近日见闻
  • 希里安开源项目 CILIKUBE 预告!
  • Kubernetes v1.33 发布公告重点内容总结
  • 原文翻译
  • 文章最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档