cluster.ninja

Upgrade hop

Kubernetes 1.33 → 1.34

1.33End of lifeEOL 28 Jun 2026 1.34End of lifeEOL 27 Oct 2026

1.34 is itself end of life. If you are on 1.33 today, plan the whole path to a supported version (at least 1.35) with the upgrade planner.

1 · Fix removed APIs first

Only alpha or off-by-default beta versions are removed in this hop.

KindAPI versionStops being servedUse instead
ValidatingAdmissionPolicy admissionregistration.k8s.io/v1beta1 beta · off by default 1.34 admissionregistration.k8s.io/v1
ValidatingAdmissionPolicyBinding admissionregistration.k8s.io/v1beta1 beta · off by default 1.34 admissionregistration.k8s.io/v1

Check your files with the manifest checker; in a live cluster, the API server metric apiserver_requested_deprecated_apis shows which deprecated APIs clients still call.

2 · Other changes that can bite

Deprecated in 1.34

  • The kubelet cgroupDriver config setting is deprecated (the --cgroup-driver flag already was); rely on automatic detection from the CRI. Removal will not happen before v1.36.
  • Early warning: v1.35 will be the last release supporting containerd 1.x. Plan a move to 2.0+; the kubelet_cri_losing_support metric flags affected nodes.
  • Service trafficDistribution value PreferClose is deprecated; PreferSameZone is its clearer alias, and PreferSameNode adds node-local preference.

Our summary of the 1.34 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.31 or newer if any are older: a 1.34 API server supports kubelets back to 1.31 only. Upgrade to the newest 1.33 patch, 1.33.13.
  2. kube-apiserver to 1.34 (in HA clusters, one instance at a time; old and new may differ by one minor during the roll). Use the newest patch, 1.34.13.
  3. kube-controller-manager, kube-scheduler, cloud-controller-manager to 1.34, once every API server is on 1.34.
  4. kubelet on each node (drain first). Optional in this hop: kubelets from 1.31 to 1.34 all work with a 1.34 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.33 to 1.35 all talk to a 1.34 API server.

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