面接問題:新しいノードが追加されるたびにPodを動かすKubernetesリソースはどれか
問題¶
As a Kubernetes beginner, you're asked to deploy an app that should automatically run on every new node added to the cluster. Which resource would you choose?
A: Deployment
B: StatefulSet
C: DaemonSet
解答¶
C: DaemonSet
解説¶
DaemonSet とは¶
クラスター内の 全ノード(または指定したノード)に 1 つずつ Pod を配置 するリソース。新しいノードが追加されると自動的にそのノードにも Pod がデプロイされる。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
spec:
selector:
matchLabels:
app: node-exporter
template:
metadata:
labels:
app: node-exporter
spec:
containers:
- name: node-exporter
image: prom/node-exporter:latest
ports:
- containerPort: 9100
各リソースの違い¶
| リソース | 動作 | ユースケース |
|---|---|---|
| Deployment | 指定した replicas 数を維持。どのノードに配置するかは K8s が決める | Web アプリ、API サーバー |
| StatefulSet | 順序と永続化が必要な Pod 群。Pod ごとに固定 ID と PVC を持つ | データベース、分散ストレージ |
| DaemonSet | 全ノードに 1 Pod ずつ | ログ収集、モニタリング、ネットワークプロキシ |
DaemonSet の典型的な使用例¶
ログ収集エージェント → Fluentd, Filebeat(各ノードのログを収集)
メトリクス収集 → node-exporter, Datadog Agent(ノードのメトリクスを収集)
ネットワークプラグイン → Calico, Flannel(各ノードにネットワーク設定)
セキュリティエージェント → Falco(各ノードのシステムコールを監視)
ストレージプラグイン → CSI ドライバー
ノードを選択してデプロイする¶
面接でのポイント¶
- 「全ノードに」というキーワードが出たら DaemonSet を即答できるようにする
- DaemonSet の典型ユースケース(ログ・メトリクス・ネットワーク)を具体的に言える
- Deployment との違い(レプリカ数管理 vs ノード全体への展開)を説明できる