cluster.ninja

Kubernetes minor release · “Electrifying”

Kubernetes 1.26

The first release published only to registry.k8s.io. It drops CRI v1alpha2, so containerd 1.5 and older stop working, removes several in-tree storage and cloud integrations, and introduces Dynamic Resource Allocation as alpha.

End of life

End of life since 28 Feb 2024 (2.7 years ago). No more patches upstream.

Released9 Dec 2022
Maintenance mode—
End of life28 Feb 2024
Latest patch1.26.1514 Mar 2024
Patch releases15
Support span14.7 months

Release team note: 1.26.15 was released in March 2024 (after the EOL date) to pick up a new version of Go to address several Go CVEs

What 1.26 brought

change

CRI v1alpha2 dropped

The kubelet now requires CRI v1 and will not register a node otherwise. Upgrade containerd to 1.6.0 or later before moving a node to 1.26.

change

Images only on registry.k8s.io

No 1.26 image tags are pushed to the legacy k8s.gcr.io registry, which only keeps receiving updates for older release lines.

GA

CSI migration for vSphere and Azure File

In-tree vSphere and Azure File volume plugins now redirect to their CSI drivers as a stable feature.

GA

Windows HostProcess containers

Privileged containers on Windows nodes are stable, giving pods host-level access, including to host networking.

alpha

Dynamic Resource Allocation

A new, persistent-volume-like API lets third-party drivers handle requests for special resources beyond simple counted devices, behind the DynamicResourceAllocation feature gate.

alpha

CEL-based admission policies

ValidatingAdmissionPolicy (admissionregistration.k8s.io/v1alpha1) lets you enforce custom rules in-process with CEL expressions instead of running admission webhooks.

Summarised in our own words from the official “Kubernetes v1.26: Electrifying” announcement (37 tracked enhancements), © The Kubernetes Authors, CC BY 4.0.

APIs that stopped being served in 1.26

Upgrading to 1.26 breaks any manifest, Helm chart or client that still uses these API versions. Move them to the version in the last column before you upgrade the control plane.

KindAPI versionStops being servedUse instead
HorizontalPodAutoscaler autoscaling/v2beta2 1.26 autoscaling/v2
FlowSchema flowcontrol.apiserver.k8s.io/v1beta1 1.26 flowcontrol.apiserver.k8s.io/v1
PriorityLevelConfiguration flowcontrol.apiserver.k8s.io/v1beta1 1.26 flowcontrol.apiserver.k8s.io/v1

Other removals and deprecations

Removed

  • CRI v1alpha2 support was removed from the kubelet; container runtimes must speak CRI v1 (containerd 1.6.0+).
  • flowcontrol.apiserver.k8s.io/v1beta1 FlowSchema and PriorityLevelConfiguration are no longer served; move to v1beta2.
  • autoscaling/v2beta2 HorizontalPodAutoscaler is no longer served; use autoscaling/v2.
  • The in-tree GlusterFS volume plugin was removed.
  • The in-tree OpenStack Cinder storage integration was removed; use the external cloud-provider-openstack and its CSI driver.
  • kube-proxy's userspace mode was removed on Linux and Windows; --mode userspace now fails.
  • Built-in Azure and Google Cloud authentication code was removed from client-go and kubectl; use credential plugins.
  • Dynamic kubelet configuration was removed from the API server, and previously deprecated logging command-line flags were removed.

Deprecated

  • kubectl's --prune-whitelist flag is deprecated in favour of --prune-allowlist.
  • The kube-apiserver --master-service-namespace flag, which had no effect, is formally deprecated.
  • Unused kubectl run flags such as --cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout and --wait are deprecated.

From the release announcement; our wording.

API versions deprecated in 1.26

Still served in 1.26, but the API server answers with a deprecation warning and a removal is scheduled.

KindAPI versionStops being servedUse instead
FlowSchema flowcontrol.apiserver.k8s.io/v1beta2 1.29 flowcontrol.apiserver.k8s.io/v1
PriorityLevelConfiguration flowcontrol.apiserver.k8s.io/v1beta2 1.29 flowcontrol.apiserver.k8s.io/v1

Upgrading

Version skew with a 1.26 API server

  • kubelet, kube-proxy: 1.24 to 1.26
  • kube-controller-manager, scheduler: 1.25 to 1.26
  • kubectl: 1.25 to 1.27

From the official version skew policy as it stands today.

One minor at a time

The API server must not skip minor versions.

Patch releases

16 releases, newest first
  1. 1.26.1514 Mar 2024
  2. 1.26.1414 Feb 2024
  3. 1.26.1317 Jan 2024
  4. 1.26.1220 Dec 2023
  5. 1.26.1115 Nov 2023
  6. 1.26.1018 Oct 2023
  7. 1.26.913 Sep 2023
  8. 1.26.824 Aug 2023
  9. 1.26.719 Jul 2023
  10. 1.26.614 Jun 2023
  11. 1.26.517 May 2023
  12. 1.26.412 Apr 2023
  13. 1.26.317 Mar 2023
  14. 1.26.228 Feb 2023
  15. 1.26.118 Jan 2023
  16. 1.26.09 Dec 2022