Node Pools
Node Pools provide flexibility in managing capacity of your Cluster. Node Pools are essentially groups of Virtual Machines that are part of a Cluster and used by Kubernetes to schedule and run Workloads.
A single cluster can have one or more Node Pools. A cluster has one default Node Pool. You can create additional Node Pools to meet your capacity requirements. By having multiple Node Pools, you can enable use cases such as:
- Scheduling different workloads in different Node Pools based on their characteristics. For example, you could have a dedicated GPU Node Pool that has GPU Instances for running workloads that require GPUs.
- Balance Availability and Cost by creating a mix of On-Demand and Spot Node Pools.
- Perform migration activities such as retiring older instances or migrating to newer types of Virtual Machines by creating new Node Pools, migrate workloads to new Node Pools and delete older Node Pools.
You can add Node Pools to either new or existing Clusters.
To add Node Pools when you are creating a Cluster, follow the steps outlined here.
Add Node Pool
To add Node Pools to an existing Cluster,
- From the Clusters list page, click on the 3-dot Action button against a cluster.
- Click on Nodepools to open the View Nodepools page.
- Click on Add New.
- Provide a Name for your Node Pool. A default Name is automatically provided and you can edit the same.
- Select a Subnet Group for the Node Pool. All the nodes in the Node Pool will be launched in this Subnet Group.
- Select the Architecture of Worker Nodes to be launched in this Node Pool.
- Select the Capacity Type for Worker Nodes in this Node Pool.
- Under GPU, select Yes if you need GPU instances in this Node Pool.
- Select the Provisioner type to be used for this Nodepool.
- Default: This creates the EKS Nodegroup with the default provisioner
- Karpenter: This creates a Karpenter based provisioner for the EKS Nodegroup
- Select the Instance Types for Worker Nodes in this Node Pool. You can select one or more Instance types to be part of the Nodepool
- If you selected Default provisioner, provide the following inputs:
- Select the Autoscaling Checkbox, if you would like to enable Autoscaling.
- Set the Minimum, Desired and Maximum number of nodes in this Node Pool.
- If you select Karpenter provisioner, provide the following inputs:
- CPU Limit: Maximum number of CPUs that are allowed in this Nodepool.
- Memory Limit: Maximum memory (in GB) that is allowed in this Nodepool.
Karpenter will launch Instances (from the allowed Instance Types) up to the CPU and Memory limit that's configured. Karpenter will also scale down Instances automatically if Pods are evicted from the Instances.
- Click on the Save button.
- The new Node Pool creation will begin and will complete in a few minutes. You will not be able to perform any other updates in the Cluster until this operation is complete.
Edit Node Pool
To edit an existing Node Pool, click on the Edit icon present at the top right of the Node Pool.
- For Nodepools created using the Default provisioner, the following can be modified:
- Autoscaling: Enable / Disable Autoscaling.
- Capacity: Change the Minimum, Desired and Maximum number of nodes of this Node Pool.
- For Nodepools created using the Karpenter provisioner, the following can be modified:
- Instance Types: Change the list of allowed Instance Types.
- Capacity Limit: Modify the CPU and Memory limit of the Nodepool.
- Click on the Save button.
- The Node Pool update operation will begin and will complete in a few minutes. You will not be able to perform any other updates in the Cluster until this operation is complete.
Delete Node Pool
To delete an existing Node Pool, click on the Delete icon present at the top right of the Node Pool.
- A confirmation dialog will appear.Enter any additional details required and click on the Delete button.
- The Node Pool deletion operation will begin and will complete in a few minutes.