ノードレベルログ収集用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クラスタのすべてのノードにデプロイして、コンテナログとシステムログを収集・転送する集中ログインフラストラクチャの構築。