8
8
Table of Contents

1. What happens by default in normal EKS nodes

When you launch an Amazon EKS node, either through Managed Node Groups or a self-managed Amazon EC2 instance, the startup script: /etc/eks/bootstrap.sh runs automatically. This script makes the node join the cluster and sets important kubelet parameters.

By default, the script calculates how many pods a node can run based on the instance type and the number of ENIs (network interfaces) available.

Example standard user data for an Amazon Linux 2 node:

When --use-max-pods=true, the script internally calls /etc/eks/max-pods-calculator.sh to find the right value based on ENI and IP limits. For example, an m5.large instance might be assigned --max-pods=29.

This is the safe and recommended behavior by AWS for standard EKS clusters that use the default Virtual Private Cloud (VPC) CNI plugin.

2. When we set --use-max-pods=false

If we configure the bootstrap script like this:

Code snippet

The script skips the ENI-based calculation and uses the provided value directly. That means the kubelet will allow up to 110 pods on that node, regardless of ENI limits.

This is only safe if your networking setup supports that many IPs, for example, when you are using prefix delegation or a custom CNI.

3. What user data Karpenter uses by default for AL2 AMI

Karpenter does not use the same default AWS user data. It automatically generates its own MIME-style user data for Amazon Linux 2 nodes.

Here is the default format from the Karpenter documentation:
Default format from Karpenter documentation

By default, Karpenter sets --use-max-pods=false and defines --max-pods=110 for every AL2 node it launches.

4. Why Karpenter disables auto-calculation

This behavior is intentional.

Karpenter disables the AWS max-pods-calculator.sh because that script still uses the old Amazon ENI-based logic and does not account for prefix delegation, which increases the number of available IPs per ENI.

Since most modern Amazon EKS clusters now use prefix delegation by default, the calculator would assign a value that is too low.

To avoid this, Karpenter does the following: 

  • Sets --use-max-pods=false to skip automatic calculation.
  • Manually sets --max-pods=110 as a safe upper limit.
  • Keeps node behavior consistent across all instance sizes.
  • This makes pod density predictable and keeps networking stable.  

5. When to override this manually

You usually do not need to change Karpenter’s user data.

Only override it if:

  • You are using a custom AMI that is not Amazon EKS optimized.
  • You are using a non-VPC CNI like Calico or Cilium.
  • You want to adjust pod density for specific workloads.

Example override in Amazon EC2NodeClass:

Example override script
6. Best Practice Summary

Best Practice Summary

7. Final takeaway

  • For normal Amazon EKS nodes, keep --use-max-pods=true.
  • For Karpenter, it is already false, and that is the correct setting.
  • Do not mix both settings unless you fully understand your network limits.
  • If you are unsure, stay with the default setting because it is tested and safe.

8. Quick check command

To verify what value your node is using, run:

  • cat /etc/systemd/system/kubelet.service.d/10-kubelet-args.conf | grep max-pods

This command shows the active --max-pods value used by the kubelet.

9. How Karpenter supports prefix delegation mode

Prefix delegation is a feature in the Amazon VPC CNI plugin that allows each ENI to receive a small prefix, usually a /28 subnet, instead of individual secondary IPs.

Each prefix contains 16 IP addresses that the CNI can assign directly to pods without extra API calls to Amazon EC2. This improves IP allocation speed and lets each node handle more pods.

Karpenter supports prefix delegation completely, even though it sets --use-max-pods=false. It does this by staying out of the ENI-based calculation logic and letting the CNI handle IP management dynamically.

When Karpenter launches a node, it runs the bootstrap script with:

Karpenter code snippet
This means the bootstrap script does not run /etc/eks/max-pods-calculator.sh, which is still based on old ENI logic and does not understand prefix delegation. Instead, Karpenter sets a fixed kubelet limit of --max-pods=110, which is high enough for most instance types when prefix mode is active.

Prefix delegation itself is managed by the VPC CNI plugin, not by Karpenter. You enable it using the aws-node DaemonSet in the kube-system namespace by setting the following environment variables:

