EKS
AWS のマネージド Kubernetes サービス
AWSコンテナ
EKS とは
Amazon EKS (Elastic Kubernetes Service) は、AWS が提供するマネージド Kubernetes サービスである。コントロールプレーン (API サーバー、etcd) の運用を AWS が担い、ユーザーはワーカーノードとワークロードの管理に集中できる。
ECS vs EKS
| 観点 | ECS | EKS |
|---|---|---|
| オーケストレーター | AWS 独自 | Kubernetes (OSS) |
| 学習コスト | 低い | 高い |
| エコシステム | AWS に閉じる | Kubernetes エコシステム全体 |
| ポータビリティ | AWS のみ | マルチクラウド、オンプレミス |
| 運用コスト | コントロールプレーン無料 | $0.10/時間 (約 $73/月) |
| 適用場面 | AWS に特化したシンプルな構成 | 大規模、マルチクラウド、既存 K8s 資産 |
AWS だけで完結するなら ECS の方がシンプルで安い。Kubernetes のエコシステム (Helm、Istio、ArgoCD) を活用したい場合や、マルチクラウド戦略がある場合は EKS を選択する。
ワーカーノードの選択肢
| タイプ | 管理負荷 | コスト | 適用場面 |
|---|---|---|---|
| Managed Node Groups | 中 | EC2 料金 | 汎用ワークロード |
| Fargate | 低 | Fargate 料金 (割高) | 運用負荷を最小化 |
| Self-managed Nodes | 高 | EC2 料金 | GPU、カスタム AMI |
| Karpenter | 低〜中 | EC2 料金 (最適化) | 動的スケーリング |
Fargate on EKS は Pod 単位でサーバーレス実行できるが、DaemonSet が使えない、ストレージが EFS に限定されるなどの制約がある。
EKS のアーキテクチャ
[AWS マネージド]
コントロールプレーン: API Server, etcd, Scheduler, Controller Manager
↓
[ユーザー管理]
ワーカーノード (EC2 / Fargate)
├── Pod A (アプリ)
├── Pod B (アプリ)
└── Pod C (サイドカー: Envoy, Fluent Bit)
コントロールプレーンは 3 AZ に分散配置され、AWS が可用性を保証する。
コスト最適化
- Karpenter: Pod の要求に応じて最適なインスタンスタイプを自動選択し、ビンパッキング効率を最大化
- Spot Instances: 中断耐性のあるワークロードに Spot を使い、最大 90% のコスト削減
- Graviton: ARM ベースの Graviton インスタンスで、同等性能を 20% 低コストで実現
- 不要な Pod の削除:
kubectl top podsでリソース使用量を確認し、過剰なリクエスト/リミットを調整
関連書籍も参考になる。