ACK Release Notes for Kubernetes 1.35
Alibaba Cloud Container Service for Kubernetes 1.35 removes cgroup v1 support, adds new feature gates, and deprecates kube-proxy IPVS mode.
Component versions
Supported versions of core components in ACK clusters.
Core component | Version |
Kubernetes | 1.35.1-aliyun.1, 1.35.2-aliyun.1, 1.35.7-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.6 |
CoreDNS | v1.12.1.2 |
CSI | Update csi-plugin and csi-provisioner to the latest versions. For more information about release notes, see csi-plugin and csi-provisioner. |
CNI | Flannel v0.28.0.6 |
Terway and TerwayControlplane are v1.15.0 or later |
Breaking changes
Starting with version 1.35, Kubernetes no longer supports cgroup v1. Support for cgroup v2 graduated to Stable in version 1.25. Upgrade the node OS to support cgroup v2, or the kubelet will fail to start.
Operating systems lists cgroup version support for ACK OS images. To upgrade, see Change operating systems.
Feature updates
The
PreferSameNodeoption for the ServicetrafficDistributionfield has graduated to General Availability (GA). It routes traffic to same-node endpoints first, falling back only when none are available locally.The
PreferSameTrafficDistributionfeature gate has been enabled by default since version 1.34 and supports bothPreferSameNodeandPreferSameZone.PreferClosehas been renamed toPreferSameZone.PodObservedGenerationTrackinghas graduated to GA. When a Pod'sspecis updated, its.metadata.generationis incremented. The kubelet now records thespecversion it has processed in the Pod's.status.observedGenerationfield. Controllers and Operators can now determine whether Pod changes, such as in-place scaling, have taken effect on the node, avoiding issues from status update delays.The node topology manager policy option
max-allowable-numa-nodes(max-allowable-numa-nodes) has graduated to GA. The topology manager can now correctly calculate affinity on servers with more than 8 NUMA nodes.The Downward API now supports injecting node topology labels, such as
topology.kubernetes.io/zoneandtopology.kubernetes.io/region, into Pods.StorageVersionMigrator, promoted to Beta and disabled by default, moves storage version migration from an external tool into the Kubernetes core. See Move Storage Version Migrator in-tree.MutableCSINodeAllocatableCountis now enabled by default. CSI drivers can now periodically update allocatable volume counts per node, preventing Pods from getting stuck inContainerCreatingdue to insufficient volume capacity.Opportunistic batching lets the scheduler cache intermediate scheduling results, significantly improving throughput for similar Pods.
MaxUnavailableStatefulSetis promoted to Beta and is enabled by default. Set themaxUnavailablefield in a StatefulSet's rolling update strategy to limit unavailable Pods during updates.Pod Certificates is promoted to Beta and is disabled by default. Pods can use certificates for mutual TLS authentication with the kube-apiserver, with automatic rotation for stronger security than ServiceAccount tokens. See KEP-4317: Pod Certificates.
Kubectl now supports the KYAML format. KYAML is a YAML subset for Kubernetes that resolves ambiguities and security issues in standard YAML parsing. Disable it with the
KUBECTL_KYAML=falseenvironment variable. See Introducing KYAML.The HPA
behaviorfield now supports configurable tolerance thresholds, replacing the fixed global tolerance of 10%.User namespaces is promoted to Beta. Pods can run in a user namespace that is isolated from the host. Container processes can run as root (UID 0) within their namespace but are mapped to an unprivileged, non-zero user ID on the host. This reduces the security risk of privilege escalation from a container escape.
ImageVolumeis now enabled by default, allowing Pods to mount container image contents as read-onlyimage-type volumes. Requires containerd v2.1 or later.KubeletEnsureSecretPulledImagesis promoted to Beta and is enabled by default. It enforces credential checks for Pods usingimagePullPolicy: IfNotPresentin multi-tenant clusters, preventing unauthorized Pods from accessing private images pulled by credentialed Pods via the local cache.ContainerRestartRules, promoted to Beta and enabled by default, enables container-level restart policy overrides viarestartPolicyandrestartPolicyRulesfor individual containers. See Individual container restart policy and rules.CSI drivers can now set the
CSIDriverobject'sspec.serviceAccountTokenInSecretsfield totrueto mount ServiceAccount tokens via a Secret instead of placing them directly in thevolume context. This prevents accidental credential exposure in logs and error messages. See CSI driver opt-in for service account tokens via secrets field.Deployments now include a
terminatingReplicasfield that counts Pods with a deletion timestamp not yet fully removed.Fixed CVE-2025-61732 and CVE-2025-68121 in version 1.35.2-aliyun.1.
Deprecations
The kube-proxy
ipvs modeis deprecated and scheduled for removal. Switch to nftables mode, stable since v1.33. Sincenftables modeis new, ACK 1.35 clusters still default toipvs mode, but you can selectnftablesas the Service Forwarding Mode when creating a cluster.We recommend Terway Datapath V2, which operates independently of kube-proxy.
Version 1.35 is the last release to support containerd 1.x. Upgrade containerd to 2.x before upgrading to Kubernetes 1.36 or later. ACK clusters default to containerd 2.x since version 1.33. See Introduction to containerd 2.1.
References
Complete Kubernetes 1.35 changelog: CHANGELOG-1.35 and Kubernetes v1.35: Timbernetes (The World Tree Release).