theforbiz
EN

Cloud & Kubernetes

How to Upgrade Amazon EKS Safely: A Practical Runbook

Plan an Amazon EKS Kubernetes upgrade with readiness checks, staged control-plane and node updates, add-on validation, testing, and rollback steps.

Cloud operations team reviewing an Amazon EKS Kubernetes version upgrade plan on a monitoring wall

A safe Amazon EKS upgrade is a staged change, not a single control-plane command. First verify the target version, deprecated API usage, node and add-on compatibility, disruption budgets, backups, and application tests. Then upgrade one Kubernetes minor version at a time: control plane first, data plane next, followed by EKS add-ons, controllers, and clients. Observe the cluster between stages and keep a tested rollback decision ready.

Amazon EKS now allows an eligible in-place control-plane upgrade to be rolled back to the previous minor version within seven days. That is a useful safety net, but it does not automatically reverse managed node groups, self-managed nodes, or EKS add-ons. Teams still need a deliberate upgrade and rollback runbook.

KEY TAKEAWAYS

What you need to know

  • Upgrade only one Kubernetes minor version at a time and treat every step as a separate production change.
  • Use EKS upgrade insights, API-deprecation checks, workload tests, and a component inventory before touching the control plane.
  • Bring managed nodes, add-ons, controllers, and kubectl into a supported version relationship after the control-plane update.
  • Test availability with real disruption scenarios; a passing deployment does not prove that pods can drain safely.
  • Use the seven-day EKS rollback window as a contingency, not as a substitute for backups, validation, or a recovery plan.
01

What is the safe order for an Amazon EKS upgrade?

The practical order is readiness review, control plane, worker nodes, EKS add-ons, workload controllers, and client tools. AWS recommends bringing nodes to the same minor version as the existing control plane before advancing the control plane again. After the control-plane update succeeds, update the data plane and the components that depend on the Kubernetes API.

This order matters because the control plane, kubelet, kube-proxy, add-ons, autoscalers, admission webhooks, and command-line clients do not all have the same compatibility rules. A cluster can report ACTIVE while an application, webhook, or controller is still incompatible with the new API behavior.

A controlled EKS upgrade sequence
StagePrimary taskEvidence to continue
1. PrepareReview lifecycle, insights, APIs, add-ons, nodes, quotas, backups, and testsNamed owner, approved target, clean or accepted findings
2. Control planeUpgrade to the next minor versionUpdate status Successful and API health stable
3. Data planeRoll managed, self-managed, hybrid, or Fargate workloads as applicableNodes Ready and workloads available
4. ComponentsUpdate VPC CNI, CoreDNS, kube-proxy, controllers, and clientsCompatibility and functional checks pass
5. ObserveMonitor service indicators and rollback readinessNo unresolved regression or capacity risk
02

Start with the EKS version lifecycle and business deadline

Amazon EKS provides standard support for a Kubernetes minor version for 14 months after that version is released in EKS, followed by 12 months of extended support. A cluster that reaches the end of its 26-month lifecycle is automatically upgraded. Extended support can provide planning time, but it is not a permanent alternative to maintaining an upgrade path.

Record the current control-plane version, node versions, support status, target version, required intermediate versions, and the date by which the change must complete. If a cluster is several releases behind, plan multiple sequential maintenance events. EKS and upstream Kubernetes do not support skipping minor versions for a control-plane upgrade.

Avoid selecting a target only because it is the newest available version. Check application dependencies, EKS add-on compatibility, controller release notes, and organizational change windows. The right target is a supported version that the complete platform can operate on and the team can validate.

03

Build a pre-upgrade inventory and test plan

A useful inventory connects every cluster component to an owner, version, source, target, and validation method. Include managed and self-managed node groups, Fargate profiles, EKS add-ons, CSI drivers, ingress controllers, autoscalers, policy engines, service meshes, observability agents, admission webhooks, custom resource definitions, operators, and deployment tooling.

