DaemonSetマニフェストの検証

各ノードで1つのPodを実行するKubernetes DaemonSetマニフェストを検証します。リソース制限、セキュリティ設定、ノードレベルエージェント設定をチェック。

Workload Types

詳細な説明

DaemonSetの設定

DaemonSetはすべてのノード(またはノードのサブセット)でPodのコピーが実行されることを保証します。ログコレクター、モニタリングエージェント、ストレージドライバーに一般的に使用されます。

DaemonSetの例

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: log-collector
  labels:
    app: log-collector
spec:
  selector:
    matchLabels:
      app: log-collector
  template:
    metadata:
      labels:
        app: log-collector
    spec:
      securityContext:
        runAsNonRoot: true
      containers:
        - name: fluentd
          image: fluent/fluentd:v1.16
          resources:
            requests:
              cpu: 100m
              memory: 200Mi
            limits:
              cpu: 500m
              memory: 500Mi
          livenessProbe:
            httpGet:
              path: /fluentd.healthcheck
              port: 24220

DaemonSetの考慮事項

DaemonSetはいくつかの点でDeploymentと異なります:

  • replicasフィールドなし: 一致する各ノードで1つのPodを実行
  • ノードスケジューリング: nodeSelectoraffinitytolerationsで特定のノードをターゲット
  • 更新戦略: RollingUpdate(デフォルト)またはOnDelete
  • 優先度: アプリケーションPodの前に実行する必要がある場合が多い

一般的なDaemonSetの使用例

エージェントタイプ 典型的な要件
ログコレクター Fluentd、Filebeat /var/logへの読み取りアクセス
モニタリング Node Exporter、Datadog ホストネットワーク、/procアクセス
ストレージドライバー CSIドライバー 特権(必要)
ネットワークプラグイン Calico、Cilium ホストネットワーク、特権

DaemonSetのリソース制限

DaemonSetのリソース制限はすべてのノードで実行されるため特に重要です。制限なしのDaemonSetはアプリケーションPodに必要なノードリソースを消費する可能性があります。総リソース消費量は「制限 × ノード数」なので、小さな制限でも合計すると大きくなります。

ユースケース

クラスター内のすべてのノードにロールアウトする前にノードレベルエージェントとインフラコンポーネントを検証する。DaemonSetの問題はすべてのノードに同時に影響するため重要。

試してみる — K8s Manifest Validator

フルツールを開く