What's new in Kubernetes, and what I'm upgrading for
The release notes are long. These are the changes that matter for day-to-day work.
The release notes are long. These are the changes that matter for day-to-day work.

Kubernetes releases a new minor version roughly three times a year. Every release comes with a long changelog, a blog post full of enhancement numbers, and a list of features moving from alpha to beta to stable. It's easy to skim it and move on.
But a few changes in each release really do affect how we run clusters. And some of them, the removals, can break things on upgrade day. Here's how I read a release, and the recent changes I think matter most.
I look at four things, in this order:
Over the last few releases, several long-awaited features have become stable. These are the ones I see making a real difference:
Native sidecar containers. Sidecars (log shippers, proxies, agents) used to be ordinary containers with no guaranteed start or stop order. Now you can declare them as init containers with restartPolicy: Always: they start before the main container and stop after it. That fixes a whole family of annoying bugs, like jobs that never finish because the sidecar keeps running.
In-place Pod resource resize. You can change a running pod's CPU and memory requests and limits without restarting it. Great for workloads that need more resources at startup, or for vertical autoscaling without disruption.
Dynamic Resource Allocation (DRA). A flexible way to request specialised hardware, especially GPUs, with more detail than a simple count. Important for anyone running AI workloads.
Gateway API maturity. Not part of core Kubernetes releases, but tied to them in practice. With ingress-nginx retired, Gateway API is now the default way to get traffic into a cluster. I wrote about that migration in Goodbye ingress-nginx, hello Gateway API.
Removal of old foundations. The move away from cgroup v1 and older container runtime versions has continued. If your nodes run an old Linux distribution or an old containerd, check the release notes carefully before upgrading.
A Kubernetes upgrade rarely breaks because of new features. It breaks because of the old thing you forgot you were still using.
Whatever the release, my routine is the same:
pluto detect-all-in-cluster
pluto detect-files -d ./manifests
Each Kubernetes minor version gets about a year of patch support upstream. Managed services like EKS, AKS and GKE have their own windows, and some charge extra for extended support of old versions.
My rule: stay within one or two versions of the latest. Upgrading regularly in small steps is much less painful than a big jump every two years, when everything is deprecated at once.
Usually yes, once the first patch release (x.y.1 or x.y.2) is out and your managed provider supports it. Stable features like native sidecars and in-place resize are worth having, and staying current means security fixes keep coming.
My take: read the removals first, test on a cluster you don't love, and upgrade often enough that it never becomes a project.
— Desly