cluster.ninja

Version skew: which components may differ

A cluster rarely runs one version everywhere. The official skew policy says how far each component may be from kube-apiserver. Pick your API server version:

The rules

ComponentAllowed versions, relative to kube-apiserver
kube-apiserver (HA)Newest and oldest instances within one minor of each other.
kubeletNever newer. Up to three minors older; a kubelet older than 1.25 only up to two.
kube-proxyNever newer than kube-apiserver; up to three minors older (two for kube-proxy older than 1.25); and within three minors of the kubelet beside it, either way.
kube-controller-manager, kube-scheduler, cloud-controller-managerNever newer; the same minor or one older.
kubectlOne minor older, the same, or one newer.

Rules restated from the official Version Skew Policy; checked against the current text on every build (all 7 key sentences still match). With HA API servers on two minors, every limit is measured from the older one.

Table for current versions

kube-apiserverkubelet / kube-proxycontroller-manager, schedulerkubectl
1.371.34 – 1.371.36 – 1.371.36 – 1.38
1.361.33 – 1.361.35 – 1.361.35 – 1.37
1.351.32 – 1.351.34 – 1.351.34 – 1.36
1.341.31 – 1.341.33 – 1.341.33 – 1.35
1.331.30 – 1.331.32 – 1.331.32 – 1.34
1.321.29 – 1.321.31 – 1.321.31 – 1.33

Why it matters