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 の定義
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 vs Lambda の違いを以下にまとめる。
| 観点 | EKS | ECS Fargate | Lambda |
|---|---|---|---|
| 管理負荷 | 高い | 低い | 最低 |
| K8s エコシステム | ✅ | ❌ | ❌ |
| コスト (アイドル) | クラスタ費用 | タスク数 | ゼロ |
| 実行時間 | 無制限 | 無制限 | 最大 15 分 |
| 用途 | K8s が必要な場合 | コンテナ | イベント駆動 |
いつ Kubernetes を使うか
いつ Kubernetes を使うかの判断基準を以下にまとめる。
| ケース | 推奨 |
|---|---|
| K8s エコシステムが必要 | EKS |
| シンプルなコンテナ実行 | ECS Fargate |
| イベント駆動、短時間処理 | Lambda |
| コストゼロを目指す | Lambda |
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
コンテナオーケストレーション
コンテナのデプロイ、スケーリング、ネットワーキングを自動管理するプラットフォーム
ECS
AWS のマネージドコンテナオーケストレーションサービスで、Docker コンテナを実行・管理する
Helm
Kubernetes のパッケージマネージャーで、アプリケーションのデプロイをテンプレート化して管理する
Pod
Kubernetes の最小デプロイ単位で、1 つ以上のコンテナをまとめて管理するリソース
Deployment
Kubernetes で Pod のレプリカ数、更新戦略、ロールバックを宣言的に管理するリソース
Pod Disruption Budget
Kubernetes でメンテナンス時に同時に停止できる Pod 数を制限し、サービスの可用性を保証するリソース