Update a managed node group for your cluster
When you initiate a managed node group update, Amazon EKS automatically updates your nodes for you, completing the steps listed in Understand each phase of node updates. If you’re using an Amazon EKS optimized AMI, Amazon EKS automatically applies the latest security patches and operating system updates to your nodes as part of the latest AMI release version.
There are several scenarios where it’s useful to update your Amazon EKS managed node group’s version or configuration:
-
You have updated the Kubernetes version for your Amazon EKS cluster and want to update your nodes to use the same Kubernetes version.
-
A new AMI release version is available for your managed node group. For more information about AMI versions, see these sections:
-
You want to adjust the minimum, maximum, or desired count of the instances in your managed node group.
-
You want to add or remove Kubernetes labels from the instances in your managed node group.
-
You want to add or remove AWS tags from your managed node group.
-
You need to deploy a new version of a launch template with configuration changes, such as an updated custom AMI.
-
You have deployed version
1.9.0
or later of the Amazon VPC CNI add-on, enabled the add-on for prefix delegation, and want new AWS Nitro System instances in a node group to support a significantly increased number of Pods. For more information, see Assign more IP addresses to Amazon EKS nodes with prefixes. -
You have enabled IP prefix delegation for Windows nodes and want new AWS Nitro System instances in a node group to support a significantly increased number of Pods. For more information, see Assign more IP addresses to Amazon EKS nodes with prefixes.
If there’s a newer AMI release version for your managed node group’s Kubernetes version, you can update your node group’s version to use the newer AMI version. Similarly, if your cluster is running a Kubernetes version that’s newer than your node group, you can update the node group to use the latest AMI release version to match your cluster’s Kubernetes version.
When a node in a managed node group is terminated due to a scaling operation or update, the Pods in that node are drained first. For more information, see Understand each phase of node updates.
Update a node group version
You can update a node group version with either of the following:
The version that you update to can’t be greater than the control plane’s version.
eksctl
Update a managed node group using eksctl
Update a managed node group to the latest AMI release of the same Kubernetes version that’s currently deployed on the nodes with the following command. Replace every example value
with your own values.
eksctl upgrade nodegroup \ --name=node-group-name \ --cluster=my-cluster \ --region=region-code
Note
If you’re upgrading a node group that’s deployed with a launch template to a new launch template version, add --launch-template-version [.replaceable]`version-number`
to the preceding command. The launch template must meet the requirements described in Customize managed nodes with launch templates. If the launch template includes a custom AMI, the AMI must meet the requirements in Specifying an AMI. When you upgrade your node group to a newer version of your launch template, every node is recycled to match the new configuration of the launch template version that’s specified.
You can’t directly upgrade a node group that’s deployed without a launch template to a new launch template version. Instead, you must deploy a new node group using the launch template to update the node group to a new launch template version.
You can upgrade a node group to the same version as the control plane’s Kubernetes version. For example, if you have a cluster running Kubernetes
1.29
, you can upgrade nodes currently running Kubernetes
1.28
to version 1.29
with the following command.
eksctl upgrade nodegroup \ --name=node-group-name \ --cluster=my-cluster \ --region=region-code \ --kubernetes-version=1.29
AWS Management Console
Update a managed node group using the AWS Management Console
-
Open the Amazon EKS console
. -
Choose the cluster that contains the node group to update.
-
If at least one node group has an available update, a box appears at the top of the page notifying you of the available update. If you select the Compute tab, you’ll see Update now in the AMI release version column in the Node groups table for the node group that has an available update. To update the node group, choose Update now.
You won’t see a notification for node groups that were deployed with a custom AMI. If your nodes are deployed with a custom AMI, complete the following steps to deploy a new updated custom AMI.
-
Create a new version of your AMI.
-
Create a new launch template version with the new AMI ID.
-
Upgrade the nodes to the new version of the launch template.
-
-
On the Update node group version dialog box, activate or deactivate the following options:
-
Update node group version – This option is unavailable if you deployed a custom AMI or your Amazon EKS optimized AMI is currently on the latest version for your cluster.
-
Change launch template version – This option is unavailable if the node group is deployed without a custom launch template. You can only update the launch template version for a node group that has been deployed with a custom launch template. Select the Launch template version that you want to update the node group to. If your node group is configured with a custom AMI, then the version that you select must also specify an AMI. When you upgrade to a newer version of your launch template, every node is recycled to match the new configuration of the launch template version specified.
-
-
For Update strategy, select one of the following options:
-
Rolling update – This option respects the Pod disruption budgets for your cluster. Updates fail if there’s a Pod disruption budget issue that causes Amazon EKS to be unable to gracefully drain the Pods that are running on this node group.
-
Force update – This option doesn’t respect Pod disruption budgets. Updates occur regardless of Pod disruption budget issues by forcing node restarts to occur.
-
-
Choose Update.
Edit a node group configuration
You can modify some of the configurations of a managed node group.
-
Open the Amazon EKS console
. -
Choose the cluster that contains the node group to edit.
-
Select the Compute tab.
-
Select the node group to edit, and then choose Edit.
-
(Optional) On the Edit node group page, do the following:
-
Edit the Node group scaling configuration.
-
Desired size – Specify the current number of nodes that the managed node group should maintain.
-
Minimum size – Specify the minimum number of nodes that the managed node group can scale in to.
-
Maximum size – Specify the maximum number of nodes that the managed node group can scale out to. For the maximum number of nodes supported in a node group, see View and manage Amazon EKS and Fargate service quotas.
-
-
(Optional) Add or remove Kubernetes labels to the nodes in your node group. The labels shown here are only the labels that you have applied with Amazon EKS. Other labels may exist on your nodes that aren’t shown here.
-
(Optional) Add or remove Kubernetes taints to the nodes in your node group. Added taints can have the effect of either
NoSchedule
,NoExecute
, orPreferNoSchedule
. For more information, see Prevent Pods from being scheduled on specific nodes. -
(Optional) Add or remove Tags from your node group resource. These tags are only applied to the Amazon EKS node group. They don’t propagate to other resources, such as subnets or Amazon EC2 instances in the node group.
-
(Optional) Edit the Node Group update configuration. Select either Number or Percentage.
-
Number – Select and specify the number of nodes in your node group that can be updated in parallel. These nodes will be unavailable during update.
-
Percentage – Select and specify the percentage of nodes in your node group that can be updated in parallel. These nodes will be unavailable during update. This is useful if you have many nodes in your node group.
-
-
When you’re finished editing, choose Save changes.
-
Important
When updating the node group configuration, modifying the NodegroupScalingConfig
does not respect Pod disruption budgets (PDBs).
Unlike the update node group process (which drains nodes and respects PDBs during the upgrade phase), updating the scaling configuration causes nodes to be terminated immediately through an Auto Scaling Group (ASG) scale-down call.
This happens without considering PDBs, regardless of the target size you’re scaling down to.
That means when you reduce the desiredSize
of an Amazon EKS managed node group, Pods are evicted as soon as the nodes are terminated, without honoring any PDBs.