kubectl script snippet
After enabling these, each node gets one or more /28 prefixes attached to its ENIs. The VPC CNI then assigns IPs to pods from those prefixes automatically. Karpenter does not need to calculate anything; it just ensures kubelet allows enough pods. This design separates responsibilities clearly:

Comparison Table

With this setup, Karpenter nodes fully benefit from prefix delegation.

The VPC CNI handles pod IP assignment, and Karpenter ensures kubelet does not block scheduling too early with old ENI limits. This keeps the node setup simple, allows efficient pod density, and ensures the cluster uses modern VPC networking features properly.

Closing note

This flag may seem small, but it affects how efficiently your cluster uses each node.

Karpenter’s default configuration (--use-max-pods=false) is intentional and matches how Amazon EKS works with prefix delegation today. Avoid changing it unless there is a clear technical reason.

12
Let's discuss your cloud challenges and see how CloudKeeper can solve them all!
Meet the Author
  • Gourav Kumar Pandey
    Senior DevOps Engineer

    Gourav specializes in helping organizations design secure and scalable Kubernetes infrastructures on AWS.

32 Comments
Comments Profile
<a href="https://arrowpuzzle.org">arrow puzzle</a>

I’ve always found the default limits a bit frustrating when dealing with smaller instance types, so seeing how Karpenter maximizes every bit of allocatable CPU and RAM is really insightful. Honestly, after staring at YAML manifests and debugging node termination logic all day, my brain usually needs a serious break. I’ve found the best way to unwind is to relax with a few rounds of <a href="https://arrowpuzzle.org">arrow puzzle</a>

Comments Profile
Nadou

This is a thoughtful take on maximizing amazon eks pod density: why karpenter ignores aws's default limits. The practical examples really help illustrate the concepts.

<a href="https://nadou.org&quot; target="_blank">Nadou</a>

Comments Profile
eer443

That's interesting how Karpenter bypasses the default AWS limits to pack more pods onto each node. I wonder what the trade-offs are in terms of resource contention and overall cluster stability when pushing pod density that high.

<a href="https://www.voe4ai.com&quot; target="_blank">eer443</a>

Comments Profile
gn-math.com

【Karpenter's default settings boost EKS pod density efficiently by ignoring AWS's old limits, https://gn-math.com

Comments Profile
Daksh Singh

Choosing the right <a href="https://medmeds.in/product/oxiveda-herbal-support-for-healthy-breathing… for Breathing Problem </a> can be confusing, but this article makes it much simpler. I appreciate how the information is explained in a step-by-step manner. It really helps readers understand what to consider and how to approach breathing issues in a more informed and confident way.

Comments Profile
Maturity-Test

Karpenter's default of --use-max-pods=false optimizes pod density efficiently, leveraging modern networking features. https://Maturity-Test.com

Comments Profile
matrix destiny chart cách xem

Such a nice and helpful piece of info. I’m glad you shared this valuable content with us. Please keep us informed. Thank you for sharing. <a href="https://destinymatrixai.com/">matrix destiny chart cách xem</a>

Comments Profile
blue lock rivals cod

<p>Check out updated <a href="https://bluelockrivelscodes.com/">blue lock rivals 2025</a> for exciting in-game rewards. This page ensures all codes are verified, helping players avoid expired ones while making the most out of every available bonus.</p>

Comments Profile
Amirr0123

This is an excellent, comprehensive breakdown! You've clearly explained the technical nuances between standard EKS nodes and Karpenter's logic, especially regarding prefix delegation. The structure is logical and the "Quick check command" adds great practical value. Great job simplifying a complex networking topic! https://pips-game.com

Comments Profile
editingwise42

What I like about <a href="https://eggycargame.cc/">eggy car game</a> is that it doesn’t try to overcomplicate things. Just one goal—don’t drop the egg—and somehow it stays engaging.

Comments Profile
medmeds

Livuxis is a good choice when it comes to liver supplements for fatty liver. I have observed improvements in my energy levels and digestion. Although it is not a quick fix, it is effective in maintaining liver health if used regularly. A good herbal supplement for everyday use.
http://livuxis.42web.io/

