EKS Max Pods per Instance Type and Cost Performance Analysis (Tokyo Region)
Background
When choosing the instance type for worker nodes on Amazon EKS (Elastic Kubernetes Service), cost performance is affected a lot not only by vCPU and memory specs but also by the maximum number of Pods that can run on the instance.
In EKS, the maximum number of Pods is determined by the number of ENIs (Elastic Network Interfaces) on each instance and the number of IPv4 addresses per ENI, with the following formula.
Max Pods = (ENI count × (IPv4 per ENI - 1)) + 2
This value is defined in AWS's official eni-max-pods.txt. This article calculates the cost per Pod from this Max Pods value and the instance's On-Demand price, and shows which instance types have the best cost performance.
Non-Intuitive Max Pods Gaps Between Instance Sizes
The investigation showed that there are non-intuitive gaps in the relationship between instance size and Max Pods.
| Size | Max Pods | Notes |
|---|---|---|
| small (t3 only) | 11 | |
| medium (t3 only) | 17 | |
| large | 29 | |
| xlarge | 58 | |
| 2xlarge | 58 | Same as xlarge |
| 4xlarge | 234 | 4x in one jump |
| 8xlarge | 234 | Same as 4xlarge |
2xlarge has the same Pod count (58) as xlarge but costs twice as much, and 8xlarge also has the same Pod count (234) as 4xlarge but costs twice as much. In terms of Pod density, 2xlarge and 8xlarge should not be chosen.
Per-Pod Cost Ranking (ap-northeast-1, On-Demand)
Prices were taken from the AWS Pricing API (as of 2026-03-17). 2xlarge and 8xlarge have the same Pod count as the corresponding xlarge / 4xlarge at twice the price, so all of them are left out.
| Rank | Instance | $/hr | Max Pods | $/pod/hr | Monthly/pod |
|---|---|---|---|---|---|
| 1 | t3.small | $0.0155 | 11 | $0.00141 | $1.03 |
| 2 | c7g.4xlarge | $0.3789 | 234 | $0.00162 | $1.18 |
| 3 | c7g.xlarge | $0.0947 | 58 | $0.00163 | $1.19 |
| 4 | c7g.large | $0.0474 | 29 | $0.00163 | $1.19 |
| 5 | c6g.4xlarge | $0.4032 | 234 | $0.00172 | $1.26 |
| 6 | c6g.large | $0.0504 | 29 | $0.00174 | $1.27 |
| 7 | c6g.xlarge | $0.1008 | 58 | $0.00174 | $1.27 |
| 8 | m6g.4xlarge | $0.4123 | 234 | $0.00176 | $1.29 |
| 9 | t3.large | $0.0618 | 35 | $0.00177 | $1.29 |
| 10 | m6g.large | $0.0515 | 29 | $0.00178 | $1.30 |
| 11 | m6g.xlarge | $0.1031 | 58 | $0.00178 | $1.30 |
| 12 | t3.medium | $0.0309 | 17 | $0.00182 | $1.33 |
| 13 | m7g.4xlarge | $0.4380 | 234 | $0.00187 | $1.37 |
| 14 | m7g.large | $0.0548 | 29 | $0.00189 | $1.38 |
| 15 | m7g.xlarge | $0.1095 | 58 | $0.00189 | $1.38 |
| 16 | c6i.4xlarge | $0.4456 | 234 | $0.00190 | $1.39 |
| 17 | c6i.large | $0.0557 | 29 | $0.00192 | $1.40 |
| 18 | c6i.xlarge | $0.1114 | 58 | $0.00192 | $1.40 |
| 19 | c7i.4xlarge | $0.4679 | 234 | $0.00200 | $1.46 |
| 20 | c7i.large | $0.0585 | 29 | $0.00202 | $1.47 |
| 21 | c7i.xlarge | $0.1170 | 58 | $0.00202 | $1.47 |
| 22 | t3.xlarge | $0.1236 | 58 | $0.00213 | $1.56 |
| 23 | c5.4xlarge | $0.5070 | 234 | $0.00217 | $1.58 |
| 24 | c5.large | $0.0630 | 29 | $0.00217 | $1.59 |
| 25 | r6g.4xlarge | $0.5096 | 234 | $0.00218 | $1.59 |
| 26 | c5.xlarge | $0.1270 | 58 | $0.00219 | $1.60 |
| 27 | m6i.4xlarge | $0.5154 | 234 | $0.00220 | $1.61 |
| 28 | r6g.large | $0.0637 | 29 | $0.00220 | $1.60 |
| 29 | r6g.xlarge | $0.1274 | 58 | $0.00220 | $1.60 |
| 30 | m6i.large | $0.0644 | 29 | $0.00222 | $1.62 |
| 31 | m6i.xlarge | $0.1288 | 58 | $0.00222 | $1.62 |
| 32 | r7g.4xlarge | $0.5392 | 234 | $0.00230 | $1.68 |
| 33 | m7i.4xlarge | $0.5412 | 234 | $0.00231 | $1.69 |
| 34 | r7g.large | $0.0674 | 29 | $0.00232 | $1.70 |
| 35 | r7g.xlarge | $0.1348 | 58 | $0.00232 | $1.70 |
| 36 | m7i.large | $0.0676 | 29 | $0.00233 | $1.70 |
| 37 | m7i.xlarge | $0.1353 | 58 | $0.00233 | $1.70 |
| 38 | m5.4xlarge | $0.5750 | 234 | $0.00246 | $1.79 |
| 39 | m5.large | $0.0720 | 29 | $0.00248 | $1.81 |
| 40 | m5.xlarge | $0.1440 | 58 | $0.00248 | $1.81 |
| 41 | r6i.4xlarge | $0.6343 | 234 | $0.00271 | $1.98 |
| 42 | r5.4xlarge | $0.6340 | 234 | $0.00271 | $1.98 |
| 43 | r5.large | $0.0790 | 29 | $0.00272 | $1.99 |
| 44 | r6i.large | $0.0793 | 29 | $0.00273 | $2.00 |
| 45 | r6i.xlarge | $0.1586 | 58 | $0.00273 | $2.00 |
| 46 | r5.xlarge | $0.1590 | 58 | $0.00274 | $2.00 |
| 47 | r7i.4xlarge | $0.6660 | 234 | $0.00285 | $2.08 |
| 48 | r7i.large | $0.0833 | 29 | $0.00287 | $2.10 |
| 49 | r7i.xlarge | $0.1665 | 58 | $0.00287 | $2.10 |
Conclusions
Best Pod Density Cost: c7g (Graviton3 Compute Optimized)
Leaving out t3.small (it is a burstable type and not suited to always-on workloads), the c7g family has the lowest cost per Pod.
- c7g.4xlarge ($0.00162/pod/hr): 234 pods, for large scale
- c7g.xlarge ($0.00163/pod/hr): 58 pods, for medium scale
- c7g.large ($0.00163/pod/hr): 29 pods, for small scale
Instance Size Selection Guide
| Recommended | Not recommended |
|---|---|
| large, xlarge | 2xlarge (same Pod count as xlarge at twice the price) |
| 4xlarge (the sweet spot for Pod density) | 8xlarge (same Pod count as 4xlarge at twice the price) |
At 4xlarge, Max Pods jumps 4x from 58 to 234, so 4xlarge is the best choice when running many Pods.
Instance Family Selection Guide
| Use | Recommended family | $/pod/hr |
|---|---|---|
| CPU-heavy (Web APIs, etc.) | c7g | $0.00162 |
| Balanced | m6g / m7g | $0.00176–0.00187 |
| Memory-heavy | r6g | $0.00218 |
Common rule: Graviton (g series) is about 20% cheaper than Intel (i series). If you can prepare container images for the ARM architecture, there is no reason not to choose Graviton.
Caveats
- The Max Pods values above are for Prefix Delegation disabled (the default)
- With Prefix Delegation enabled, a /28 prefix (16 IPs) is assigned to each ENI and the number of Pods increases greatly. In EKS Managed Node Groups it is capped at 110 if vCPU < 30 and at 250 if vCPU >= 30
- With Prefix Delegation enabled, the disadvantage of 2xlarge may go away
- t3 is a burstable type, so it is not suited to workloads that use CPU all the time
- In real operation, the CPU / memory requests per Pod also need to be considered
References
Related posts
ytyng.com Was Featured on FreelanceHub
If Pods Do Not Start from Deployment in EKS, Warning FailedScheduling May Indicate Resource Insufficiency
What to Do When Your Kubernetes Node Shows "The node was low on resource: ephemeral-storage"
Manifest to Redirect Non-www Requests to www When Using ALB with AWS EKS Ingress
We look forward to discussing your development needs.