こんにちは!本日は、Kubernetesワークロード管理の核となる4大Podコントローラーについて完璧に解説します。
単にPodを起動するだけでなく、各状況に最適なツールを選択することが、クラウドセキュリティおよびインフラ設計の始まりです。約15分で、実務と試験(CKAD)に必要な核心をすべてマスターできます。

📑 目次
- 概要: なぜコントローラーを使うべきか? (Desired State)
- Deployment: ステートレス(Stateless)アプリケーションの王者
- StatefulSet: ステートフル(Stateful)な専門家の管理者
- DaemonSet: 全てのノードを守る番人
- Job & CronJob: 短く太く働くバッチ処理の達人
- [付録] コントローラー選択ガイドと実践のヒント
0. 概要: なぜコントローラーを使うべきか? 🤔
Kubernetesにおいて、Podはいつでも停止しうる消耗品です。講師が強調するように、私たちはPodを一つ一つ手動で管理しません。代わりに、コントローラーに「私が望む状態(Desired State)」を宣言し、コントローラーが現在の状態を監視し、その状態を維持させます。
1. Deployment: ステートレス(Stateless)アプリケーションの王者 👑
最も一般的に使用されるコントローラーです。ウェブサーバーやAPIサーバーのように、Pod同士が互いに区別される必要がないステートレスアプリケーションに最適化されています。
- 主な機能: セルフヒーリング、スケーリング、ローリングアップデートおよびロールバック。
- 核となるリソース: 内部的にReplicaSetを生成し、Podの数を維持します。
💡 実践コード (YAML)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.21
2. StatefulSet: ステートフル(Stateful)な専門家の管理者 🏛️
データベース(MySQL、MongoDB)やメッセージキュー(Kafka)のように、Podごとに固有の名前と永続的なデータが必要な場合に使用します。
- 主な機能: Podに順次インデックスを付与(pod-0, pod-1)、安定したネットワーク識別子(Headless Service連携)、個別ボリューム割り当て(volumeClaimTemplates)。
- 違い: Deploymentとは異なり、Podが再起動しても名前と関連付けられたボリュームはそのまま維持されます。
3. DaemonSet: 全てのノードを守る番人 🛡️
クラスター内の全ての(または特定の条件を満たす)ノードにPodをちょうど一つずつデプロイする必要がある場合に使用します。
- 用途: ログコレクター(Fluentd)、監視エージェント(Prometheus Node Exporter)、ネットワークプラグイン。
- 特徴: 新しいノードが追加されると自動的にPodがデプロイされ、ノードが削除されるとPodも一緒に削除されます。
4. Job & CronJob: バッチ処理の達人 🏃♂️⏰
24時間稼働するサービスではなく、特定の作業が完了すると自己終了する作業を管理します。
- Job: 一回限りの作業(例: データ移行、バッチレポート生成)。正常に完了するとPodを終了します。
- CronJob: 定められた時間に繰り返し実行される作業(例: 毎日午前3時のetcdバックアップ)。
💡 実践コード (CronJob)
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-backup
spec:
schedule: "0 3 * * *" # 毎日午前3時
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: busybox
command: ["sh", "-c", "echo Backup Complete!"]
restartPolicy: OnFailure
📊 コントローラーを一覧で比較
| コントローラー | 主な用途 | Pod識別子 | データ永続性 |
| — | — | — | — |
| Deployment | ウェブサーバー、API (ステートレス) | ランダムハッシュ | 揮発性 |
| StatefulSet | DB、分散システム (ステートフル) | 固有インデックス (0, 1, 2) | 永続的 (PVCマッピング) |
| DaemonSet | ログ/監視エージェント | ノード別固定 | ノード依存 |
| Job/CronJob | バックアップ、バッチ処理 | 一回限り/繰り返し | 結果保存後終了 |
—
Tags: Kubernetes, CKAD, Deployment, StatefulSet, DaemonSet, Job, CronJob, クラウドインフラ, 資格準備, Podコントローラー
コメントを残す