EKS Max Pods per Instance Type and Cost Performance Analysis (Tokyo Region)

2026-03-18 12:00 (6 months ago)
Pod Cliff
Play a song themed on this article

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.

  1. c7g.4xlarge ($0.00162/pod/hr): 234 pods, for large scale
  2. c7g.xlarge ($0.00163/pod/hr): 58 pods, for medium scale
  3. 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

Categories

Archive