Upgrade hop
Kubernetes 1.19 → 1.20
1.20 is itself end of life. If you are on 1.19 today, plan the whole path to a supported version (at least 1.35) with the upgrade planner.
1 · Fix removed APIs first
No API versions are removed between 1.19 and 1.20.
2 · Other changes that can bite
Deprecated in 1.20
- Dockershim, the CRI shim for Docker, is deprecated and will be removed in a later release.
- Calling kubectl alpha debug is deprecated in favour of kubectl debug and will be removed in a future release.
- The ExecProbeTimeout feature gate, which reverts the exec probe timeout fix, is temporary and will be locked and removed later.
Our summary of the 1.20 release announcement (CC BY 4.0). Read the full changelog for your components.
3 · Upgrade in this order
- Prepare. Move every node to 1.18 or newer if any are older: a 1.20 API server supports kubelets back to 1.18 only. Upgrade to the newest 1.19 patch,
1.19.16. - kube-apiserver to 1.20 (in HA clusters, one instance at a time; old and new may differ by one minor during the roll). Use the newest patch,
1.20.15. - kube-controller-manager, kube-scheduler, cloud-controller-manager to 1.20, once every API server is on 1.20.
- kubelet on each node (drain first). Optional in this hop: kubelets from 1.18 to 1.20 all work with a 1.20 control plane.
- kube-proxy: no newer than the API server, and within the same window as the kubelet it runs beside.
- kubectl: 1.19 to 1.21 all talk to a 1.20 API server.
From the official version skew policy. Managed services run the control-plane steps for you; node pools are still yours to schedule.