(Discontinued) ACK release notes for Kubernetes 1.22

更新时间:
复制 MD 格式

ACK strictly follows Kubernetes community conformance. This topic describes the changes in the ACK Kubernetes 1.22 release, including key changes, removed beta APIs, and upgrade requirements.

Before you upgrade

Important

Kubernetes 1.22 permanently removes multiple beta APIs. Complete these checks before upgrading — controllers or applications that call removed APIs will fail.

Required actions:

  • API migration (blocking): Kubernetes 1.22 removes all v1beta1 APIs listed in Removed beta APIs. Migrate affected resources to the v1 stable version before upgrading. Existing objects are unaffected, but controllers or tooling that call removed APIs will fail.

  • Docker runtime migration: Dockershim is scheduled for removal in Kubernetes 1.24. Before upgrading to 1.24, migrate nodes from Docker to containerd using the node pool upgrade feature. For dedicated clusters, master nodes migrate automatically — all containers are recreated, so back up custom containers that require data persistence. For Windows nodes, continue using Docker EE due to containerd limitations on Windows.

  • NodePort range overlap (1.22.10+): From Kubernetes 1.22.10, kube-proxy no longer listens on NodePort service ports. If the NodePort range (ServiceNodePortRange on the API server) overlaps with the kernel's net.ipv4.ip_local_port_range on any node, intermittent TCP connection failures occur, causing failed health checks and service disruptions. Verify no overlap before upgrading to 1.22.10 or later. See How do I configure the NodePort range? and the Kubernetes community PR.

  • Service account token expiration: Service account tokens have a one-year default validity. Clients on client-go v11.0.0+ or v0.15.0+ automatically reload rotated tokens. Older clients do not auto-reload and fail to authenticate after expiry — upgrade client-go if affected. See \[Product Change\] Resolve ServiceAccount token expiration issues in Kubernetes 1.22+.

  • Ingress controller upgrade: The ingress controller upgrade to 1.1.0-aliyun.1 may cause brief service interruptions and configuration compatibility issues. Verify configurations during the component upgrade before the cluster upgrade.

  • CVE-2022-3172: This version may be affected by CVE-2022-3172. Review the impact and mitigation before upgrading.

  • Virtual node pod scheduling: From Kubernetes 1.22, pod scheduling to virtual nodes is enabled by default. Scheduling is affected by virtual node taints and pod-level node affinity, pod affinity, or topology spread constraints. To preserve pre-upgrade behavior, disable Enable Virtual Node-based Pod Scheduling in kube-scheduler. See Custom parameters of kube-scheduler.

  • PodSecurityPolicy (PSP) migration: PSP is scheduled for removal in Kubernetes 1.25. The pod security admission controller is enabled by default in ACK — start migrating away from PSP now. See Pod Security Admission and the PodSecurityPolicy Deprecation blog post.

Component versions

Component

Version

Release notes

Kubernetes

1.22.15-aliyun.1

See Before you upgrade and Key changes in Kubernetes 1.22

etcd

3.5.1

None

CoreDNS

v1.9.3.6-32932850-aliyun

Non-disruptive upgrade. New: EndpointSlice watch support; DNS queries over IPv6

CRI — Docker CE

19.03.15

None

CRI — Docker EE

Varies with Windows version

None

CRI — containerd

1.4.8

None

CSI

v1.26

None

CNI — Flannel

0.15.1.4-e02c8f12-aliyun

Non-disruptive upgrade. New: Kubernetes 1.22 APIVersion compatibility for Authorization and similar resources; HostPort service exposure; hairpin mode

CNI — Terway

None

NVIDIA Container Runtime

3.7.0

None

Ingress controller

1.1.0-aliyun.1

May cause brief service interruptions and configuration compatibility issues. Verify configurations before the cluster upgrade.

Key changes in Kubernetes 1.22

Removed beta APIs

All v1beta1 API versions listed below are permanently removed. Calls to these APIs fail immediately after the upgrade.

Resource

Removed API

Migrate to

MutatingWebhookConfiguration, ValidatingWebhookConfiguration

admissionregistration.k8s.io/v1beta1

admissionregistration.k8s.io/v1

CustomResourceDefinition (CRD)

apiextensions.k8s.io/v1beta1

apiextensions.k8s.io/v1

APIService

apiregistration.k8s.io/v1beta1

apiregistration.k8s.io/v1

TokenReview

authentication.k8s.io/v1beta1

authentication.k8s.io/v1

SubjectAccessReview

authorization.k8s.io/v1beta1

authorization.k8s.io/v1

CertificateSigningRequest

certificates.k8s.io/v1beta1

certificates.k8s.io/v1

Lease

coordination.k8s.io/v1beta1

coordination.k8s.io/v1

Ingress, IngressClass

networking.k8s.io/v1beta1, extensions/v1beta1

networking.k8s.io/v1

ClusterRole, ClusterRoleBinding, Role, RoleBinding

rbac.authorization.k8s.io/v1beta1

rbac.authorization.k8s.io/v1

CSIDriver, CSINode, StorageClass, VolumeAttachment

storage.k8s.io/v1beta1

storage.k8s.io/v1

PriorityClass

scheduling.k8s.io/v1beta1

scheduling.k8s.io/v1

