阿里云容器服务 Kubernetes 版严格遵循社区一致性认证。本文介绍ACK发布Kubernetes 1.34版本的主要变更说明,包括升级注意事项、重大变更、功能特性、弃用功能和API、特性门控等。
组件版本说明
下表为ACK集群核心组件版本的支持情况。
核心组件 | 版本号 |
Kubernetes | 1.34.1-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.3 |
CoreDNS | v1.11.3.5-5321daf49-aliyun |
CSI | 升级至组件当前支持的最新版本。详细信息,请参见组件变更记录csi-plugin、csi-provisioner。 |
CNI | Flannel v0.15.1.23-33d25c1-aliyun |
Terway和TerwayControlplane为v1.15.0及以上 |
重大变化
自 1.34 版本起,新建节点池不指定OS镜像时,默认使用Alibaba Cloud Linux 3 容器优化版。
自 1.34 版本起,创建集群时选择Terway网络插件且勾选DataPath V2(通过 eBPF 加速共享 ENI 模式的网络访问)时,Terway运行的节点上将不再运行kube-proxy容器。
此变更仅对新建集群生效。
自 1.34 版本起,在ACK托管集群Pro版中创建普通节点池和托管节点池时,默认启用
serverTLSBootstrap
参数及RotateKubeletServerCertificate
特性门控。启用该配置后,节点池中各节点的 kubelet 服务端证书支持自动轮转,同时支持使用集群 CA 验证 kubelet 服务端证书,帮助提升集群节点安全能力。
自 1.34 版本起,kubelet 服务端将不再支持
TLS_RSA_WITH_AES_256_GCM_SHA384
和TLS_RSA_WITH_AES_128_GCM_SHA256
TLS加密套件。存量集群升级至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。
功能特性
PodLevelResources进阶至Beta。与传统的容器级资源定义不同,该特性允许在 Pod 级别设置总的资源请求与限制,以确保 Pod 内所有容器的资源消耗不会超过 Pod 自身限制。详情请参见Pod Level Resource Specifications。
暂不支持 Windows 节点。
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.34完整的变更记录,请参见CHANGELOG-1.34、Kubernetes v1.34: Of Wind & Will (O' WaW)。