コンテンツにスキップ

面接問題:新しいノードが追加されるたびに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 ドライバー

ノードを選択してデプロイする

spec:
  template:
    spec:
      nodeSelector:
        disktype: ssd    # SSD のノードだけにデプロイ

面接でのポイント

  • 「全ノードに」というキーワードが出たら DaemonSet を即答できるようにする
  • DaemonSet の典型ユースケース(ログ・メトリクス・ネットワーク)を具体的に言える
  • Deployment との違い(レプリカ数管理 vs ノード全体への展開)を説明できる