Upgrade planner
The Kubernetes API server must be upgraded one minor version at a time. Pick where you are and where you want to be: the planner lists every hop, every API that stops being served on the way, and the end-of-life date you are racing.
Every hop
| Hop | APIs removed (on by default) | Oldest kubelet allowed after |
|---|---|---|
| 1.36 → 1.37 | none | 1.34 |
| 1.35 → 1.36 | none | 1.33 |
| 1.34 → 1.35 | none | 1.32 |
| 1.33 → 1.34 | none | 1.31 |
| 1.32 → 1.33 | none | 1.30 |
| 1.31 → 1.32 | 2 FlowSchema, PriorityLevelConfiguration | 1.29 |
| 1.30 → 1.31 | none | 1.28 |
| 1.29 → 1.30 | none | 1.27 |
| 1.28 → 1.29 | 2 FlowSchema, PriorityLevelConfiguration | 1.26 |
| 1.27 → 1.28 | none | 1.25 |
| 1.26 → 1.27 | 1 CSIStorageCapacity | 1.25 |
| 1.25 → 1.26 | 3 HorizontalPodAutoscaler, FlowSchema, PriorityLevelConfiguration | 1.24 |
| 1.24 → 1.25 | 8 HorizontalPodAutoscaler, CronJob, EndpointSlice, Event, RuntimeClass, Eviction, PodDisruptionBudget, PodSecurityPolicy | 1.23 |
| 1.23 → 1.24 | none | 1.22 |
| 1.22 → 1.23 | none | 1.21 |
| 1.21 → 1.22 | 25 AdmissionReview, MutatingWebhookConfiguration, ValidatingWebhookConfiguration, ConversionReview, CustomResourceDefinition, APIService, TokenReview, LocalSubjectAccessReview, SelfSubjectAccessReview, SelfSubjectRulesReview, SubjectAccessReview, CertificateSigningRequest, Lease, Ingress, IngressClass, ClusterRole, ClusterRoleBinding, Role, RoleBinding, PriorityClass, CSIDriver, CSINode, StorageClass, VolumeAttachment | 1.20 |
| 1.20 → 1.21 | none | 1.19 |
| 1.19 → 1.20 | none | 1.18 |
| 1.18 → 1.19 | none | 1.17 |
| 1.17 → 1.18 | none | 1.16 |
| 1.16 → 1.17 | none | 1.15 |
Rules of the road
- Upgrade kube-apiserver first, then the controller manager and scheduler, then kubelets and kube-proxy. kubectl can be one minor ahead of or behind the API server.
- Do not skip minor versions on the API server, even in a single-instance cluster: the project's API deprecation and API change policies assume every minor version runs in turn.
- Nodes may lag by up to three minors (two for kubelets older than 1.25), so a cluster can upgrade its control plane several times between node rollouts. Details on version skew.
- Fix removed APIs before the hop that removes them. For every removal so far, a replacement version was already served at least one release earlier, so you can switch while still on the old version.