Skip to main content
Cloud DevOps Solutions
Get a quote Talk to an engineer

AWS EKS Consulting

An EKS Version Upgrade Runbook, Written and Executed for You

We write an upgrade runbook specific to your cluster and then execute it. It covers deprecated API scans, add-on compatibility, control plane and node upgrades in order, workload verification and rollback options, run first in non-production and then in production in a planned window.

Key takeaways

  • EKS versions have a finite supported window, and falling behind leads to forced upgrades or extended support charges.
  • Most upgrade problems come from removed APIs, add-on incompatibility and disruption budgets, all of which can be checked in advance.
  • The control plane upgrades first, then add-ons, then nodes, one minor version at a time.
  • Control plane upgrades cannot be rolled back, so the real safety net is testing and a node-level or blue-green strategy.
  • The runbook is a reusable document, so the next upgrade is faster.

Why upgrades get postponed, and why that hurts

Teams put off Kubernetes upgrades because the last one was stressful. Meanwhile the cluster version ages out of standard support, add-ons fall behind, deprecated APIs pile up in manifests and Helm charts, and the eventual jump becomes bigger and riskier. The cost of delay compounds.

This page describes the upgrade runbook and execution work in our AWS EKS consulting service. We also run focused EKS upgrade projects, and the add-on side is covered in detail in add-on management.

What a good upgrade looks like

  • It is boring: planned, rehearsed, completed in a known window.
  • Nothing is surprised by an API removal, because manifests were scanned first.
  • The order of operations is written down and followed.
  • Application teams know when it happens and what to watch.
  • Afterwards, the runbook is better than before.

The order of operations

EKS upgrades follow a fixed sequence:

  1. Pre-flight: check release notes, deprecated APIs, add-on compatibility, node and kubelet skew, and capacity.
  2. Control plane: upgrade through the EKS API. AWS replaces control plane instances while the endpoint stays available.
  3. Add-ons: move CoreDNS, kube-proxy, VPC CNI, EBS CSI and others to versions supported by the new release.
  4. Data plane: replace or update worker nodes so kubelets match the new version.
  5. Verify: run health checks and application tests, then confirm monitoring is clean.

Kubernetes tolerates a limited version difference between the control plane and nodes, which is why nodes can follow slightly later. Check the current skew policy for your version in the Kubernetes documentation instead of relying on memory.

Pre-flight: the checks that prevent incidents

Deprecated and removed APIs

Each Kubernetes release can remove API versions. A Helm chart or operator still using a removed one will fail to apply after the upgrade. We scan live objects and source repositories with tools such as Pluto or kubent, and use the EKS cluster insights feature, which reports upgrade readiness findings. Anything flagged is fixed before the upgrade, not after.

# scan Helm releases and manifests for deprecated APIs against a target version
pluto detect-helm -o wide --target-versions k8s=v1.31.0
pluto detect-files -d ./manifests --target-versions k8s=v1.31.0

# check which add-on versions are available for the target Kubernetes version
aws eks describe-addon-versions --kubernetes-version 1.31 \
  --query 'addons[].{name:addonName,latest:addonVersions[0].addonVersion}'

Workload safety

Rolling nodes only stays quiet if workloads can be drained. We look for single-replica deployments, PodDisruptionBudgets that block eviction entirely, pods without controllers and local storage. A PDB with minAvailable equal to the replica count means a drain never completes. We fix these before the window.

Third-party compatibility

Ingress controllers, service meshes, CSI drivers, policy engines and observability agents each publish a compatibility matrix. We list them all and upgrade those first if the target release needs a newer version.

Node rollout strategies

StrategyHowNotes
Managed node group updateRolling replacement of nodes with the new AMIControlled by update config, respects PDBs
Karpenter driftNew AMI triggers node replacement under disruption budgetsNeeds sensible budgets and consolidation settings
New node group, drain oldCreate parallel group, cordon and drain old nodesMore control, temporary extra cost
Blue-green clusterBuild a new cluster and move trafficHighest isolation and highest cost

For most clusters the managed node group rolling update or Karpenter drift is enough. Blue-green is worth considering for large version jumps, major CNI changes, or when business risk tolerance is very low. See blue-green deployment for the concept.

Rollback honestly

There is no downgrade for a control plane. A runbook that says “rollback: downgrade EKS” is wrong. Real options are limited to rolling back application releases, reverting add-on versions where supported, launching nodes on the previous AMI within skew limits, or failing traffic back to a previous cluster in a blue-green design. We write the actual options for your situation and test the ones that can be tested.

A worked example: a drain that never finishes