Review Kubernetes release notes and the deprecated API migration guide for every minor version in the path. Search manifests and Helm output, but also check what the API server has actually observed. Static files may miss resources produced by an operator or old API calls made by a controller.

Test the application against the target version before production. Cover startup, scaling, service discovery, ingress, storage attachment, DNS, secrets, scheduled jobs, observability, admission, and failure recovery. Tie each check to a measurable result rather than a broad statement that the environment looks healthy.

  • Confirm that production manifests no longer depend on APIs removed in the target release.
  • Check IP, EC2, load balancer, and volume quotas for temporary upgrade capacity.
  • Verify that PodDisruptionBudgets allow planned node drains while preserving the required replicas.
  • Confirm backup coverage for Kubernetes state and persistent application data, then document restoration ownership.
  • Freeze unrelated platform changes during the upgrade and observation window.
04

Use EKS upgrade insights, but verify beyond them

Amazon EKS cluster insights automatically checks clusters for issues that may affect a Kubernetes version upgrade. Upgrade insights can flag deprecated API usage, component version concerns, and other version-specific conditions. Review ERROR, WARNING, and UNKNOWN findings for the target version, resolve or explicitly accept each one, and refresh the insights after remediation.

Insights refresh automatically every 24 hours and can also be refreshed on demand. Deprecated API findings may reflect a rolling observation window, so a finding can remain visible after the last caller was fixed. Compare the finding, last refresh time, affected resource, and deployment history before deciding that it is stale.

A passing insight is not a complete application test. EKS-managed checks cannot validate every self-managed add-on, business transaction, custom controller, or workload-specific dependency. Treat insights as one readiness gate alongside release review, integration tests, canary evidence, and owner approval.

05

Upgrade the control plane one minor version at a time

Before the request, confirm that the cluster is ACTIVE, no other update is running, node versions are understood, and the readiness decision is recorded. EKS replaces API server nodes with nodes running the target version while maintaining a highly available managed control plane. The change still deserves a maintenance window because API clients and workloads can reveal incompatibilities after the update.

Submit the update through the console, AWS CLI, or eksctl. Do not start the next stage until the update reports Successful and the team has checked API responsiveness, system namespaces, admission webhooks, controllers, and critical application paths.

Control-plane update and status check
aws eks update-cluster-version \
  --name <cluster-name> \
  --kubernetes-version <next-minor-version> \
  --region <region>

aws eks describe-update \
  --name <cluster-name> \
  --region <region> \
  --update-id <update-id>
06

Roll the data plane without breaking availability

After the control plane is stable, update managed node groups to the target minor version. Configure a rolling strategy and a maximum unavailable count or percentage that the application can tolerate. Ensure the cluster has enough spare capacity and subnet addresses for replacement nodes before starting.

PodDisruptionBudgets help protect replicated workloads during voluntary disruption, but an overly strict budget can prevent nodes from draining and cause a managed node group update to fail. Do not use a forced update as the first fix. Determine whether the budget, replica count, topology, unhealthy pods, or capacity plan is wrong, then correct the operating condition.

Self-managed and hybrid nodes require their own image and rollout procedure. Existing Fargate pods are not automatically changed by the control-plane upgrade; newly launched pods use a kubelet version aligned with the cluster. Validate every data-plane type present rather than assuming one node-group result covers the whole cluster.

Data-plane checks during an EKS upgrade
CheckWhy it mattersExample evidence
CapacityReplacement nodes need room to launch before old nodes leaveReady nodes, free IPs, quota headroom
DisruptionDrains must preserve required application availabilityPDB status, replica health, drain events
SchedulingTaints, affinity, zones, and resources can strand podsPending-pod causes and scheduler events
Workload healthReady nodes do not prove the service worksSynthetic transactions and service indicators
07

Update add-ons, controllers, and clients deliberately

A control-plane upgrade does not automatically update EKS add-ons. Review compatible versions and update Amazon VPC CNI, CoreDNS, and kube-proxy as required. Preserve and test any supported custom configuration instead of assuming a default replacement is safe.

