cluster.ninja

Upgrade hop

Kubernetes 1.27 → 1.28

1.27End of lifeEOL 16 Jul 2024 1.28End of lifeEOL 22 Oct 2024

1.28 is itself end of life. If you are on 1.27 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.27 and 1.28.

2 · Other changes that can bite

Removed in 1.28

  • The release removed CSI migration for GCE Persistent Disk (KEP-1488).

Deprecated in 1.28

  • The in-tree Ceph RBD volume plugin was deprecated.
  • The in-tree CephFS volume plugin was deprecated.

Our summary of the 1.28 release announcement (CC BY 4.0). Read the full changelog for your components.

3 · Upgrade in this order

  1. Prepare. Move every node to 1.25 or newer if any are older: a 1.28 API server supports kubelets back to 1.25 only. Upgrade to the newest 1.27 patch, 1.27.16.
  2. kube-apiserver to 1.28 (in HA clusters, one instance at a time; old and new may differ by one minor during the roll). Use the newest patch, 1.28.15.
  3. kube-controller-manager, kube-scheduler, cloud-controller-manager to 1.28, once every API server is on 1.28.
  4. kubelet on each node (drain first). Optional in this hop: kubelets from 1.25 to 1.28 all work with a 1.28 control plane.
  5. kube-proxy: no newer than the API server, and within the same window as the kubelet it runs beside.
  6. kubectl: 1.27 to 1.29 all talk to a 1.28 API server.

From the official version skew policy. Managed services run the control-plane steps for you; node pools are still yours to schedule.