Comments Profile
Safari

Compared to similar games, Cowboy Safari brings joy as you become both a lasso master and a Sky Zoo architect. Gameplay starts by chasing animal herds, lassoing accurately, holding Space to maintain balance on their backs, and dodging every obstacle with sideways movement. Each tamed animal contributes to building an empire: upgrade enclosures, attract visitors, and earn coins to expand further. Learning to predict animal rage phases helps you run farther. Cowboy Safari is truly the most exciting wild safari experience available right now: https://cowboysafari.io

Comments Profile
Denali Stone

Raw idle production eventually slows down. https://cookie-clicker2.com/

Comments Profile
showen

thank u, i like play https://snowriders.io

Comments Profile
Gradient Background Tool

I’ve been closely following the discussion on maximizing pod density in Amazon EKS. It’s fascinating to see how Karpenter manages to bypass AWS’s default limits. Understanding the trade-offs between aggressive scaling and cluster stability is crucial for anyone trying to optimize their cloud spend.https://cssbackground.net

Comments Profile
Market Basket

Karpenter's approach to bypassing AWS's default pod limits explains why density optimization varies so much by autoscaler. That tension between vendor expectations and real workload I also ended up opening <a href="https://weeklyadfinder.com/market-basket/">Market Basket weekly ad</a> afterward because it carries the same thread a little further.

Comments Profile
snowplowtruck.org

【Karpenter's default of --use-max-pods=false optimizes pod density by leveraging prefix delegation, aligning with modern EKS networking. https://snowplowtruck.org

Comments Profile
astrocartography chart

Very readable and informative article. The insights are valuable. Keep sharing updates. <a href="https://astrocarto.net/">astrocartography chart</a>

Comments Profile
onlineGames.today

【Karpenter's default of --use-max-pods=false optimizes pod density by leveraging prefix delegation, aligning with modern EKS networking. https://onlineGames.today

Comments Profile
velki official

Official developer and curator of the most trusted Velki Agent List in Bangladesh. https://velkie365agent.com/

Comments Profile
fsdfsd

In Drive Mad - https://maddrive.io/ every second matters and every mistake teaches a lesson. The game turns driving into a strategic challenge where balance and timing decide victory, pulling players into a loop of retrying, improving, and finally conquering each level.

Comments Profile
drivemad

Play Drive Mad Now: https://maddrive.io/

Comments Profile
drive

Karpenter's default --max-pods=110 optimizes pod density by embracing prefix delegation, ensuring efficient IP use. https://maddrive.io/

Comments Profile
super-star-car.com

【Karpenter's default --max-pods=110 optimizes pod density by embracing prefix delegation, ensuring efficient IP use. https://super-star-car.com

Comments Profile
nano banana pro 2

Appreciate the clarity. This helped me a lot. <a href="https://nanobanana-2.xyz/">nano banana pro 2</a>

Comments Profile
banana nano pro

Appreciate the straightforward explanation. Very useful. <a href="https://banananano.top/">banana nano pro</a>

Comments Profile
bubble graffiti letters

Really enjoyed this informative post. The points are clear and practical. Hope to see more updates soon. Speaking of useful tools, want to create stylized AI graffiti from text? Check out <a href="https://graffitigenerator.io/">bubble graffiti letters</a> , a simple online graffiti generator with instant results.

Comments Profile
colorTiles.games

【Karpenter's default --max-pods=110 setting optimizes pod density by leveraging prefix delegation, ensuring efficient IP management. https://colorTiles.games

Comments Profile
pizzeriaSimulator

【Karpenter's default of --use-max-pods=false optimizes pod density by leveraging prefix delegation, ensuring efficient node utilization. https://pizzeriaSimulator.com

Comments Profile
anna12

Thanks for post
https://crossy-road.io

Comments Profile
sabirose

Thanks for breaking this down! Makes it much clearer how Karpenter and the VPC CNI handle pod IPs and responsibilities separately. https://crossyroadgame.io

Leave a Comment

Speak with our advisors to learn how you can take control of your Cloud Cost