Latest in branch 1.20
1.20.15
Released 19 Jan 2022
(4 years ago)
SoftwareKubernetes
Version1.20
Status
End of life
Initial release1.20.0
04 Dec 2020
(5 years ago)
Latest release1.20.15
19 Jan 2022
(4 years ago)
End of support28 Dec 2021
(Ended 4 years, 5 months ago)
End of security fixes28 Feb 2022
(Ended 4 years, 3 months ago)
Release noteshttps://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md
Source codehttps://github.com/kubernetes/kubernetes/tree/v1.20.15
Documentationhttps://v1-20.docs.kubernetes.io/
Downloadhttps://kubernetes.io/releases/download/
Kubernetes 1.20 ReleasesView full list

What Is New in Kubernetes 1.20

Kubernetes 1.20 brings a substantial set of updates, headlined by the beta graduation of a major feature and a significant deprecation notice. This release focuses on maturing existing functionality and refining the API surface.

Category Key Changes
New Features (Beta) Immutable Secrets and ConfigMaps, Kubernetes Volume Snapshot Operations, NonPreempting Priority
API Changes & Deprecations Deprecation of Dockershim, Removal of several deprecated beta APIs
Improvements API Priority and Fairness beta, EndpointSlice mirroring controller, kubectl debug graduates to beta
Bug Fixes Numerous fixes across scheduling, storage, networking, and core components

What are the major feature graduations?

The standout feature promotion is the move to beta for Immutable Secrets and ConfigMaps. This allows you to set immutable: true in your Secret or ConfigMap spec, which significantly improves performance and security for objects that don't need to be updated.

When a Secret or ConfigMap is marked immutable, the kubelet doesn't watch for changes on that object. This reduces the load on the API server, which is a big deal for large clusters. It also prevents accidental updates that could break applications relying on that configuration data.

Why is the Docker deprecation such a big deal?

Kubernetes 1.20 officially announces the deprecation of Dockershim, the component that allows the kubelet to communicate with Docker Engine. This isn't an immediate removal--it's a warning that you should start planning your migration to a supported container runtime like containerd or CRI-O.

In practice, this change is less dramatic than it sounds. Docker-built images will continue to work perfectly because all conformant runtimes use the same image formats. The change is about the underlying runtime interface, not the developer experience of building containers.

How have volume operations improved?

Volume snapshot operations have moved to beta, which means the APIs are stable and the feature is ready for broader use. This allows you to take point-in-time snapshots of your persistent volumes, similar to how you might snapshot a virtual machine disk.

The beta status signals that the core APIs won't change in breaking ways. You can now more confidently build automation around backing up and restoring PVCs using your CSI driver's snapshot capabilities.

What's new for cluster operators?

API Priority and Fairness (APF) reached beta, giving cluster operators much better tools to protect their API servers from overload. APF classifies and isolates requests, preventing a noisy neighbor from starving out critical system requests.

For networking, the EndpointSlice mirroring controller is now GA. This controller helps manage the transition from Endpoints to EndpointSlices by automatically mirroring custom Endpoints resources to EndpointSlices, which is crucial for gradual migration of older networking setups.

What debugging tools were enhanced?

The kubectl debug command graduated to beta, making it more stable and reliable. This feature lets you attach a troubleshooting container to a running pod, which is invaluable for debugging production issues without restarting the main application container.

You can use it to run diagnostic tools in the same namespaces and with the same filesystem access as the target container. It's like having kubectl exec but with your own custom tooling image.

FAQ

Should I panic about the Docker deprecation?
No, but you should start planning. Dockershim remains functional in 1.20 and will continue to work for several releases. Start testing your nodes with containerd or CRI-O to ensure your workloads and operational tools work with these runtimes.

What happens if I try to update an immutable ConfigMap?
The API server will reject the update with an error. You'll need to delete and recreate the ConfigMap, which is the intended behavior--it prevents accidental mutations that could cause inconsistent application behavior across your cluster.

Is NonPreempting Priority useful for my workloads?
If you have important batch jobs that shouldn't disrupt existing services, yes. This new priority class allows high-priority pods to wait for resources without preempting (evicting) lower-priority pods, which is great for cluster stability.

Can I use volume snapshots with any storage provider?
Only if your Container Storage Interface (CSI) driver supports the snapshot functionality. You'll need to check your specific driver's documentation and ensure you have the appropriate snapshot controller deployed in your cluster.

Why would I use the EndpointSlice mirroring controller?
If you have custom controllers or network policies that still work with the legacy Endpoints API, the mirroring controller helps you transition to EndpointSlices gradually. It ensures your new and old networking components see the same endpoint information during migration.

Releases In Branch 1.20

VersionRelease date
1.20.1519 Jan 2022
(4 years ago)
1.20.1415 Dec 2021
(4 years ago)
1.20.1317 Nov 2021
(4 years ago)
1.20.1227 Oct 2021
(4 years ago)
1.20.1115 Sep 2021
(4 years ago)
1.20.1011 Aug 2021
(4 years ago)
1.20.915 Jul 2021
(4 years ago)
1.20.816 Jun 2021
(4 years ago)
1.20.712 May 2021
(5 years ago)
1.20.615 Apr 2021
(5 years ago)
1.20.518 Mar 2021
(5 years ago)
1.20.418 Feb 2021
(5 years ago)
1.20.317 Feb 2021
(5 years ago)
1.20.213 Jan 2021
(5 years ago)
1.20.118 Dec 2020
(5 years ago)
1.20.004 Dec 2020
(5 years ago)
1.20.0-rc.001 Dec 2020
(5 years ago)
1.20.0-beta.218 Nov 2020
(5 years ago)
1.20.0-beta.103 Nov 2020
(5 years ago)
1.20.0-beta.028 Oct 2020
(5 years ago)
1.20.0-alpha.320 Oct 2020
(5 years ago)
1.20.0-alpha.213 Oct 2020
(5 years ago)
1.20.0-alpha.122 Sep 2020
(5 years ago)