Match Cluster Autoscaler to the cluster's Kubernetes major and minor version. Check ingress controllers, CSI drivers, policy engines, service meshes, metrics components, operators, and admission webhooks against their maintainers' compatibility guidance. A controller that starts successfully can still use a removed API or mishandle a new field.

Keep kubectl within one minor version of the API server. Kubernetes permits kubelet and kube-proxy to be older within defined limits, but routinely leaving components at maximum skew creates upgrade debt. AWS recommends aligning nodes with the control plane as a best practice before the next control-plane advance.

08

Understand the seven-day EKS rollback window

For an eligible cluster upgraded in place, Amazon EKS can roll the control plane back to the previous minor version within seven days of the upgrade completing. The rollback preserves etcd data, workloads, services, and persistent volumes. Only one minor version can be reversed, and the previous version must remain supported under the applicable EKS policy.

The rollback is not a full environment rewind. EKS add-ons remain at their current versions. Managed node groups, self-managed nodes, and hybrid nodes must be made compatible with the previous control-plane version; Auto Mode handles its worker-node rollback automatically. Fargate also requires special attention because existing pods may carry a kubelet version that is too new for the rolled-back control plane.

Review rollback readiness insights before acting. ERROR or UNKNOWN findings block rollback unless a force option is used, while some prerequisites cannot be bypassed. Decide in advance who can authorize rollback, which service indicators trigger it, and how much of the seven-day window is reserved for validation rather than discussion.

What EKS control-plane rollback changes
AreaRolled back automatically?Team responsibility
EKS control planeYes, when eligibleInitiate, monitor, and validate
EKS Auto Mode nodesYesValidate disruption settings and workloads
Managed or self-managed nodesNoReturn nodes to a compatible version first
EKS and self-managed add-onsNoCheck and change versions separately
Application data and cluster statePreserved, not rewoundUse application backups for data recovery needs
09

A production runbook for the change window

A runbook should be short enough to use under pressure and specific enough that a second operator can verify each gate. Record timestamps, commands or console actions, update IDs, findings, owners, and the result of each service check. Stop when evidence is unclear; do not continue merely because the maintenance window is closing.

Before the window

Approve the target and intermediate versions, resolve upgrade insights, complete application tests, confirm backups, check temporary capacity, communicate the change, freeze unrelated work, and capture a baseline of service and cluster indicators.

During the window

Upgrade the control plane and wait for Successful status. Run API and application checks. Roll one node group or a small workload cohort first, observe it, and then continue. Update add-ons and controllers in the documented order, validating after each material change.

After the window

Confirm node and component versions, review events and error rates, test scaling and disruption, refresh cluster insights, verify backups and monitoring, and record the rollback deadline. Keep enhanced observation through the agreed period before closing the change.

  • Stop if the API is unstable, critical admission fails, capacity is insufficient, or service indicators breach the agreed threshold.
  • Do not advance another minor version until nodes, add-ons, controllers, and clients are ready for the next step.
  • Close the change only after the application owner—not only the platform dashboard—confirms expected behavior.
COMMON QUESTIONS

Frequently asked questions

Can Amazon EKS skip Kubernetes minor versions during an upgrade?

No. Upgrade the EKS control plane one minor version at a time. If a cluster is several versions behind, plan and validate each intermediate version separately.

Does an EKS control-plane upgrade update worker nodes and add-ons?

No. After the control-plane update, you must update or replace the applicable worker nodes and separately manage EKS add-ons, controllers, and client tools. EKS Auto Mode manages more of the data-plane lifecycle, but the workloads still require validation.

Can an EKS Kubernetes upgrade be rolled back?

An eligible in-place upgrade can be rolled back to the previous minor version within seven days. The rollback covers the control plane and, for Auto Mode, its nodes. Other nodes and add-ons require separate compatibility work.

Do passing EKS upgrade insights guarantee a safe upgrade?

No. Upgrade insights identify known cluster conditions, but they do not test every application path, self-managed component, controller, or business transaction. Use them with release review, integration tests, canaries, monitoring, and accountable approval.

Sources and further reading