Safeguard
Developer Tools•

How far can kubectl be behind the cluster before it breaks?

kubectl is supported within one minor version of the API server, older or newer. See skew rules for kubelet and kube-proxy and how to keep clients aligned.

Safeguard Security Team
3 min read

The Kubernetes version skew policy supports kubectl within one minor version, older or newer, of kube-apiserver. If the cluster is at 1.37, kubectl 1.36, 1.37 and 1.38 are supported. Outside that window it may still work, but it is not supported, so update the client when you upgrade the cluster.

The documented rules

From the Kubernetes version skew policy:

ComponentSupported skew relative to kube-apiserver
kubectlWithin one minor version, older or newer
kubeletNot newer; up to three minor versions older
kube-proxyNot newer; up to three minor versions older

For kubelet and kube-proxy, versions below 1.25 may be only two minor versions older. kube-proxy may also be up to three minor versions older or newer than the kubelet it runs next to.

When there are several API servers at different versions, such as during an upgrade, the kubectl rule is applied across them. With API servers at 1.37 and 1.36, kubectl 1.37 and 1.36 are supported.

Why developer machines are the weak spot

Cluster upgrades are planned events. Laptops and CI images are not. A kubectl installed two years ago and baked into a pipeline image is easy to forget, and then the cluster moves two minors ahead.

The result is odd behavior: missing fields, deprecated API versions in manifests, or commands that quietly do less than expected. The failure is rarely dramatic, which is why it lingers.

How long does a cluster version get patches

The same page says the project maintains release branches for the most recent three minor releases, currently 1.37, 1.36 and 1.35. For Kubernetes 1.19 and newer, the page says each gets approximately one year of patch support. A cluster two or three minors behind is close to the end of that road.

A routine that keeps clients aligned

  1. Make a list of every place kubectl lives: laptops, CI images, build agents, jump hosts.
  2. Run kubectl version in CI and fail the job if client and server differ by more than one minor.
  3. Upgrade the cluster, then upgrade the client images the same week.
  4. Keep manifests free of deprecated API versions by checking before each cluster upgrade.
  5. Pin the kubectl version in pipeline images and bump it with the cluster.

The upgrade order for control plane components matters too. The skew page lists kube-apiserver first, then the controllers and scheduler, then kubelet and kube-proxy.

Safeguard can scan container images used in your pipelines, including tooling images, for known issues. Try a free scan at gold.safeguard.sh/scan.

Common mistakes

The common ones are baking kubectl into an image once and never rebuilding it, upgrading the cluster without telling the teams who own pipelines, and assuming a command that still runs is a command that still works as intended.

Try it yourself

Click through it at your own pace, or open it full screen.

Open the scan results and look at how an image's installed tool versions are listed, which is where an old kubectl would show up.

Quick check

Can kubectl be newer than the cluster?

Yes, by one minor version. The policy supports kubectl one minor older or newer than kube-apiserver.

Can kubelet be newer than the API server?

No. The policy says kubelet must not be newer than kube-apiserver.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.