ACK发布Kubernetes 1.35版本说明

更新时间:
复制为 MD 格式

阿里云容器服务 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-plugincsi-provisioner

CNI

Flannel v0.28.0.6

TerwayTerwayControlplanev1.15.0及以上

重大变化

  • Kubernetes 自 1.35 版本起不再支持 cgroup v1,对 cgroup v2 的支持已在 1.25 版本进入稳定阶段。节点操作系统必须升级以支持 cgroup v2,否则 kubelet 将无法启动。

    关于ACK操作系统镜像的cgroup版本支持情况,请参见操作系统;关于如何更换或升级操作系统,请参见更换操作系统

功能变更

  • Service 的 trafficDistribution 字段新增的 PreferSameNode 选项进入稳定阶段(GA)。此选项使流量优先路由到本节点上的端点,仅在节点上无可用端点时回退到其他节点。

    该功能的特性门控 PreferSameTrafficDistribution 自 1.34 起默认启用,同时支持 PreferSameNodePreferSameZone。原有的 PreferClose 选项已重命名为 PreferSameZone

  • PodObservedGenerationTracking进入稳定阶段。当 Pod 的 spec 更新时,其 .metadata.generation 会递增。Kubelet 会在 Pod 的 .status.observedGeneration 字段中记录其已处理的 spec 版本。 这有助于控制器和 Operator 准确判断 Pod 的变更(例如原地扩缩容)是否已在节点上生效,从而避免因状态更新延迟而引发的问题。

  • 节点拓扑管理器策略选项 max-allowable-numa-nodesmax-allowable-numa-nodes)进入稳定阶段,拓扑管理器可在超过 8 个 NUMA 节点的服务器上正确计算亲和性。

  • Downward API 现已支持将节点的拓扑标签(如 topology.kubernetes.io/zonetopology.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 并默认启用,实现了更细粒度的容器级重启策略配置。支持通过为容器指定 restartPolicyrestartPolicyRules 来覆盖 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-61732CVE-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.35Kubernetes v1.35: Timbernetes (The World Tree Release)