CCE发布Kubernetes 1.34版本说明
更新时间:2026-03-23
百度智能云容器引擎CCE严格遵循社区一致性认证, 本文介绍 CCE 发布 Kubernetes 1.34 版本相对 1.32 所做重要变更说明。
组件版本说明
下表为 CCE 集群核心组件版本的支持情况。
| 核心组件 | 版本号 |
|---|---|
| Kubernetes | 1.34.2-baidu.1 |
| etcd | v3.5.25 |
| containerd | 2.1.5 |
| CoreDNS | 1.20.6 |
| CSI | CCE CSI CDS Plugin:1.4.13 |
| CCE CSI PFS L2 Plugin:1.1.3 | |
| CCE CSI BOS Plugin:1.5.5 | |
| CCE CSI BOS2 Plugin:1.0.0 | |
| CNI | agent:2.13.5 |
| operator:2.13.5 |
功能特性
在 Kubernetes 1.34 版本
- PodLevelResources进阶至Beta。与传统的容器级资源定义不同,该特性允许在 Pod 级别设置总的资源请求与限制,以确保 Pod 内所有容器的资源消耗不会超过 Pod 自身限制。详情请参见Pod Level Resource Specifications。
- kubectl 默认支持通过 .kuberc 文件定义用户偏好设置。与包含认证凭证的 kubeconfig 不同,该文件专门用于存放非敏感的客户端配置。详情请参见Introduce kuberc。
- ExternalServiceAccountTokenSigner进阶至Beta。该特性引入一个外部签名的ExternalJWTSigner gRPC服务,通过外部密钥管理解决方案来为ServiceAccount令牌签名,从而代替本地静态密钥签名方式。
- SchedulerAsyncAPICalls进阶至Beta,默认启用kube-scheduler异步调用API功能。此特性旨在解决 kube-scheduler 在调度周期中因阻塞式 API 调用而产生的性能瓶颈。通过将这些调用改为异步处理,可有效降低调度延迟,防止调度器线程因 API 响应缓慢而被阻塞,并为不可调度 Pod 提供更快的重试机会。详情请参见Asynchronous API calls during scheduling。
- WindowsGracefulNodeShutdown进阶至Beta,支持Windows节点优雅关闭。
- PreferSameTrafficDistribution进阶至Beta。允许通过设置 Service 的 .spec.trafficDistribution 字段为 PreferSameZone 或 PreferSameNode,来优先将流量路由至同一可用区或同一节点内的端点。相应的,原有的 PreferClose 选项已被废弃。详情请参见Traffic Distribution。
- kubeletPSI进阶至Beta,允许kubelet在Summary API 和 Prometheus 指标中使用Pressure Stall Information (PSI) 指标。详情请参见PSI Metrics for Kubernetes Graduates to Beta。
- CPU管理器的静态策略支持prefer-align-cpus-by-uncorecache,优化运行在具有分离的非核心缓存架构处理器上的工作负载性能。详情请参见Introducing CPU Manager Static Policy Option for Uncore Cache Alignment。
在 Kubernetes 1.33 版本
- Sidecar Containers进阶至GA,默认启用。Sidecar Container作为一种特殊的Init Container,可通过restartPolicy: Always确保其在Pod生命周期中始终运行,支持探针配置。
- OrderedNamespaceDeletion进阶至 Beta。该特性优化了命名空间资源释放流程:删除命名空间时,将优先删除工作负载Pod,随后依次清理NetworkPolicy、存储资源等依赖项,避免关键安全资源移除后Pod仍旧残留的风险。
- SupplementalGroupsPolicy进阶至Beta,默认启用,支持通过.spec.securityContext.supplementalGroupsPolicy字段为Pod配置细粒度的SupplementalGroups控制,以实现对存储卷访问权限更精细化的控制。详情请参见Configure fine-grained SupplementalGroups control for a Pod。
- MultiCIDRServiceAllocator进阶至GA,默认启用,引入ServiceCIDR和IPAddress资源来记录Service的ClusterIP分配情况,支持通过ServiceCIDR来动态增加ClusterIP的可分配范围。
- JobBackoffLimitPerIndex进阶至GA,允许为索引作业中的每个索引指定Pod的最大重试次数。
- JobSuccessPolicy进阶至GA,允许自定义Job的成功策略,例如通过指定某些索引是否成功和成功的索引数量来判断Job是否完成,请参见Job's SuccessPolicy Goes GA。
- ImageVolume进阶至Beta,默认启用,允许在Pod中使用image卷源,将容器镜像作为只读卷挂载到Pod中。
- UserNamespacesSupport进阶至Beta,默认启用,允许Pod使用Linux用户命名空间(User Namespaces)以增强容器安全性。该能力不影响现有Pod。如需使用,可手动指定pod.spec.hostUsers。详情请参见User Namespaces enabled by default。
- RelaxedDNSSearchValidation进阶为Beta,默认启用,允许在 Pod 的 .spec.dnsConfig.searches 字段中使用特殊字符,例如.、_,提升DNS配置灵活性。
- kube-apiserver默认禁用WatchList机制,转而采用流式编码机制(包括StreamingCollectionEncodingToJSON和StreamingCollectionEncodingToProtobuf)。该改进通过流式处理大规模资源列表请求,优化了List操作的性能表现。对于包含大量资源的List请求,可有效降低内存占用并提升系统稳定性,请参见Streaming List responses。kube-controller-manager不再主动启用WatchListClient特性。
-
CPUManagerPolicyOptions进阶至GA,默认启用,允许微调CPU Manager的资源分配策略:
- Pod需独占CPU时,强制进行SMT对齐,确保分配的 CPU 独占完整的物理核心,请参见cpu manager extension to reject non SMT-aligned workload。
- CPU需跨NUMA节点分配资源时,可确保CPU资源在NUMA节点间均匀分布,请参见Add CPUManager policy option to distribute CPUs across NUMA nodes instead of packing them。
- MatchLabelKeysInPodAffinity进阶至GA,默认启用,在Pod亲和性规则中增加了matchLabelKeys 和 mismatchLabelKeys,更精准地控制Pod的共存范围。
-
NodeInclusionPolicyInPodTopologySpread进阶至于GA,默认启用,允许在Pod拓扑分布约束使用nodeAffinityPolicy和nodeTaintsPolicy动态筛选可调度节点。
- nodeAffinityPolicy:默认为Honor,仅将匹配 Pod 的 nodeSelector 或 nodeAffinity的节点纳入拓扑分布计算。
- nodeTaintsPolicy:默认为Ignore,忽略 nodeAffinity 和 nodeSelector 规则,将所有节点纳入拓扑分布计算。
- HonorPVReclaimPolicy 进阶至GA,默认启用,用于确保当PV的reclaimPolicy设置为Delete时,无论 PV 或 PVC 的删除顺序如何,都会严格按照策略删除底层存储资源,避免存储资源泄露。
- ProcMountType进阶至Beta,允许通过 Pod 的securityContext.procMount字段自定义容器中 /proc 文件系统的挂载类型,以精细化控制/proc文件系统的访问,提升Pod安全性和隔离性。此功能适用于需要在用户命名空间(User Namespaces)中运行非特权容器的场景,通过放宽对/proc 的限制,可增强兼容性与灵活性。
- PodLifecycleSleepActionAllowZero进阶至Beta,允许在容器生命周期回调preStop中设置sleep操作的等待时间为0。
- 允许使用ResourceQuota限制特定Volume Attributes Class关联的PVC数量。
-
调度器性能优化:
- 新增SchedulerPopFromBackoffQ特性,默认启用,通过优化调度队列的处理逻辑,允许activeQ为空时,直接从backoffQ中弹出Pod,显著减少Pod的调度延迟。
- SchedulerAsyncPreemption进阶至Beta,默认启用,允许将抢占调度转换为异步执行。抢占行为开销较大,转为异步后可以有效降低调度延迟。
- 优化使用拓扑分布约束的Pod的调度性能。
功能变更
在 Kubernetes 1.34 版本
- 动态资源分配Dynamic Resource Allocation(DRA)的核心功能进阶至GA,默认启用。基于DRA,工作负载可以通过指定所需的设备属性来请求资源。调度器负责完成实际的设备分配,并将 Pod 放置在可以访问所分配设备的节点上。随后,由设备驱动程序和 kubelet 负责完成设备配置以及 Pod 访问设备的权限授予。还有部分DRA相关特性进阶至Beta,默认启用。这包括:支持管理员使用有限权限访问他人已在使用的设备以进行监控和诊断;支持在请求时配置一个可选的、满足需求的设备分配方案列表;以及 kubelet 会监控并上报节点上 Pod 已分配的 DRA 资源情况。
- kubelet支持使用短期凭证向容器镜像仓库进行身份验证,避免使用长期凭证的潜在风险,提高安全性。详情请参见Service Account Token Integration for Image Pulls Graduates to Beta。
- Job 的 Pod 替换策略进阶至GA,旨在优化 Pod 的替换时机。默认情况下,替换 Pod 在旧 Pod 开始终止时便会立即创建,可能导致资源冲突。通过配置 .spec.podReplacementPolicy 字段,可以将替换行为延迟至旧 Pod 完全终止之后,从而避免因资源竞争或不必要的节点扩容而产生问题。
- RecoverVolumeExpansionFailure进阶至GA。当因在 PVC 中请求的卷扩展容量过大而导致失败时,允许通过调小 PVC 的容量请求来实现恢复。
- Volume Attributes Classes进阶至GA,默认启用。允许将卷的通用参数定义在 VolumeAttributesClass 对象中。PVC 只需引用该对象即可应用这些参数。
- 当Static Pod 所引用的 Secret、ConfigMap、PVC 或 ServiceAccount 等 API 对象不存在时,kubelet 会拒绝启动其容器,防止 Pod 因缺少必要依赖而进入不确定的运行状态。
-
优化kube-apiserver的稳定性和性能:
- 从缓存完成读请求,减少透传etcd,降低kube-apiserver内存压力。1.31支持一致性读请求Consistent Reads from Cache,1.34支持快照缓存历史版本数据Snapshottable API server cache。
- 针对 LIST 请求,支持以流式方式返回数据,使得服务端在处理请求时仅需占用恒定的较小内存,有效避免了因客户端拉取大量数据而导致的服务端内存激增问题。详情请参见Streaming Encoding for LIST Responses。
在 Kubernetes 1.33 版本
- 原地调整Pod资源进阶至Beta,默认启用。该功能允许在不重启Pod的前提下动态修改容器的 CPU和内存资源配置。
- kubectl支持通过--subresources命令对资源的特定子资源进行调整,例如通过kubectl edit pod
--subresource resize动态调整Pod资源大小。1.33版本支持的Subresource包括status、 scale和resize。 - EndpointSlice TopologyAwareHints进阶至GA。Beta版的Annotation service.kubernetes.io/topology-mode已弃用。建议使用spec.trafficDistribution字段定义拓扑策略。例如,通过配置trafficDistribution为PreferClose,可将流量优先路由至与客户端位于同一Zone的端点。详情请参见Traffic distribution。
- Pod的.status.resize字段已废弃且不支持设置,新增两个Condition字段 PodResizeInProgress 和 PodResizePending。
- DisableNodeKubeProxyVersion默认启用,且不允许禁用。kubelet不会再设置节点的status.kubeProxyVersion字段。
- StatefulSets的.spec.serviceName字段变为可选,强化了对其字段合法性的校验,必须符合DNS1123标准校验。如果存量StatefulSet的.spec.serviceName字段未通过校验,将无法创建新的Pod,需手动移除该字段。此更新将原本在Pod创建阶段进行的DNS校验前置到StatefulSet资源配置阶段,减少StatefulSet Controller的失败重试。
- Git-Repo卷插件默认禁用。如需保留,可手动开启GitRepoVolumeDriver特性门控。
弃用 API
在 Kubernetes 1.33 版本
- v1版本的Endpoints API正式废弃,推荐使用EndpointsSlice API代替。EndpointSlice API自1.21起已进入稳定状态,引入了双栈网络支持等特性。但v1版本的Endpoints API目前不会删除。详情请参见Continuing the transition from Endpoints to EndpointSlices。
- apidiscovery.k8s.io/v2beta1 API组禁用,该 API 用于客户端查询集群中所有已注册的 API 资源信息。建议迁移至v2稳定版本。旧版客户端可通过回退机制自动使用未聚合的 v1 版本 API 实现服务发现功能,客户端不会立即报错。但若客户端未适配 v2 版本,未聚合的数据需要多次调用 API 来获取完整信息,可能出现请求量增加和延迟上升。
参考链接
关于 Kubernetes 1.34 与其他版本详细对比可参考:
评价此篇文章
