EKS Node Scaling with Karpenter

0

Hi everyone,

I'm working with an EKS cluster that has three node groups. When I attempt to scale a deployment to the maximum CPU capacity, the cluster automatically provisions additional nodes. However, these new nodes aren't assigned to any specific node group.

My question is: How can I ensure that newly created nodes are added to a particular node group?

Here's the current behavior: Scaling the deployment to the CPU limit triggers cluster autoscaling (potentially using Karpenter). Karpenter creates new EC2 instances to meet the increasing resource demands. These new instances are not explicitly associated with any existing node group.

Desired behavior: I want new nodes to be added to a specific node group during cluster autoscaling.

Tai Ho
asked 6 months ago379 views
2 Answers
1

You can follow these steps to ensure that a newly created nodes are added to a specific node group during cluster autoscaling with karpenter in EKS

Assign unique labels to your existing node groups. You can do this during the creation of the node groups or by updating the existing ones.

Modify the Karpenter configuration to specify a node group selector. This selector will tell Karpenter which node group to target when provisioning new nodes.

Ensure that the Karpenter configuration includes the node group selector option and specifies the label of the desired node group.

After updating the Karpenter configuration, monitor the cluster autoscaling events and verify that new nodes are being added to the correct node group.

I think it will be more clearer to paste your yaml file here and cover the sensitive info or if you can follow the above steps i think everything should be ok

profile picture
EXPERT
answered 6 months ago
  • Hi,

    Unfortunately that I can't paste my yaml file into this because the comment was limit in 600 words. I still have stuck with this problem.

0

Why do you want the nodes to be added to a specific nodegroup ?

To begin with Karpenter is groupless autoscaling.

Karpenter brings scaling management closer to Kubernetes native APIs than do Autoscaling Groups (ASGs) and Managed Node Groups (MNGs). ASGs and MNGs are AWS-native abstractions where scaling is triggered based on AWS level metrics, such as EC2 CPU load. ASGs and MNGs are not needed since Karpenter is working directly with the EC2 fleet API.

Karpenter removes a layer of AWS abstraction to bring some of the flexibility directly into Kubernetes. Karpenter is best used for clusters with workloads that encounter periods of high, spiky demand or have diverse compute requirements. MNGs and ASGs are good for clusters running workloads that tend to be more static and consistent. You can use a mix of dynamically and statically managed nodes, depending on your requirements.

I hope this helps. For additional details on Karpenter, refer to the documentation https://karpenter.sh/docs/

AWS
Abhi
answered 4 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions