阿里云容器服务 Kubernetes 版严格遵循社区一致性认证。本文介绍ACK发布Kubernetes 1.35版本的主要变更说明,包括升级注意事项、重大变更、功能特性、弃用功能和API、特性门控等。
组件版本说明
下表为ACK集群核心组件版本的支持情况。
核心组件 | 版本号 |
Kubernetes | 1.35.1-aliyun.1、1.35.2-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.5 |
CoreDNS | v1.12.1.2 |
CSI | 升级至组件当前支持的最新版本。详细信息,请参见组件变更记录csi-plugin、csi-provisioner。 |
CNI | Flannel v0.28.0.6 |
Terway和TerwayControlplane为v1.15.0及以上 |
重大变化
功能变更
Service 的
trafficDistribution字段新增的PreferSameNode选项进入稳定阶段(GA)。此选项使流量优先路由到本节点上的端点,仅在节点上无可用端点时回退到其他节点。该功能的特性门控
PreferSameTrafficDistribution自 1.34 起默认启用,同时支持PreferSameNode和PreferSameZone。原有的PreferClose选项已重命名为PreferSameZone。PodObservedGenerationTracking进入稳定阶段。当 Pod 的spec更新时,其.metadata.generation会递增。Kubelet 会在 Pod 的.status.observedGeneration字段中记录其已处理的spec版本。 这有助于控制器和 Operator 准确判断 Pod 的变更(例如原地扩缩容)是否已在节点上生效,从而避免因状态更新延迟而引发的问题。节点拓扑管理器策略选项
max-allowable-numa-nodes(max-allowable-numa-nodes)进入稳定阶段,拓扑管理器可在超过 8 个 NUMA 节点的服务器上正确计算亲和性。Downward API 现已支持将节点的拓扑标签(如
topology.kubernetes.io/zone、topology.kubernetes.io/region)注入到 Pod 中。StorageVersionMigrator进阶至Beta,默认关闭,将存储版本迁移(Storage Version Migration)能力从外部工具迁移至 Kubernetes 内部实现。详见Move Storage Version Migrator in-tree。MutableCSINodeAllocatableCount默认启用,允许 CSI 驱动定期更新节点上可分配卷的数量信息。这有助于解决节点可分配卷容量信息更新不及时的问题,此问题可能导致 Pod 被调度到卷容量不足的节点上,并卡在ContainerCreating状态。通过引入Opportunistic batching,调度器可以缓存调度中间结果,从而显著提升相似 Pod 的调度吞吐量。
MaxUnavailableStatefulSet进阶至 Beta 并默认启用。该功能允许为 StatefulSet 的滚动更新策略设置maxUnavailable字段,用于指定更新过程中不可用 Pod 数量的上限。Pod Certificates 进阶至 Beta,默认禁用。该功能支持为 Pod 生成证书用于和 kube-apiserver 进行双向认证访问,并支持证书的自动轮转,提供了比传统 ServiceAccount 令牌更安全的认证方式。详见KEP-4317: Pod Certificates。
Kubectl 支持使用 KYAML 格式。KYAML 是为 Kubernetes 设计的 YAML 子集,旨在解决标准 YAML 在解析时的一些歧义和安全问题。可通过设置环境变量
KUBECTL_KYAML=false来禁用此功能。详见Introducing KYAML。HorizontalPodAutoscaler (HPA) 的
behavior字段现已支持配置容忍度阈值。此前,扩缩容决策依赖于一个固定的全局 10% 容忍度,现可按需灵活配置。用户命名空间(User Namespaces)进阶至 Beta 。此功能允许 Pod 在一个与主机隔离的用户命名空间中运行。容器进程可以在其命名空间内以 root (UID 0) 身份运行,但在主机上会被映射为一个无特权的非零用户 ID,降低因容器逃逸而导致权限提升的安全风险。
ImageVolume默认启用,允许在 Pod 中使用image类型的卷。这种卷可以将容器镜像的内容作为只读卷挂载到 Pod 中。使用此功能时,containerd 需为 v2.1 或更高版本。KubeletEnsureSecretPulledImages进阶至 Beta 并默认启用。此功能通过强制对使用imagePullPolicy: IfNotPresent的 Pod 进行凭据校验,提升多租户集群的安全性。它能有效防止以下场景:一个有凭据的 Pod 将私有镜像拉取到节点上后,同一节点上其他无凭据的 Pod 能够利用本地缓存访问该敏感镜像。ContainerRestartRules进阶至 Beta 并默认启用,实现了更细粒度的容器级重启策略配置。支持通过为容器指定restartPolicy和restartPolicyRules来覆盖 Pod 级别的重启策略。详见Individual container restart policy and rules。CSI 驱动支持将
CSIDriver对象中的spec.serviceAccountTokenInSecrets字段设置为true,以通过 Secret 挂载 ServiceAccount 令牌,而不是将其直接放在volume context中。这有助于防止凭据在日志和错误信息中被意外泄露。详见CSI driver opt-in for service account tokens via secrets field。Deployment 新增
terminatingReplicas字段,用于记录已设置删除时间戳但尚未从系统中完全移除的 Pod 数量。在1.35.2-aliyun.1中修复 CVE-2025-61732和CVE-2025-68121。
弃用说明
自 1.35 版本起,kube-proxy 的
ipvs模式已被标记为弃用,并计划在未来版本中移除。官方推荐切换至 nftables模式 (自 v1.33 起稳定)。考虑到nftables模式相对较新,ACK 创建新集群时仍默认使用ipvs模式,并计划在后续版本中提供nftables模式的支持。建议使用完全不依赖 kube-proxy 的 Terway Datapath V2。
1.35 是最后一个支持 containerd 1.x 的版本。在升级至 1.36 及以上版本前,需将 containerd 升级至 2.x 版本。ACK集群自 1.33 版本起已默认使用 containerd 2.x。详见containerd 2.1介绍。
参考链接
关于Kubernetes 1.35完整的变更记录,请参见CHANGELOG-1.35、Kubernetes v1.35: Timbernetes (The World Tree Release)。