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を実行
- ノードスケジューリング:
nodeSelector、affinity、tolerationsで特定のノードをターゲット - 更新戦略:
RollingUpdate(デフォルト)またはOnDelete - 優先度: アプリケーションPodの前に実行する必要がある場合が多い
一般的なDaemonSetの使用例
| エージェントタイプ | 例 | 典型的な要件 |
|---|---|---|
| ログコレクター | Fluentd、Filebeat | /var/logへの読み取りアクセス |
| モニタリング | Node Exporter、Datadog | ホストネットワーク、/procアクセス |
| ストレージドライバー | CSIドライバー | 特権(必要) |
| ネットワークプラグイン | Calico、Cilium | ホストネットワーク、特権 |
DaemonSetのリソース制限
DaemonSetのリソース制限はすべてのノードで実行されるため特に重要です。制限なしのDaemonSetはアプリケーションPodに必要なノードリソースを消費する可能性があります。総リソース消費量は「制限 × ノード数」なので、小さな制限でも合計すると大きくなります。
ユースケース
クラスター内のすべてのノードにロールアウトする前にノードレベルエージェントとインフラコンポーネントを検証する。DaemonSetの問題はすべてのノードに同時に影響するため重要。