Kubernetes 1.34版本说明
CCE Autopilot严格遵循社区一致性认证,现已支持Kubernetes 1.34集群版本特性。本文介绍Kubernetes 1.34版本的变更说明。
新增特性及特性增强
Kubernetes 1.34版本
- RecoverVolumeExpansionFailure (GA)
在Kubernetes 1.34中,RecoverVolumeExpansionFailure进阶至GA。您可以减少PVC请求的大小,只要之前请求的扩展还未完成,就可以修改所请求的大小。Kubernetes会自动进行修正。详细使用方式请参考卷扩容失败恢复。
- JobPodReplacementPolicy(GA)
在Kubernetes 1.34中,JobPodReplacementPolicy进阶至GA。此功能在Jobs中引入了.spec.podReplacementPolicy。您可以选择仅在Pod完全终止(.status.phase: Failed)时创建替代Pod。详细使用方式请参考允许在完全终止时替换作业中的Pod。
- Resilient watch cache initialization(GA)
在Kubernetes 1.34中,Watch cache的初始化过程变得更加抗故障,提高了控制平面的鲁棒性,并确保控制器和客户端能够可靠地建立观察。详细介绍请参考弹性监视缓存初始化。
- Relaxing DNS search path validation(GA)
在Kubernetes 1.34中,Relaxing DNS search path validation进阶至GA。过去Kubernetes在dnsConfig.searches(DNS搜索域列表)中根据RFC-1123验证搜索字符串,而RFC-1123对主机名设定了限制。但是这种验证对于dnsConfig.searches的使用而言,过于严格,现在允许以下设置:
- 允许在连字符(-)的位置使用下划线(_)
- 允许单个点号(.)作为搜索域
详细使用方式请参考宽松的DNS搜索字符串验证。
- Sleep action for Container lifecycle hooks(GA)
在Kubernetes 1.34中,Sleep action for Container lifecycle hooks进阶至GA。该特性支持在容器生命周期回调中通过Sleep字段直接使用sleep命令,将容器暂停一段指定的时间,并支持填写sleep为零值。详细使用方式请参考引入PreStop Hook睡眠操作和允许PreStop Hook的睡眠动作为零值。
- Allow special characters in environment variables(GA)
在Kubernetes 1.34中,Allow special characters in environment variables进阶至GA。允许所有可打印的ASCII字符作为环境变量,ASCII码范围是32到126,但不包括“=”。详细使用方式请参考允许环境变量中包含几乎所有可打印的ASCII字符。
- Dynamic Resource Allocation(GA)
动态资源分配Dynamic Resource Allocation(DRA)的核心功能进阶至GA,基于DRA,允许您在 Pod 之间请求和共享资源。详细使用方式请参考动态资源分配。
- kuberc file for kubectl user preferences(Beta)
在Kubernetes 1.34中,kuberc file for kubectl user preferences进阶至Beta。kuberc 配置文件允许您为 kubectl 定义偏好设置,例如默认选项和命令别名。详细使用方式请参考用户偏好设置(kuberc)可在 kubectl 1.34 中进行测试。
- Snapshottable API server cache(Beta)
在Kubernetes 1.34中,Snapshottable API server cache进阶至Beta。在默认启用的 ListFromCacheSnapshot 功能下,kube-apiserver 会尝试从快照中提供响应。详细介绍请参考kube-apiserver List请求优化。
- KubeletPSI(Beta)
在Kubernetes 1.34中,KubeletPSI进阶至Beta。PSI是一种监控指标,用于测量系统在CPU、内存和I/O资源方面的压力。它能够提供服务的延迟和稳定性等信息。
kubelet支持查询节点的压力指标。详细介绍请参考理解PSI指标。
- KubeletPodResourcesGet和KubeletPodResourcesDynamicResources(Beta)
在Kubernetes 1.34中,KubeletPodResourcesGet和KubeletPodResourcesDynamicResources特性进阶至Beta,新增了部分gRPC接口,支持通过kubelet获取一些资源的分配信息。详细介绍请参考设备插件。
- PodLevelResources(Beta)
在Kubernetes 1.34中,PodLevelResources进阶至Beta,该特性支持 Pod 级别的资源管理,使 Kubernetes 能够控制 Pod 的总资源消耗,从而减轻用户为每个容器精心配置资源的负担。详细介绍请参考Pod级别资源规范。
当您设置了 Pod 级别的资源申请或限制时,控制台界面展示的 CPU 和内存数据(包括申请值、限制值及使用率)依然会按照容器级别的数值来统计。
Kubernetes 1.33版本
- ServiceCIDR动态增加ClusterIP的可分配范围(GA)
在Kubernetes 1.33中,MultiCIDRServiceAllocator进阶至GA。引入ServiceCIDR和IPAddress资源来记录Service的ClusterIP分配情况,支持通过ServiceCIDR来动态增加ClusterIP的可分配范围。
新增的服务网段不能和所属集群的子网网段和容器网段重叠。
- JobBackoffLimitPerIndex(GA)
在Kubernetes 1.33中,JobBackoffLimitPerIndex进阶至GA。允许为索引作业中的每个索引指定Pod的最大重试次数。详细使用方式请参考Kubernetes v1.33:Job逐索引的回退限制进阶至GA。
- JobSuccessPolicy(GA)
在Kubernetes 1.33中,JobSuccessPolicy进阶至GA。允许自定义Job的成功策略,例如通过指定某些索引是否成功和成功的索引数量来判断Job是否完成。详细使用方式请参考 Job的SuccessPolicy。
- HonorPVReclaimPolicy(GA)
在Kubernetes 1.33中,HonorPVReclaimPolicy进阶至GA。用于确保当PV的reclaimPolicy设置为Delete时,无论PV或PVC的删除顺序如何,都会严格按照策略删除底层存储资源,避免存储资源泄露。
- 镜像作为volume进行挂载(Beta)
在Kubernetes 1.33中,ImageVolume进阶至Beta。允许在Pod中使用image卷源,将容器镜像作为只读卷挂载到Pod中。详细使用方式请参考镜像卷。
- UserNamespacesSupport(Beta)
在Kubernetes 1.33中,UserNamespacesSupport进阶至Beta。允许Pod使用Linux用户命名空间。详细使用方式请参考Pod配置user命名空间。
- 通过流式处理大规模资源列表请求(Beta)
在Kubernetes 1.33中,StreamingCollectionEncodingToProtobuf进阶至Beta。kube-apiserver禁用WatchList机制,转而采用流式编码机制。对于大量资源的List请求场景,可有效降低内存占用并提升系统稳定性。详细使用方式请参考流式List响应。
- ProcMountType(Beta)
在Kubernetes 1.33中,ProcMountType进阶至Beta。允许通过Pod的securityContext.procMount字段自定义容器中/proc文件系统的挂载类型,以精细化控制/proc文件系统的访问,提升Pod安全性和隔离性。此功能适用于需要在用户命名空间中运行非特权容器的场景,通过放宽对/proc的限制,可增强兼容性与灵活性。
- PodLifecycleSleepAction(Beta)
在Kubernetes 1.33中,PodLifecycleSleepAction进阶至Beta。默认开启,允许用户创建持续时间为零秒的休眠生命周期作的容器 。详细使用方式请参考Introducing Sleep Action for PreStop Hook。
- 限制特定Volume Attributes Class关联的PVC数量。
在Kubernetes 1.33中,允许使用ResourceQuota限制特定Volume Attributes Class关联的PVC数量。
API变更与弃用
Kubernetes 1.34版本
- 在Kubernetes 1.34中,创建无头服务时,如果设置了loadBalancerIP、externalIPs或sessionAffinity,将增加警告信息。
- 在Kubernetes 1.34中,当容器未指定巨页(HugePage)资源时,将Pod级别的巨页cgroup传播到容器。并且添加了验证,以确保聚合的容器巨页限制小于或等于Pod级别的限制。
- 在Kubernetes 1.34中,在CustomResourceDefinition架构中引入了对Kubernetes短名称和长名称的OpenAPI格式支持。
- 在Kubernetes 1.34中,Kube-apiserver配置文件中的--authentication-config选项,其支持的AuthenticationConfiguration类型已提升至 apiserver.config.k8s.io/v1。
- 在Kubernetes 1.34中,JobPodReplacementPolicy特性开关已锁定为开启状态,并将在未来的Kubernetes版本中移除。
- 在Kubernetes 1.34中,AuthorizeWithSelectors和AuthorizeNodeWithSelectors特性开关已稳定并锁定为开启状态。
- 在Kubernetes 1.34中,Downward API的resourceFieldRef字段的回退行为已更新,以考虑Pod级别的资源:如果未设置容器级别的资源限制,现在会优先使用Pod级别的资源限制,然后再回退到节点可分配资源。
- 在Kubernetes 1.34中,零值的metadata.creationTimestamp现在被省略,不再在JSON、YAML和CBOR输出中序列化为显式的null。
Kubernetes 1.33版本
- 在Kubernetes 1.33中,EndpointSlice的annotation service.kubernetes.io/topology-mode废弃,保持向后兼容,由spec.trafficDistribution替换。
- 在Kubernetes 1.33中,apidiscovery.k8s.io/v2beta1 API组废弃。此API用于客户端查询集群中所有已注册的API资源信息。建议使用v2稳定版本。
- 在Kubernetes 1.33中,WatchFromStorageWithoutResourceVersion功能已弃用。该功能允许在没有resourceVersion的情况下基于etcd提供watch服务。
- 在Kubernetes 1.33中,v1版本的Endpoints API正式废弃,但仍然支持,推荐使用EndpointSlice API代替。EndpointSlice API自1.21起已进入稳定状态,并引入了双栈网络支持等特性。详细使用方式请参考Kubernetes v1.33: Continuing the transition from Endpoints to EndpointSlices。
CCE对Kubernetes 1.34版本的增强
在版本维护周期中,CCE会对Kubernetes 1.34版本进行定期的更新,并提供功能增强。
关于CCE Autopilot集群版本的更新说明,请参见补丁版本发布说明。
参考链接
关于Kubernetes 1.34与其他版本的性能对比和功能演进的更多信息,请参考:Kubernetes v1.34 Release Notes、Kubernetes v1.33 Release Notes。