Kubernetes
コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム
コンテナインフラ
Kubernetes とは
Kubernetes (K8s) は、Google が Borg の知見をもとに開発したコンテナオーケストレーションプラットフォームである。CNCF がホスト。AWS では EKS (Elastic Kubernetes Service) で利用する。
主要なリソース
Kubernetes はいくつかのリソースを組み合わせてアプリケーションを管理する。Pod がコンテナの最小実行単位で、Deployment が Pod のレプリカ数管理とローリングアップデートを担う。Service が Pod へのネットワークアクセスを提供し、Ingress が外部からの HTTP ルーティングを制御する。設定データは ConfigMap、秘密情報は Secret で管理し、HPA (Horizontal Pod Autoscaler) が負荷に応じて Pod 数を自動調整する。
Deployment の定義
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
selector:
matchLabels: { app: api }
template:
metadata:
labels: { app: api }
spec:
containers:
- name: api
image: my-app:latest
ports: [{ containerPort: 8080 }]
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
EKS vs ECS vs Lambda
| 観点 | EKS | ECS Fargate | Lambda |
|---|---|---|---|
| 管理負荷 | 高い | 低い | 最低 |
| K8s エコシステム | ✅ | ❌ | ❌ |
| コスト (アイドル) | クラスタ費用 | タスク数 | ゼロ |
| 実行時間 | 無制限 | 無制限 | 最大 15 分 |
| 用途 | K8s が必要な場合 | コンテナ | イベント駆動 |
いつ Kubernetes を使うか
| ケース | 推奨 |
|---|---|
| K8s エコシステムが必要 | EKS |
| シンプルなコンテナ実行 | ECS Fargate |
| イベント駆動、短時間処理 | Lambda |
| コストゼロを目指す | Lambda |
実務での活用方法は関連書籍にも詳しい。