Help improve this page
To contribute to this user guide, choose the Edit this page on GitHub link that is located in the right pane of every page.
Decrease latency for applications with long boot times using warm pools with managed node groups
When your applications have long initialization or boot times, scale-out events can cause delays—new nodes must fully boot and join the cluster before Pods can be scheduled on them. This latency can impact application availability during traffic spikes or rapid scaling events. Warm pools solve this problem by maintaining a pool of pre-initialized EC2 instances that have already completed the bootup process. During a scale-out event, instances move from the warm pool directly to your cluster, bypassing the time-consuming initialization steps and significantly reducing the time it takes for new capacity to become available. For more information, see Decrease latency for applications that have long boot times using warm pools in the Amazon EC2 Auto Scaling User Guide.
Amazon EKS managed node groups support Amazon EC2 Auto Scaling warm pools. A warm pool maintains pre-initialized EC2 instances alongside your Auto Scaling group that can quickly join your cluster during scale-out events. Instances in the warm pool have already completed the bootup initialization process and can be kept in a Stopped, Running, or Hibernated state.
Amazon EKS manages warm pools throughout the node group lifecycle using the AWSServiceRoleForAmazonEKSNodegroup service-linked role to create, update, and delete warm pool resources.
How it works
When you configure a warm pool, Amazon EKS creates an EC2 Auto Scaling warm pool attached to your node group’s Auto Scaling group. Instances launch into the warm pool, complete the bootup initialization process, and remain in the configured state (Running, Stopped, or Hibernated) until needed. During scale-out events, instances move from the warm pool to the Auto Scaling group, complete the Amazon EKS initialization process to join the cluster, and become available for pod scheduling. With instance reuse enabled, instances can return to the warm pool during scale-in events.
Important
Always configure warm pools through the Amazon EKS API using create-nodegroup or update-nodegroup-config. Don’t manually modify warm pool settings using the EC2 Auto Scaling API, as this can cause conflicts with Amazon EKS management of the resources.
Considerations
Important
Before configuring warm pools, review the prerequisites and limitations in Warm pools for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide. Not all instance types, AMIs, or configurations are supported.
-
IAM permissions – The
AWSServiceRoleForAmazonEKSNodegroupservice-linked role (created automatically with your first managed node group) includes the necessary warm pool management permissions. -
AMI limitations – Warm pools don’t support custom AMIs. You must use Amazon EKS optimized AMIs.
-
Bottlerocket limitations – If using Bottlerocket AMIs, the
Hibernatedpool state isn’t supported. UseStoppedorRunningpool states only. Additionally, thereuseOnScaleInfeature isn’t supported with Bottlerocket AMIs. -
Hibernation support – The
Hibernatedpool state is only supported on specific instance types. See Hibernation prerequisites in the Amazon EC2 User Guide for supported instance types. -
Cost impact – Creating a warm pool when it’s not required can lead to unnecessary costs.
-
Capacity planning – Size your warm pool based on scaling patterns to balance cost and availability. Start with 10-20% of expected peak capacity.
-
VPC networking – Ensure sufficient IP addresses for both Auto Scaling group and warm pool instances.
Configure warm pools
You can configure warm pools when creating a new managed node group or update an existing managed node group to add warm pool support.
Configuration parameters
-
enabled – (boolean) Indicates your intent to attach a warm pool to the managed node group. Required to enable warm pool support.
-
maxGroupPreparedCapacity – (integer) Maximum total instances across warm pool and Auto Scaling group combined.
-
minSize – (integer) Minimum number of instances to maintain in the warm pool. Default:
0. -
poolState – (string) State for warm pool instances. Default:
Stopped. -
reuseOnScaleIn – (boolean) Whether instances return to the warm pool during scale-in events instead of terminating them. Default:
false. Not supported with Bottlerocket AMIs.
Using the AWS CLI
You can configure a warm pool when creating a managed node group or add one to an existing node group.
Create a node group with a warm pool
aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --node-role arn:aws:iam::111122223333:role/AmazonEKSNodeRole \ --subnets subnet-12345678 subnet-87654321 \ --region us-east-1 \ --scaling-config minSize=2,maxSize=10,desiredSize=3 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
Add a warm pool to an existing node group
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=8,minSize=2,poolState=Stopped,reuseOnScaleIn=true
Update configuration
Update warm pool settings at any time using update-nodegroup-config. Existing warm pool instances aren’t immediately affected; new settings apply to instances entering the warm pool after the update.
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=true,maxGroupPreparedCapacity=10,minSize=3,poolState=Running,reuseOnScaleIn=true
To disable the warm pool attached to your nodegroup, set enabled=false:
aws eks update-nodegroup-config \ --cluster-name my-cluster \ --nodegroup-name my-nodegroup \ --region us-east-1 \ --warm-pool-config enabled=false
Additional resources
-
Warm pools for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide