Ein DaemonSet ist ein Workload-Controller in Kubernetes, der auf jedem Node des Clusters genau einen Pod einer bestimmten Art betreibt – beziehungsweise auf allen Nodes, die einer Auswahl über nodeSelector, Affinitäten und Tolerations entsprechen. Kommt ein neuer Node hinzu, startet Kubernetes dort automatisch den DaemonSet-Pod; wird ein Node entfernt, verschwindet auch der Pod.
Typische Einsatzzwecke
- Logging-Agenten wie Fluentd oder Filebeat sammeln auf jedem Node die Container-Logs.
- Monitoring-Agenten wie der Prometheus-
node-exporterlesen Metriken jedes Nodes. - Netzwerk-Plugins wie Calico oder Cilium stellen das Pod-Netzwerk auf jedem Node her.
- kube-proxy setzt auf jedem Node die Netzwerkregeln für Services um.
Updates eines DaemonSets laufen seit Kubernetes 1.6 standardmäßig als RollingUpdate: Es wird immer nur auf wenigen Nodes parallel aktualisiert (maxUnavailable begrenzt die Zahl), damit der Dienst währenddessen verfügbar bleibt. Über Tolerations kann man DaemonSet-Pods auch auf den Control-Plane-Nodes des Clusters laufen lassen, etwa für das kube-apiserver-Monitoring.
Abgrenzung: Das Deployment verteilt eine gewünschte Anzahl Pods über den Cluster, das StatefulSet gibt Pods stabile Identitäten – das DaemonSet sorgt für die flächendeckende Abdeckung aller Nodes.