深度解读 v1.34 版本的核心特性与价值
北京时间 2025年8月27日,Kubernetes正式发布了 v1.34 版本,代号"风与意志"(Of Wind & Will,O' WaW)。这是2025年的第二个大版本更新,包含了58项功能改进,其中23项升级为稳定版、22项进入测试版、13项进入Alpha阶段。
值得一提的是,这个版本没有引入任何破坏性变更,降低了用户升级的顾虑。
主题寓意:风与意志
这个版本的主题"风与意志"蕴含着深刻的寓意。"风"代表着不可控的外部因素,如工具状态、文档和历史遗留问题;而"意志"则体现了 Kubernetes 社区成员的决心和努力,他们不断调整方向、掌舵前行,使 Kubernetes 能够持续发展。

正是这种社区的力量推动着 Kubernetes 不断前进,无论"风"如何变化。
核心稳定功能解读
动态资源分配(DRA)正式GA
动态资源分配(DRA)是v1.34版本最值得关注的稳定功能之一,它提供了更灵活的方式来选择、分配、共享和配置GPU、TPU、NIC等设备。
DRA核心思想借鉴了存储卷动态配置的思路,引入了一组新的API资源:ResourceClaim、DeviceClass、ResourceClaimTemplate和ResourceSlice,全部位于resource.k8s.io
API组中。
这意味着管理员可以定义设备"类别",而用户可以直接在Pod规约中使用新的resourceClaims
字段请求设备。Kubernetes会自动匹配这些声明与可用设备,使用CEL表达式进行灵活过滤,并确保Pod被调度到可访问所分配设备的节点上。
yaml
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 自身身份而非节点级别凭据进行授权。
yaml
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级资源规格。
yaml
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
即可启用此行为。
yaml
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格式输出。
bash
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令牌用于镜像拉取则显著提高了安全性。
对于考虑升级的用户,需要注意的是:此版本没有引入任何破坏性变更,没有弃用或移除任何功能,这降低了升级的风险。然而,在生产环境升级前,仍然建议:
- 在测试环境中充分验证现有工作负载的兼容性
- 关注特性门控的变化,特别是默认启用的新功能
- 查看API迁移指南,确保没有使用已废弃的API
- 备份关键组件和数据,以防出现意外问题
Kubernetes v1.34的发布再次展示了社区的力量和决心,正如版本代号所寓意的那样------无论"风"如何变化,社区的"意志"始终推动着项目向前发展。
KubeSphere 与 Kubernetes v1.34
作为一款以 Kubernetes 为内核的容器混合云平台,KubeSphere 始终紧跟上游 Kubernetes 社区的创新步伐。面对 Kubernetes v1.34 的正式发布,KubeSphere 团队已第一时间启动兼容性测试与功能评估工作。我们将在后续版本中尽快支持 v1.34 。我们相信,化繁为简是帮助企业真正落地云原生的关键。未来,KubeSphere 将持续打磨用户体验,让每一位用户都能轻松驾驭 Kubernetes 的最新特性,加速业务创新。