Deprecations

  • Dockershim is deprecated and scheduled for removal in Kubernetes 1.24. See EP-2221 and cri-containerd. Before upgrading to Kubernetes 1.24, transition Docker-based nodes to a non-Docker runtime:

    1. Plan capacity (instance types and count) for non-Docker runtime nodes based on pod count.

    2. Scale out the new nodes during off-peak hours.

    3. Drain Docker-based nodes one by one. After each drain, verify application pods have recovered before proceeding.

    4. Remove Docker-based nodes after all are drained.

  • NodePort kube-proxy behavior change (1.22.10+): From Kubernetes 1.22.10, kube-proxy no longer listens on NodePort service ports. If the NodePort range (ServiceNodePortRange) overlaps with the kernel's net.ipv4.ip_local_port_range on any node, intermittent TCP connection failures occur. Verify no overlap before upgrading. See How do I configure the NodePort range? and the Kubernetes community PR.

Default-enabled feature gates

The following feature gates are enabled by default in Kubernetes 1.22.

Workloads and scheduling

  • ImmutableEphemeralVolumes: Mark ConfigMaps and Secrets as immutable to reduce API server load. See Secrets and ConfigMaps.

  • DaemonSetUpdateSurge: During a DaemonSet rolling update, set .spec.strategy.rollingUpdate.maxSurge to control how many pods can exceed the desired count. See Perform a rolling update on a DaemonSet.

  • IndexedJob: Set .spec.completionMode to Indexed in a Job to assign each pod a completion index annotation (batch.kubernetes.io/job-completion-index) and environment variable (JOB_COMPLETION_INDEX). See Introducing Indexed Jobs.

  • SuspendJob: Suspend and resume a Job to control its lifecycle. See Introducing suspended Jobs.

  • PodDeletionCost: Influence pod termination order during scale-down by setting a deletion cost — pods with lower utilization receive lower cost and are terminated first. See ReplicaSet.

  • PodAffinityNamespaceSelector: Pod affinity policies support label selection across namespaces for more flexible cross-namespace scheduling. See KEP-2249.

  • PreferNominatedNode: kube-scheduler prioritizes nominated nodes, evaluating others only when all nominated nodes are unsuitable. See KEP-1923.

  • LogarithmicScaleDown: Pod termination is randomized during scale-down to mitigate topology spread constraint issues. See KEP-2185.

  • ProbeTerminationGracePeriod: Configure a probe-level terminationGracePeriodSeconds on liveness probes to reduce wait time before restarting a failed pod. See Configure liveness, readiness and startup probes.

Node and runtime

  • GracefulNodeShutdown (Linux only): The kubelet receives pending shutdown notifications and gracefully terminates pods within the configured shutdown period. See Graceful node shutdown.

  • MemoryManager (Linux only): Provides Non-Uniform Memory Access (NUMA)-aware memory management for applications with specific memory requirements. ACK does not configure memory reservations for this feature. See Runtime memory maps and Control CPU management policies on the node.

  • SizeMemoryBackedVolumes (Linux only): Define the size of memory-backed emptyDir volumes using emptyDir.sizeLimit, improving pod scheduling transparency. See KEP-1967.

  • CSI support for Windows containers (stable): On operating systems without privileged container support — such as Windows Server 2019 and Windows Server Core 2004 — Windows containers manage host storage through a CSI proxy. Requires a compatible CSI plugin. See csi-proxy.

Networking

Storage

  • CSIStorageCapacity: kube-scheduler considers node storage capacity when scheduling pods that require specific volume sizes. See Storage Capacity.

Authentication and API

  • EfficientWatchResumption: Watch-based caches restore more efficiently after API server restarts, improving large-scale cluster performance. See KEP-1904.

  • Server-Side Apply (GA): Track the source, time, and operation for changes to a resource's fields. See Server-Side Apply.

  • BoundServiceAccountTokenVolume (GA): Service accounts mounted into pods using non-projected volumes have a one-year default validity. The kubelet automatically rotates these tokens. Clients on client-go v11.0.0+ or v0.15.0+ automatically reload tokens from disk. See the feature documentation.

  • CSRDuration: When you submit a CertificateSigningRequest (CSR) with .spec.expirationSeconds, the certificate validity is the lesser of the requested duration and the controller manager's --cluster-signing-duration. The ACK default is 10 years. See Signers.

New features

Feature replacements

  • PodSecurityPolicy (PSP) replaced by pod security admission controller: PSP is deprecated and scheduled for removal in Kubernetes 1.25. The pod security admission controller is enabled by default in ACK. Migrate PSP resources in Kubernetes 1.22. See Pod Security Admission and the PodSecurityPolicy Deprecation blog post.

  • ServiceTopology replaced by Topology Aware Hints: ServiceTopology (topologyKeys field in a Service) is deprecated, replaced by Topology Aware Hints. Disabled by default in ACK. If enabled, enable Topology Aware Hints in Kubernetes 1.22 and migrate. See Topology Aware Hints.

ACK enhancements for Kubernetes 1.22

Observability

  • Additional API server access request metrics.

  • ACK Pro, ACK Serverless Pro, and ACK Edge Pro clusters now expose key control plane component metrics.

Stability

The following improvements apply to all cluster types:

  • Storage layer protection to reduce etcd impact during cold starts.

  • API server traffic throttling by request source, type, or route to reduce impact during cold starts.

Performance optimizations

Bug fixes

References