Container Service for Kubernetes (ACK) strictly abides by the terms of the Certified Kubernetes Conformance Program. This topic covers component versions, breaking changes, new features, and security fixes in Kubernetes 1.31.
Component versions
| Component | Version |
|---|---|
| Kubernetes | 1.31.9-aliyun.1 and 1.31.1-aliyun.1 |
| etcd | v3.5.15 |
| containerd | 1.6.34 |
| CoreDNS | v1.11.3.2-f57ea7ed6-aliyun |
| CSI | csi-plugin and csi-provisioner updated to the latest versions. See csi-plugin and csi-provisioner release notes. |
| CNI | Flannel v0.15.1.22-20a397e6-aliyun |
| Terway and TerwayControlplane | 1.10.0 and later |
The Trunk ENI feature is enabled by default for newly created ACK managed clusters that use Terway as the network plug-in and run Kubernetes 1.31 or later.
Breaking changes
These changes require action before or immediately after upgrading to 1.31.
CephFS volume plug-in removed
The built-in CephFS volume plug-in kubernetes.io/cephfs is removed in 1.31. Use the CephFS CSI driver instead.
If your cluster uses the CephFS volume plug-in, re-deploy your application to use the CephFS CSI driver after upgrading to 1.31.
CephRBD volume plug-in removed
The built-in CephRBD volume plug-in kubernetes.io/rbd is removed in 1.31. Use the RBD CSI driver instead.
If your cluster uses the CephRBD volume plug-in, re-deploy your application to use the RBD CSI driver after upgrading to 1.31.
CSIMigrationPortworx enabled by default
The CSIMigrationPortworx feature gate is enabled by default, migrating volumes from the legacy embedded Portworx plug-in to the Portworx CSI plug-in.
If you use Portworx as a storage solution, install and configure the Portworx CSI plug-in before upgrading to 1.31.
New features
Workload scheduling
MatchLabelKeysInPodAffinity promoted to beta (enabled by default)
To resolve scheduling conflicts during rolling updates where pods violate affinity and anti-affinity rules, specify the new matchLabelKeys and mismatchLabelKeys fields in podAffinity and podAntiAffinity. The scheduler uses these fields to distinguish old pods from new pods during a rollout. See matchLabelKeys and mismatchLabelKeys.
Storage
RecursiveReadOnlyMounts promoted to beta (enabled by default)
Volumes mounted to pods can now be made recursively read-only. All subdirectories and files under the mount are set to read-only mode. See Recursive read-only mounts.
HonorPVReclaimPolicy promoted to beta (enabled by default)
Finalizers can now be added to a PersistentVolume (PV) to ensure that a PV with the Delete reclaim policy is deleted only after the associated backing storage is deleted. See PersistentVolume deletion protection finalizer.
Workloads
JobSuccessPolicy promoted to beta (enabled by default)
A success policy can now be configured for Indexed Jobs. See Job success policy.
kubelet no longer restarts containers on non-image spec changes
If the spec field of a pod changes but the image field is unchanged, the kubelet does not restart the container. This prevents unnecessary pod restarts caused by non-functional configuration updates.
Security and authentication
ServiceAccountTokenNodeBinding promoted to beta (enabled by default)
A ServiceAccount token can now be bound to a specific node. The token is invalidated if it expires, or if the associated node or ServiceAccount is deleted.
API and tooling
DisableNodeKubeProxyVersion promoted to beta (enabled by default)
The status.nodeInfo.kubeProxyVersion field no longer displays the kube-proxy version. The value in this field was inaccurate and did not reflect the actual kube-proxy version running on the node.
kubectl debug custom profiling promoted to beta
kubectl debug now supports custom profiling configuration for troubleshooting pods. See Kubernetes 1.31: Custom Profiling in Kubectl Debug Graduates to Beta.
kubectl streaming migrated from SPDY to WebSocket
kubectl cp, kubectl attach, kubectl exec, and kubectl port-forward now use WebSocket for streaming instead of SPDY. WebSocket is the default streaming protocol for Kubernetes clients including kubectl.
Consistent reads from cache promoted to beta
The Kubernetes API server can now serve consistent reads from cache instead of fetching the full dataset from etcd, improving the efficiency of List requests. See Consistent reads from cache.
CRD validation
caBundle validation enforced
If the caBundle field in a CustomResourceDefinition (CRD) is non-empty but contains an invalid value or no CA certificates, the CRD stops serving requests. Once a valid caBundle is established, updates that would render it invalid or empty are rejected to prevent service disruption.
Security fixes
The following CVEs are fixed in 1.31.9-aliyun.1: