EKS Cluster Upgrades

Kubernetes ships a new minor version roughly every four months, and EKS supports each one for a limited time. Upgrading is therefore a recurring operational task, and teams that treat it as routine have a very different experience from those that upgrade only when a deadline arrives.

Notes in this section

  • Upgrade Process — the step-by-step procedure: pre-flight checks, control plane, add-ons, nodes, validation, and in-place versus blue-green.
  • Upgrade Journey Series — what actually changes between versions, the patterns that repeat, and community write-ups of real upgrades.

The support lifecycle

PhaseDurationWhat it means
Standard supportAbout 14 monthsNormal control-plane price; patches and security fixes
Extended supportA further 12 monthsThe same fixes, at a control-plane price several times higher
End of support—AWS upgrades the control plane automatically to the oldest supported version

A cluster enters extended support automatically unless its upgrade policy is set to STANDARD. The cost difference is per cluster per hour, and it adds up across a fleet. The forced upgrade at the end is the worst outcome: it happens on AWS’s schedule, with your workloads untested against the new version.

What an upgrade consists of

control plane  ──►  add-ons  ──►  nodes  ──►  your workloads' manifests
 (AWS does it,      (you: CNI,    (you, or    (you: removed APIs,
  you trigger)       DNS, CSI,     Auto Mode)   changed defaults)
                     controllers)
PartWhoRisk
Control planeAWS performs, you triggerLow during the upgrade itself; cannot be rolled back
EKS add-onsYouMedium: version compatibility, configuration overwritten
Third-party controllersYouOften the real blocker — check support for the target version
NodesYou, or automatic with Auto ModeWhere workload disruption actually occurs
Workload manifestsYouRemoved APIs break the next deployment, not the running pods

Three rules shape every plan: one minor version at a time, control plane before nodes, and no rollback of the control plane.

Principles

  1. Upgrade on a schedule, a few weeks after each version becomes available on EKS — not when support is ending.
  2. Stay within one or two versions of current. Each version you skip adds its own hazards, and they must still be crossed one at a time.
  3. Rehearse in an environment that resembles production, with the same add-ons.
  4. Use cluster insights and scan your manifests for removed APIs before every upgrade.
  5. Keep add-ons current between upgrades, so that each cluster upgrade is a small step.
  6. Make workloads disruption-tolerant: multiple replicas, PodDisruptionBudgets, graceful shutdown. That is what makes node rollouts uneventful.
  7. Have the cluster defined as code, so a blue-green upgrade — and disaster recovery — is possible.

How the compute model changes the work

ComputeNode upgrade effort
Auto ModeNone: nodes are replaced automatically
KarpenterUpdate the pinned AMI; drift replaces nodes within budgets
Managed node groupsOne command per group; a rolling replacement
FargateRestart pods to pick up the new version
Self-managed nodesEntirely yours