Deployment
Kubernetes で Pod のレプリカ数、更新戦略、ロールバックを宣言的に管理するリソース
Kubernetesデプロイ
Deployment とは
Deployment は Kubernetes のリソースで、Pod のレプリカ数、コンテナイメージ、更新戦略を宣言的に管理する。「この Pod を 3 つ動かす」と宣言すると、Kubernetes が自動的に 3 つの Pod を作成・維持する。Pod が異常終了しても自動的に再作成される。
基本的な設定
基本的な設定の例を示す。
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
spec:
replicas: 3
selector:
matchLabels:
app: api-server
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: api-server
spec:
containers:
- name: app
image: myapp:1.0
ports:
- containerPort: 3000
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { cpu: 500m, memory: 512Mi }
readinessProbe:
httpGet: { path: /ready, port: 3000 }
livenessProbe:
httpGet: { path: /healthz, port: 3000 }
Deployment → ReplicaSet → Pod の関係
Deployment → ReplicaSet → Pod の関係を図で示す。
Deployment (宣言的な管理)
└── ReplicaSet (レプリカ数の維持)
├── Pod 1
├── Pod 2
└── Pod 3
Deployment がイメージを更新すると、新しい ReplicaSet が作成され、ローリングアップデートで Pod が段階的に置き換えられる。
kubectl での操作
kubectl での操作の例を示す。
# デプロイ
kubectl apply -f deployment.yaml
# 状態確認
kubectl get deployments
kubectl describe deployment api-server
# イメージの更新
kubectl set image deployment/api-server app=myapp:2.0
# ロールバック
kubectl rollout undo deployment/api-server
# スケール
kubectl scale deployment/api-server --replicas=5
# 更新履歴
kubectl rollout history deployment/api-server
ECS との比較
ECS との主な違いを以下に比較する。
| 観点 | Kubernetes Deployment | ECS Service |
|---|---|---|
| 宣言的管理 | YAML マニフェスト | タスク定義 + サービス |
| 更新戦略 | RollingUpdate, Recreate | Rolling update |
| ロールバック | kubectl rollout undo |
前のタスク定義に戻す |
| オートスケーリング | HPA | Application Auto Scaling |
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
Pod
Kubernetes の最小デプロイ単位で、1 つ以上のコンテナをまとめて管理するリソース
Kubernetes ローリングアップデート
Pod を段階的に新バージョンに置き換え、ゼロダウンタイムでアプリケーションを更新するデプロイ戦略
Service
Kubernetes で Pod 群への安定したネットワークアクセスを提供する抽象化リソース
Pod Disruption Budget
Kubernetes でメンテナンス時に同時に停止できる Pod 数を制限し、サービスの可用性を保証するリソース
Kubernetes
コンテナのデプロイ、スケーリング、管理を自動化するオープンソースのオーケストレーションプラットフォーム
Horizontal Pod Autoscaler
Kubernetes で Pod のレプリカ数を CPU 使用率やカスタムメトリクスに基づいて自動調整する仕組み