Kubernetes v1.34 重磅发布:调度更快,安全更强,AI 资源管理全面进化

 互联网   2025-09-01 15:02   15 人阅读  0 条评论

北京时间 2025 年 8 月 27 日,Kubernetes 正式发布了 v1.34 版本,代号"风与意志"(Of Wind & Will,O' WaW)。这是 2025 年的第二个大版本更新,包含了 58 项功能改进,其中 23 项升级为稳定版、22 项进入测试版、13 项进入 Alpha 阶段。

值得一提的是,这个版本没有引入任何破坏性变更,降低了用户升级的顾虑。

主题寓意:风与意志

这个版本的主题"风与意志"蕴含着深刻的寓意。"风"代表着不可控的外部因素,如工具状态、文档和历史遗留问题;而"意志"则体现了 Kubernetes 社区成员的决心和努力,他们不断调整方向、掌舵前行,使 Kubernetes 能够持续发展。


Kubernetes v1.34 重磅发布:调度更快,安全更强,AI 资源管理全面进化  第1张


正是这种社区的力量推动着 Kubernetes 不断前进,无论"风"如何变化。

核心稳定功能解读

动态资源分配(DRA)正式 GA

动态资源分配(DRA)是 v1.34 版本最值得关注的稳定功能之一,它提供了更灵活的方式来选择、分配、共享和配置 GPU、TPU、NIC 等设备。

DRA 核心思想借鉴了存储卷动态配置的思路,引入了一组新的 API 资源:ResourceClaim、DeviceClass、ResourceClaimTemplate 和 ResourceSlice,全部位于resource.k8s.io API 组中。

这意味着管理员可以定义设备"类别",而用户可以直接在 Pod 规约中使用新的resourceClaims字段请求设备。Kubernetes 会自动匹配这些声明与可用设备,使用 CEL 表达式进行灵活过滤,并确保 Pod 被调度到可访问所分配设备的节点上。

apiVersion: resource.k8s.io/v1beta1
kind:DeviceClass
metadata:
name:gpu.example.com
spec:
extendedResourceName:example.com/gpu
---
apiVersion:v1
kind:ResourceQuota
metadata:
name:gpu-quota
spec:
hard:
    requests.example.com/gpu:10
    gpu.example.com.deviceclass.resource.k8s.io/devices:10

对于 AI/ML 工作负载、HPC 环境和边缘计算场景,DRA 的 GA 意味着更精确的资源管理能力,特别适合需要特殊硬件(如 GPU、FPGA 和高性能 NIC)的工作负载。

使用 ServiceAccount 令牌进行镜像拉取认证(Beta)

v1.34 版本中,kubelet 使用 ServiceAccount 令牌进行镜像拉取认证的功能进入 Beta 阶段并默认启用,这显著提高了容器镜像拉取的安全性。

传统上,kubelet 凭据提供者依赖于存储在节点或集群中的长期 Secret,这些凭证不与特定工作负载关联且不会自动轮换。新功能允许 kubelet 请求短期、绑定受众的 ServiceAccount 令牌来向容器注册表进行身份验证,使得镜像拉取基于 Pod 自身身份而非节点级别凭据进行授权。

apiVersion: v1
kind:ServiceAccount
metadata:
name:my-service-account
namespace:default
---
apiVersion:v1
kind:Pod
metadata:
name:private-registry-pod
namespace:default
spec:
serviceAccountName:my-service-account
containers:
-name:private-app
    image:privateregistry.example.com/myapp:latest

主要优势是安全性大幅提升,消除了对长期 Secret 的需求,减少了攻击面,同时为开发者和管理员简化了凭证管理。

生产级追踪功能稳定

v1.34 版本中,kubelet 和 API 服务器的生产级追踪功能达到稳定状态,使用 OpenTelemetry 标准为关键操作提供了深度可观测性。

kubelet 现在追踪其对容器运行时接口(CRI)的 gRPC 调用,在每次调用时传递追踪 ID,使操作员能够关联容器生命周期中的日志。API 服务器也发出追踪数据,实现了从控制平面操作到节点操作的端到端可观测性。

这一功能解决了通过日志关联进行节点级调试的长期难题,使运维人员能够可视化整个事件生命周期(如 Pod 启动)以定位延迟或错误来源。

调度与资源管理增强

Pod 级别资源请求和限制(Beta)

v1.34 版本引入了 Pod 级别资源请求和限制的支持,已进入 Beta 阶段。此前,多容器 Pod 只能对每个容器单独设置资源请求和限制,导致开发者要么资源配置过度,要么需要复杂分配,难以高效利用资源。

新功能允许在 Pod 级别指定资源请求和限制,开发者可以为整个 Pod 设定资源预算,容器共享这些资源。Horizontal Pod Autoscaler(HPA)现在也支持 Pod 级资源规格。

apiVersion: v1
kind:Pod
metadata:
name:multi-container-pod
spec:
containers:
-name:container1
    image:image1:latest
-name:container2
    image:image2:latest
resources:
    requests:
      memory:"128Mi"
      cpu:"500m"
    limits:
      memory:"256Mi"
      cpu:"1"

这带来了更直观的多容器 Pod 资源管理方式,确保所有容器资源总和不超过 Pod 限额,有助于更合理调度和集群资源利用。

异步调度器 API 调用(Beta)

通过SchedulerAsyncAPICalls特性门控启用,此功能允许调度器异步执行 API 交互,提高了调度吞吐量和响应速度。

传统上,Kubernetes 调度器可能因阻塞的 API 调用(如更新 Pod 状态或绑定决策)而导致性能下降,在继续进行下一个调度决策前必须等待这些调用完成。这创造了调度瓶颈并引入延迟,进而影响到下游的可观测性系统。

异步 API 调用意味着更快的调度,Pod 状态转换将更快地反映在与 Pod 生命周期事件相关的指标、日志和警报中。

NominatedNodeName 用于 Pod 分配(Alpha)

此功能为调度过程提供了更早的可见性,调度器会为更多 Pod 设置nominatedNodeName字段,而不仅仅是那些待抢占的 Pod,在调度过程的早期暴露它们的预期节点。

nominatedNodeName字段指示调度器为 Pod 保留哪个节点,团队可以将此元数据用于预测性调度仪表板或预调度警报逻辑,以及增强的工作负载跟踪和容量预测。在资源受限或存在污点的环境中,这一可见性尤其有价值。

安全性与运维改进

结构化认证配置稳定

v1.29 中引入的 AuthenticationConfiguration 配置文件格式现已稳定,它替代了过去大量命令行选项,支持多 JWT 认证器、CEL 表达式校验和动态重载。

此配置显著提升了认证管理和审计能力,为集群管理员提供了更灵活、强大的身份验证配置方式。

基于选择器的细粒度授权稳定

授权器(包括 Webhook 和内置节点授权器)现在支持基于请求中的字段选择器和标签选择器做决策。例如,可以限制某策略只允许列出绑定到特定.spec.nodeName的 Pod,客户端必须传入对应的字段选择器,否则拒绝访问。

这一功能提升了多租户和节点隔离场景下的权限细化管理能力。

精细控制匿名请求

v1.34 版本不再简单启用或禁用匿名访问,而是允许配置允许匿名访问的特定端点列表,如 /healthz、/readyz、/livez 等。

这一改进防止了因 RBAC 配置错误导致匿名用户权限过大的问题,同时无需修改外部探针或启动工具。

工作负载管理增强

Job 替换策略稳定

Job 控制器默认在 Pod 终止时立即创建替换 Pod,导致旧 Pod 和新 Pod 同时运行,可能引发资源竞争和不必要的自动扩缩。某些机器学习框架(如 TensorFlow、JAX)要求同一索引只有一个 Pod 同时运行。

新增的.spec.podReplacementPolicy字段支持只在 Pod 完全终止(.status.phase为 Failed)后再创建替换 Pod。设置.spec.podReplacementPolicy: Failed即可启用此行为。

apiVersion: batch/v1
kind:Job
metadata:
name:my-job
spec:
podReplacementPolicy:Failed
template:
    spec:
      containers:
      -name:example
        image:example-image:latest
      restartPolicy:Never

此特性自 v1.28 进入 alpha 阶段,现已于 v1.34 稳定发布。

Deployment 的 Pod 替换策略(Alpha)

Deployment 也引入了类似的 Pod 替换策略,通过.spec.podReplacementPolicy字段提供两种策略选择:

  • TerminationStarted:一旦旧 Pod 开始终止,立即创建新 Pod,带来更快的上线速度,但资源消耗可能更高
  • TerminationComplete:等待旧 Pod 完全终止后才创建新 Pod,上线速度较慢,但资源消耗控制更好

这一特性在资源受限的集群或终止时间较长的工作负载中尤为有用。

容器停止信号(Alpha)

在 Kubernetes 中,区分容器关闭的不同原因(如优雅退出与强制终止)传统上很困难,因为STOPSIGNAL是在容器镜像或运行时中配置的,在 Pod 规约中不可见。

新的容器停止信号功能在 Pod 的状态中呈现终止信号,使其对操作者可见。这使得终止意图更加明确,改善了生命周期可观测性、警报准确性,以及调试容器退出的能力,而不仅仅依赖于日志。

此外,此功能允许开发人员直接在 Pod 规范中配置自定义停止信号,而不是受限于镜像默认值,对关闭语义提供了更大的控制。

存储与网络改进

卷扩容失败后可恢复

此功能现已稳定,允许用户取消存储提供商不支持的卷扩容,改用较小值重试,提升了卷扩容成功率。该特性自 v1.23 进入 alpha 阶段,现已于 v1.34 稳定发布。

VolumeAttributesClass 支持卷参数修改

VolumeAttributesClass 现已稳定,提供 Kubernetes 原生 API 修改卷参数(如 IO 性能),支持在线垂直扩展卷,前提是供应商支持。此 API 通过 CSI 接口实现,需要对应 CSI 驱动支持 ModifyVolume 接口。

Windows kube-proxy 支持 Direct Service Return(DSR

DSR 功能现已稳定,它通过绕过负载均衡器直接响应客户端,减少负载,降低延迟。此功能自 v1.14 引入,现已于 v1.34 稳定发布。

开发者体验提升

KYAML 支持(Alpha)

KYAML 是一个更安全、更少歧义的 YAML 子集,专为 Kubernetes 设计。从 v1.34 开始,kubectl 支持将 KYAML 作为输出格式。

KYAML 解决了 YAML 空白符敏感和字符串引用可选带来的类型转换问题(如著名的"挪威 bug"),同时克服了 JSON 无注释和严格逗号需求的缺点。

所有 KYAML 文件也是有效的 YAML,可以作为 kubectl 输入。在 kubectl v1.34 中,可以通过设置环境变量KUBECTL_KYAML=true来请求 KYAML 格式输出。

kubectl get svc example-service -o kyaml

KYAML 的输出格式更加规范,所有值字符串始终使用英文双引号,键不加英文引号(除非可能产生歧义),所有映射使用{}表示,所有列表使用[]表示。

kubectl 用户偏好配置文件.kuberc(Beta)

.kuberc文件允许定义 kubectl 的默认选项和命令别名,不包含集群信息和凭据。此功能在 v1.33 作为 Alpha 引入,v1.34 升级为 Beta 并默认启用。

总结与升级建议

Kubernetes v1.34 "风与意志" 版本带来了大量增强功能,特别是在资源管理、调度性能、安全性和可观测性方面。动态资源分配(DRA)的稳定为 AI/ML 和高性能计算工作负载提供了更好的硬件支持,而 ServiceAccount 令牌用于镜像拉取则显著提高了安全性。

对于考虑升级的用户,需要注意的是:此版本没有引入任何破坏性变更,这降低了升级的风险。然而,在生产环境升级前,仍然建议:

  1. 在测试环境中充分验证现有工作负载的兼容性
  2. 关注特性门控的变化,特别是默认启用的新功能
  3. 查看 API 迁移指南,确保没有使用已废弃的 API
  4. 备份关键组件和数据,以防出现意外问题

Kubernetes v1.34 的发布再次展示了社区的力量和决心,正如版本代号所寓意的那样——无论"风"如何变化,社区的"意志"始终推动着项目向前发展。


(版权归原作者所有,侵删)


免责声明:本文内容来源于网络,所载内容仅供参考。转载仅为学习和交流之目的,如无意中侵犯您的合法权益,请及时联系Docker中文社区!


本文地址:https://kubernetes.top/?id=429
温馨提示:文章内容系作者个人观点,不代表Docker中文对观点赞同或支持。
版权声明:本文为转载文章,来源于 互联网 ,版权归原作者所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

 发表评论


表情

还没有留言,还不快点抢沙发?