During a node rollout, one node sits in a draining state for far longer than the others. Checking the events shows an eviction being refused. The cause is a deployment with two replicas and a PodDisruptionBudget that requires two available, so no pod may ever be evicted. Nothing is broken, but the rollout cannot continue.

The fix is in the budget or the replica count. Raising the deployment to three replicas with a budget of two available lets one pod move at a time. We would find this in pre-flight by listing every budget whose allowed disruptions is zero, which is far cheaper than discovering it mid-window with stakeholders waiting.

Communication and timing

An upgrade is also a coordination task. The runbook names who approves, who executes, who watches dashboards and who talks to the business. We pick a window outside peak traffic, agree a stop point where we pause if checks fail, and send application teams a short note on what to watch. A clear stop condition matters more than speed.

Making upgrades routine

Running through Terraform keeps versions declared in code, so the upgrade is a reviewed pull request. See Terraform modules and state. Many teams then adopt a regular cadence, upgrading non-production soon after each release and production after a soak period. Automating pre-flight scans in CI turns surprises into failed builds, which pairs well with GitOps delivery.

Failure modes we plan for

  • Surprise API removals in old charts. Caught by scanning.
  • PDBs blocking drains and stalling the rollout.
  • Add-on mismatch leaving DNS or networking degraded.
  • IP exhaustion when surge nodes launch during rollout.
  • Monitoring blind spots, so a regression is noticed by customers first. We keep dashboards open from Prometheus and Grafana during the window.

Delivery and handover

You receive the runbook (steps, owners, timings, checks, rollback), the pre-flight report, and a written record of the executed upgrade. We run the upgrade with your team watching or participating, depending on what you want to learn. For ongoing care see managed DevOps.

How to tell it worked

Workloads are healthy and at expected replica counts, error rates and latency match the pre-upgrade baseline, no add-on is degraded, and the pre-flight scan for the next version is already clean. To plan your next upgrade, book a consultation.

Where this fits

This page is the EKS runbook. For the wider question of keeping every cluster inside its support window, see Kubernetes version upgrades and the free Kubernetes upgrade planner.

References

How we deliver it

  1. 01

    Pre-flight checks

    We scan for deprecated and removed APIs, review release notes and check add-on and tooling compatibility.

  2. 02

    Write the runbook

    Ordered steps, owners, timings, communication points, verification checks and a rollback path are documented.

  3. 03

    Rehearse in non-production

    The upgrade is run on a representative cluster to expose surprises and measure duration.

  4. 04

    Upgrade the control plane and add-ons

    The control plane is upgraded, then CoreDNS, kube-proxy, VPC CNI and other add-ons to supported versions.

  5. 05

    Roll the nodes

    Nodes are replaced through node group updates or Karpenter drift, respecting PodDisruptionBudgets.

  6. 06

    Verify and close out

    Health checks, application tests and monitoring confirm success, and the runbook is updated with lessons.

Tools and technologies

Amazon EKSeksctlTerraformkubectlPlutokubentAWS CLIKarpenterPrometheusArgo CDEKS cluster insights

Frequently asked questions

How often do EKS versions need upgrading?
Kubernetes releases a minor version several times a year, and EKS supports each for a limited period, with an extended support option at additional cost. Most teams plan to upgrade once or twice a year, stepping one minor version at a time rather than waiting until they are forced.
Can we skip EKS versions?
No. The control plane upgrades one minor version at a time. To jump several versions you perform each step in sequence, checking add-ons and APIs at every stage. We often batch these into one planned programme, but each hop is still validated.
Can an EKS control plane upgrade be rolled back?
No. Once the control plane is upgraded you cannot downgrade it. That is why testing, API deprecation checks and rehearsal matter, and why some teams choose a blue-green approach with a new cluster for risky jumps. Nodes can be rolled back by launching older compatible versions within skew limits.
Will there be downtime during an upgrade?
Usually not for well-built applications. The API server stays available through the control plane upgrade, though brief request errors are possible. Workload downtime depends on replicas, PodDisruptionBudgets and graceful shutdown. We confirm those before production and avoid single-replica deployments in the path.
In-place or blue-green cluster upgrade?
In-place is the normal approach and works well with good test coverage. Blue-green, building a new cluster and shifting traffic, suits large jumps, major network changes or very low risk tolerance, but costs more and needs care with state. We recommend by risk and budget.

Talk to an engineer about eks version upgrade runbook

Book a free 30-minute call. We review your current setup and tell you honestly whether and how we can help.

Written by Saddique Khan, DevOps / SRE / Cloud Consultant Engineer. Last updated 2026-10-08.