ノードレベルログ収集用DaemonSet

すべてのノードで実行されるKubernetes DaemonSetとしてログ収集エージェントをデプロイし、hostPathボリュームマウントで/var/log/containersからコンテナログを収集します。

Patterns

詳細な説明

DaemonSetログコレクター

DaemonSetはクラスタ内のすべてのノードでポッドの1つのコピーが実行されることを保証します。ログコレクター、モニタリングエージェント、セキュリティスキャナーなどのノードレベルエージェントの標準パターンです。

主要な設定

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: log-collector
  namespace: kube-system
  labels:
    app: "log-collector"
spec:
  template:
    spec:
      serviceAccountName: log-collector
      containers:
        - name: fluentbit
          image: fluent/fluent-bit:2.2
          volumeMounts:
            - name: varlog
              mountPath: /var/log
              readOnly: true
      volumes:
        - name: varlog
          hostPath:
            path: /var/log
      tolerations:
        - key: "node-role.kubernetes.io/control-plane"
          operator: "Exists"
          effect: "NoSchedule"

なぜDaemonSetか?

機能 DaemonSet Deployment
ノードあたりのポッド 正確に1つ 可変
新しいノード参加時 自動スケジュール アクションなし
レプリカフィールドなし ノードに合わせてスケール 手動レプリカ
ユースケース ノードエージェント アプリケーションワークロード

コントロールプレーン用Tolerations

デフォルトでは、コントロールプレーンノードにはワークロードポッドのスケジュールを防ぐtaint(node-role.kubernetes.io/control-plane:NoSchedule)があります。DaemonSetスペック内のtolerationにより、ログコレクターがコントロールプレーンノードでも実行でき、完全なログカバレッジを確保します。

ユースケース

Fluent Bit、Fluentd、DatadogエージェントをKubernetesクラスタのすべてのノードにデプロイして、コンテナログとシステムログを収集・転送する集中ログインフラストラクチャの構築。

試してみる — K8s Pod Spec Builder

フルツールを開く