

# Best Practices for Cluster Version Rollback
<a name="rollback-cluster-upgrades"></a>

With Amazon Elastic Kubernetes Service (Amazon EKS) version rollback, you can revert your cluster’s Kubernetes control plane to the previous minor version within 7 days of an in-place upgrade. This page describes best practices for planning, executing, and operationalizing rollback as part of your upgrade workflow.

For prerequisite details, step-by-step procedures, and API reference, see [Rollback cluster to previous Kubernetes version](https://docs.aws.amazon.com/eks/latest/userguide/rollback-cluster.html).

## Understand how the shared responsibility model applies to rollback
<a name="understand-how-the-shared-responsibility-model-applies-to-rollback"></a>

When you initiate a cluster version rollback, Amazon EKS manages rolling back the control plane. You are responsible for the data plane, add-ons, and application compatibility. The following outlines responsibilities:
+  **Amazon EKS manages:** Rolling back the Kubernetes API server and control plane components. For Auto Mode clusters, Amazon EKS also manages rolling back worker nodes.
+  **You are responsible for:** Rolling back Managed Node Groups, self-managed nodes, and hybrid nodes. You must also validate add-on compatibility and ensure your applications, custom controllers, and third-party tools work correctly with the previous version.

For more information about the shared responsibility model for upgrades, see [Understand how the shared responsibility model applies to cluster upgrades](cluster-upgrades.md).

## Plan upgrades with rollback in mind
<a name="plan-upgrades-with-rollback-in-mind"></a>

Version rollback works best when your upgrade workflow is designed to keep the rollback window open.
+  **Separate control plane and data plane upgrades (non-Auto Mode clusters).** For clusters that use Managed Node Groups or self-managed nodes, consider upgrading the control plane first and allowing a bake period before upgrading worker nodes. While nodes remain on N-1, the kubelet version skew insight stays in PASSING status. This keeps the rollback path clear without needing to roll back nodes first.
+  **Upgrade add-ons to cross-compatible versions.** Before upgrading the control plane, ensure all add-ons (managed and self-managed) are compatible with both the current and target Kubernetes versions. This keeps the add-on compatibility insight clear for both upgrade and rollback.
  + Use Amazon EKS managed add-ons to benefit from rollback readiness insights that automatically check add-on version compatibility.
  + Avoid self-managing a managed add-on (for example, overriding the version outside of the EKS add-on lifecycle). During rollback, insights treat the managed add-on configuration as the source of truth and will not detect version drift you introduced.
+  **Avoid using version-specific APIs during the bake period.** If you create resources that use APIs or features available only in the new version during the 7-day window, you must remove them before rolling back. Limit adoption of new-version-only APIs until you are confident the upgrade is stable.
+  **Upgrade sooner, not later.** With rollback available, you can confidently upgrade shortly after a new version release rather than waiting until extended support deadlines. Upgrading earlier gives you more time to validate and reduces extended support charges.
+  **Be aware of extended support rollback restrictions.** If your cluster was automatically upgraded at the end of extended support, you can’t roll back to the previous version. If you were auto-upgraded at the end of standard support, you can roll back, but you must first change the upgrade policy to `EXTENDED`.

For general upgrade planning guidance including deprecation policies, release notes, and add-on compatibility, see [Best Practices for Cluster Upgrades](cluster-upgrades.md).

## Review rollback readiness insights before rolling back
<a name="review-rollback-readiness-insights-before-rolling-back"></a>

Amazon EKS surfaces point-in-time rollback readiness insights under the `ROLLBACK_READINESS` category in cluster insights. These checks are your primary tool for assessing rollback safety.
+  **Review insights immediately after upgrading.** Don’t wait until something goes wrong. After upgrading, check rollback readiness insights so you know your current rollback posture.
+  **Address ERROR insights proactively.** If insights show ERROR status shortly after an upgrade, resolve them early while the 7-day window is still open. The longer you wait, the more likely your cluster state diverges and new blockers appear.
+  **Understand what insights do and don’t cover.** Insights check Amazon EKS managed add-on versions, API usage, version skew, and cluster health. They don’t check self-managed add-ons, custom controllers, or application-level compatibility. Maintain your own compatibility validation for self-managed add-ons (for example, cluster-autoscaler, ingress controllers, custom operators, monitoring agents).

For the full list of insight checks and status behavior, see [Rollback cluster to previous Kubernetes version](https://docs.aws.amazon.com/eks/latest/userguide/rollback-cluster.html).

## Prepare non-Auto Mode nodes for rollback
<a name="prepare-non-auto-mode-nodes-for-rollback"></a>

For clusters that use Managed Node Groups, self-managed nodes, or AWS Fargate, you are responsible for ensuring worker nodes are compatible with the target rollback version.
+  **Managed Node Groups.** You must roll back your managed node groups to the previous version before rolling back the control plane. Use the `UpdateNodegroupVersion` operation with the previous Kubernetes version. The rollback respects your configured update settings (`maxUnavailable`, update strategy).
+  **Self-managed and hybrid nodes.** Update your node AMIs or configurations to use the previous Kubernetes version before rolling back the control plane.
+  **Fargate.** Version rollback is not supported for Fargate worker nodes. Delete Fargate pods running the same version as the control plane before initiating rollback, or use `--force` to bypass the version skew insight (which might result in unexpected behavior until pods are replaced).

For PodDisruptionBudget and topology spread configuration guidance to ensure workload availability during node updates, see [Best Practices for Cluster Upgrades](cluster-upgrades.md).

## Manage Amazon EKS Auto Mode disruption controls for rollback
<a name="manage-amazon-eks-auto-mode-disruption-controls-for-rollback"></a>

For clusters running Amazon EKS Auto Mode, the node rollback phase can be the longest part of the operation. Your disruption controls directly determine how fast rollback completes.
+  **Review disruption budgets before initiating rollback.** Amazon EKS provides rollback readiness insights for NodePool disruption budgets. Budgets set to 0 trigger an ERROR insight, which blocks rollback indefinitely. Restrictive budgets and PodDisruptionBudgets (PDBs) trigger WARNING insights, which can slow rollback but allow forward progress. Address ERROR insights before initiating rollback.
+  **Be prepared to adjust budgets during rollback.** If rollback is taking longer than expected, you can adjust NodePool disruption budgets and PDBs through `kubectl` while rollback is in progress. Increasing the budget allows more concurrent node replacements.
+  **Remove do-not-disrupt annotations from blocking nodes.** The `karpenter.sh/do-not-disrupt` annotation on nodes blocks rollback indefinitely. Remove it from nodes that should be replaced.
+  **Track node rollback progress.** Use `kubectl get nodes -l karpenter.sh/nodepool=<nodepool-name> -o wide` to monitor which nodes have been replaced with the previous version AMI.
+  **Use CancelUpdate if needed.** If rollback is taking too long or causing more issues than it solves, cancel the rollback. After cancellation, nodes converge back to the current version and you can take a different approach.
+  **Set an appropriate timeout.** Use the `timeoutMinutes` parameter in `rollbackConfig` to align with your operational expectations. The default is 720 minutes (12 hours). For clusters with conservative budgets, consider increasing it. For IaC-managed clusters, align with your tool’s timeout.

For complete Auto Mode rollback procedures and the `CancelUpdate` operation, see [Roll back Amazon EKS Auto Mode clusters](https://docs.aws.amazon.com/eks/latest/userguide/rollback-automode-nodes.html).

## Monitor rollback progress
<a name="monitor-rollback-progress"></a>

During a rollback, use the following to track status and detect issues:
+  **DescribeUpdate operation.** Use `describe-update` to check the current status of the rollback operation (`InProgress`, `Successful`, `Failed`, `Cancelled`). To track cancellation progress, check the `cancellation` object in the response.
+  **Cluster insights.** Amazon EKS re-checks insights before proceeding with the control plane rollback (after node rollback completes for Auto Mode). Monitor for new ERROR insights that might have appeared.
+  **Cluster status.** For Auto Mode clusters, the cluster status remains `ACTIVE` during node rollback and changes to `UPDATING` only during control plane rollback. Don’t rely solely on cluster status to know a rollback is in progress—use `DescribeUpdate`.
+  **Node versions.** For Auto Mode, check node Kubernetes versions to track node replacement progress. For Managed Node Groups, monitor the node group update status.

## Handle infrastructure as code (IaC)-managed clusters
<a name="handle-infrastructure-as-code-iac-managed-clusters"></a>

Infrastructure as code (IaC) tools have timeout limitations that might conflict with Auto Mode rollback duration.
+  **AWS CloudFormation** supports up to 36 hours per resource. If the rollback exceeds this, CloudFormation treats it as a no-op, which can leave the cluster in a drifted state where the template does not reflect the actual cluster version. The default rollback timeout is 720 minutes (12 hours).
+  **Terraform Enterprise/Cloud** has approximately 24-hour timeouts, though client-side timeouts vary.
+  **Align `timeoutMinutes` with your IaC tool’s timeout** to prevent the IaC tool from timing out before Amazon EKS completes the rollback.
+  **Consider initiating rollback through CLI/API for Auto Mode clusters with restrictive budgets**, rather than through IaC. Use `CancelUpdate` directly if the IaC layer times out.
+  **AWS CloudFormation stack rollback does not trigger version rollback.** If an AWS CloudFormation stack update fails, the automatic stack revert to a previous template version does not initiate a cluster version rollback. You must explicitly initiate a version rollback.

## Use rollback as a safety net, not a routine workflow
<a name="use-rollback-as-a-safety-net-not-a-routine-workflow"></a>

Version rollback is designed to help you recover from post-upgrade issues. It works best when combined with your existing upgrade practices.
+  **Rollback complements testing, it does not replace it.** Continue using cluster insights, pre-upgrade testing in non-production environments, and staged rollouts. Rollback handles the cases that testing can’t catch—the issues that only surface in production.
+  **Rollback reduces the need for manual backup and snapshot procedures as your primary safety mechanism.** With native rollback available, you no longer need to rely solely on etcd snapshots or custom rollback scripts for disaster recovery during upgrades.
+  **Insights are best-effort and point-in-time.** Amazon EKS evaluates them when you trigger rollback. Changes made after that check (for example, creating resources with new APIs) are not captured and might cause issues after rollback completes.
+  **Rollback does not guarantee application recovery.** Amazon EKS reverts the control plane safely, but your applications, configurations, and dependencies are your responsibility to validate against the previous version.

## Rollback reduces the need for blue-green upgrades
<a name="rollback-reduces-the-need-for-blue-green-upgrades"></a>

Organizations that previously used blue-green cluster upgrades primarily to have a "revert path" can now consider in-place upgrades with version rollback as an alternative. In-place upgrades with rollback offer lower infrastructure cost (no duplicate clusters), consistent cluster identity (same API endpoint, OpenID Connect (OIDC) provider, and elastic network interfaces (ENIs)), and simpler operations.

Blue-green might still be preferred when you need to change multiple versions at once, test workload migrations extensively, or maintain full traffic isolation during validation. For more information, see [Evaluate Blue/Green Clusters](cluster-upgrades.md) in the cluster upgrades best practices.

## Related resources
<a name="related-resources"></a>
+  [Rollback cluster to previous Kubernetes version](https://docs.aws.amazon.com/eks/latest/userguide/rollback-cluster.html) 
+  [Roll back Amazon EKS Auto Mode clusters](https://docs.aws.amazon.com/eks/latest/userguide/rollback-automode-nodes.html) 
+  [Best Practices for Cluster Upgrades](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html) 
+  [Cluster insights](https://docs.aws.amazon.com/eks/latest/userguide/cluster-insights.html) 
+  [Kubernetes version lifecycle on EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) 