1.36

Canonical Kubernetes 1.36 LTS - Release notes - 24 August 2026

Welcome to the second LTS release of Canonical Kubernetes!

Requirements and compatibility

Canonical Kubernetes can be installed on a variety of operating systems using several methods. For specific requirements, see the installation guides.

What’s new

  • Kubernetes 1.36 - read more about the upstream release here.

  • kube-proxy replacement - Clusters bootstrapped with the default Cilium network no longer deploy kube-proxy. Service routing is handled by Cilium’s eBPF datapath instead. Clusters upgraded from earlier releases will continue to run kube-proxy until you opt in with sudo k8s set network.kube-proxy-enabled=false. See the service routing explanation for more information.

  • k8s-dqlite datastore removed - The k8s-dqlite datastore, deprecated in 1.35, has been removed. The only supported datastore is now etcd, but users still have the option to deploy an external datastore. Refreshing a cluster that still uses k8s-dqlite is blocked; there is no migration path.

  • Cilium 1.19 and networking updates

    • Cilium and Cilium-Operator upgraded to 1.19.4.

    • Gateway API CRDs upgraded from v1.2.0 to v1.4.1. gateway.networking.k8s.io/v1.

  • MetalLB 0.16.1 and multi-peer BGP - The MetalLB controller and speaker are now upgraded to v0.16.1. BGP mode can now be configured with multiple peers, each with its own ASN, port and node selector, using the k8sd/v1alpha1/metallb/bgp-peers annotation. See the multi-peer BGP guide.

  • s390x and ppc64el support - The snap is now built for the s390x and ppc64el architectures in addition to amd64 and arm64.

  • Dedicated containerd base directory flag - k8s bootstrap and k8s join-cluster accept a --containerd-base-dir flag, so a dedicated containerd installation path no longer requires a configuration file.

  • k8sd moved to its own repository - The k8sd daemon is now developed in canonical/k8sd and consumed by the snap as a build component.

Also in this release

  • Update Go to 1.26 (FIPS)

  • Update containerd to v2.3.3

  • Update runc to v1.4.3

  • Update etcd to v3.6.13

  • Update cni-plugins to v1.9.1

  • Update Helm to v4.2.4

  • Update CoreDNS to 1.14.6

  • Update metrics-server to 0.9.0

  • Update CSI node driver registrar to 2.16.0

  • Update CSI provisioner to 6.2.0

  • Update CSI resizer to 2.1.0

  • Update CSI snapshotter to 8.5.0

  • Update microcluster to v3.1.1

  • Update the public API to k8s-snap-api v2

  • Control-plane-only controllers no longer run on worker nodes

  • Removed the obsolete CIS generator tool

Deprecations and API changes

  • Upstream - Please review the upstream release notes, which include deprecation notices and API changes for Kubernetes 1.36.

  • The k8s-dqlite datastore option has been removed. There is no update or migration path for deployments using this datastore.

  • kube-proxy-client-crt, kube-proxy-client-key and extra-node-kube-proxy-args are deprecated. Setting them does not raise an error, but the values are ignored while the default Cilium network is enabled, since no kube-proxy is deployed in that case. They are still honoured when the default network is disabled and kube-proxy runs.

  • The FRR-backed MetalLB BGP mode is no longer shipped. Only L2 mode and the native MetalLB BGP backend are supported.

Fixed bugs and issues

  • Fixed a containerd side-load images plugin initialization race (#2300, #2415)

  • Prevent a control plane node from joining with the same name as an existing worker node (#2263, k8sd#4)

  • Snap revert no longer fails when reverting to the currently installed version (#2273)

  • Disable volume resizing for local-storage (#2235)

  • Use etcd learner mode during node join to prevent quorum loss (k8sd#28)

  • Resume the k8s-config watch after etcd compaction (k8sd#44)

  • Honor AnnotationDisableSeparateFeatureUpgrades during node joins (#2622, k8sd#53)

Upgrade notes

See our upgrade notes page for instructions on how to upgrade to 1.36.

Note

Clusters using the removed k8s-dqlite datastore cannot be upgraded to 1.36. The snap refresh is rejected and the cluster stays on its current revision.