AWS EKS でのインスタンスクラスと Pod 上限数のコストパフォーマンス分析

背景
Amazon EKS (Elastic Kubernetes Service) でワーカーノードのインスタンスタイプを選定する際、vCPU やメモリのスペックだけでなく、そのインスタンスで起動可能な最大 Pod 数がコストパフォーマンスに大きく影響する。
EKS では、各インスタンスの ENI (Elastic Network Interface) 数と ENI あたりの IPv4 アドレス数により、最大 Pod 数が以下の式で決定される。
Max Pods = (ENI数 × (ENIあたりIPv4数 - 1)) + 2
この値は AWS 公式の eni-max-pods.txt に定義されている。本記事では、この Max Pods とインスタンスの On-Demand 価格から、Pod あたりのコストを算出し、最もコストパフォーマンスの高いインスタンスタイプを明らかにする。
インスタンスサイズによる Max Pods の段差
調査の結果、インスタンスサイズと Max Pods の関係に非直感的な段差が存在することがわかった。
| サイズ | Max Pods | 備考 |
|---|---|---|
| small (t3のみ) | 11 | |
| medium (t3のみ) | 17 | |
| large | 29 | |
| xlarge | 58 | |
| 2xlarge | 58 | xlarge と同じ |
| 4xlarge | 234 | 一気に4倍 |
| 8xlarge | 234 | 4xlarge と同じ |
ここで注目すべきは、2xlarge は xlarge と同じ Pod 数 (58) なのに価格は2倍であり、8xlarge も 4xlarge と同じ Pod 数 (234) なのに価格は2倍という点である。Pod 密度の観点では、2xlarge と 8xlarge は選択すべきではない。
Pod あたりコスト ランキング (ap-northeast-1, On-Demand)
価格は AWS Pricing API (2026-03-17 時点) より取得した。2xlarge と 8xlarge は Pod 数が同サイズの xlarge / 4xlarge と同じで価格が2倍のため、すべて省略している。
| Rank | Instance | $/hr | Max Pods | $/pod/hr | 月額/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 |
結論
Pod 密度のコスパ最強は c7g (Graviton3 Compute Optimized)
t3.small を除けば(バースト型のため常時稼働ワークロードには不向き)、c7g ファミリーが Pod あたりコストで最も安価である。
- c7g.4xlarge ($0.00162/pod/hr) — 234 pods、大規模向け
- c7g.xlarge ($0.00163/pod/hr) — 58 pods、中規模向け
- c7g.large ($0.00163/pod/hr) — 29 pods、小規模向け
インスタンスサイズの選び方
| 推奨 | 非推奨 |
|---|---|
| large, xlarge | 2xlarge (xlarge と同 Pod 数で2倍の価格) |
| 4xlarge (Pod 密度のスイートスポット) | 8xlarge (4xlarge と同 Pod 数で2倍の価格) |
4xlarge で Max Pods が 58 → 234 と一気に4倍になるため、多数の Pod を稼働させる場合は 4xlarge が最適解である。
ファミリーの選び方
| 用途 | 推奨ファミリー | $/pod/hr |
|---|---|---|
| CPU 重視 (Web API 等) | c7g | $0.00162 |
| バランス型 | m6g / m7g | $0.00176–0.00187 |
| メモリ重視 | r6g | $0.00218 |
共通ルール: Graviton (g 系) は Intel (i 系) より約20%安い。 ARM アーキテクチャのコンテナイメージを用意できるなら、Graviton を選ばない理由はない。
注意事項
- 上記は Prefix Delegation 無効 (デフォルト) の場合の Max Pods である
- Prefix Delegation を有効にすると、各 ENI に /28 prefix (16 IP) が割り当てられ、Pod 数が大幅に増加する。EKS Managed Node Group では vCPU < 30 なら 110、vCPU >= 30 なら 250 にキャップされる
- Prefix Delegation 有効時は 2xlarge の不利が解消される可能性がある
- t3 はバースト型のため、CPU を常時使うワークロードには不向きである
- 実際の運用では Pod あたりの CPU / メモリ要求量も考慮が必要である
参考
開発相談をお待ちしています。