DaemonSets für Node-spezifische Aufgaben
Verwenden Sie DaemonSets, um für Clusteroperationen eine Kopie eines Pods auf allen oder ausgewählten Nodes Ihres Clusters auszuführen.
DaemonSets für Node-spezifische Aufgaben ist eine kostenlose Kubernetes Basics-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kubernetes Basics-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Was sind DaemonSets?
Stellen Sie sich vor, Sie benötigen ein bestimmtes Tool oder einen bestimmten Service auf jedem Server in Ihrem Cluster. Ein Beispiel wäre ein Logging-Agent, der Protokolle von jeder Maschine sammelt.
Hier kommen DaemonSets ins Spiel! Anders als Deployments, die eine bestimmte Anzahl von Pods irgendwo im Cluster aktiv halten sollen, stellen DaemonSets sicher, dass eine Kopie eines Pods auf allen oder ausgewählten Nodes ausgeführt wird.
Häufige Einsatzmöglichkeiten von DaemonSets
DaemonSets eignen sich ideal für Aufgaben, die auf Node-Ebene ausgeführt werden müssen. Hier sind einige häufige Beispiele:
- Logging-Agents: Tools wie Fluentd oder Logstash, die Protokolle von jedem Node sammeln.
- Monitoring-Agents: Prometheus Node Exporter, der Metriken von jedem Server erfasst.
- Storage-Daemons: Services wie GlusterFS oder Ceph, die auf jedem Node verteilten Speicher bereitstellen.
- Netzwerk-Proxys: Der Kubernetes-eigene Kube-proxy wird als DaemonSet ausgeführt, um Netzwerkregeln zu verwalten.
Einfaches DaemonSet-Manifest
Die Definition eines DaemonSets sieht einem Deployment sehr ähnlich. Der entscheidende Unterschied ist kind: DaemonSet. Sehen wir uns eine grundlegende Struktur an:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: my-daemonset-app
template:
metadata:
labels:
app: my-daemonset-app
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo 'Hello from DaemonSet on node $(NODE_NAME)'; sleep 3600"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameWichtige Bestandteile des YAMLs
Sehen wir uns die wichtigen Abschnitte unseres DaemonSet-Manifests im Detail an:
kind: DaemonSet: Damit wird Kubernetes mitgeteilt, dass wir Node-spezifische Pods verwalten möchten.spec.selector: Unverzichtbar! Dieser Abschnitt definiert mithilfe von Labels, wie das DaemonSet seine Pods findet und verwaltet.spec.template: Dies ist die eigentliche Pod-Definition. Sie entspricht fast vollständig der Pod-Vorlage, die Sie in einem Deployment finden würden. Sie beschreibt die Container, Volumes und weitere Einstellungen für den Pod, der auf jedem Node ausgeführt wird.
Bereitstellung auf allen Nodes
Hier sehen Sie ein einfaches DaemonSet, das auf jedem geeigneten Node einen busybox-Container ausführt. Es gibt eine Meldung aus, die angibt, auf welchem Node es ausgeführt wird.
Dies ist ein gängiges Muster für clusterweite Agents.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-hello-daemon
spec:
selector:
matchLabels:
app: node-hello
template:
metadata:
labels:
app: node-hello
spec:
containers:
- name: hello-container
image: busybox
command: ["sh", "-c", "while true; do echo 'Hello from node: $(NODE_NAME)'; sleep 5; done"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameIhr DaemonSet starten
Um das DaemonSet in Ihrem Kubernetes-Cluster zu erstellen, verwenden Sie den bekannten Befehl kubectl apply mit der gerade gezeigten YAML-Datei:
kubectl apply -f node-hello-daemonset.yaml
Kubernetes stellt anschließend sicher, dass auf jedem Node, der die Kriterien des DaemonSets erfüllt, ein Pod eingeplant wird.
Zustand des DaemonSets prüfen
Nach der Anwendung können Sie den Status Ihres DaemonSets und der von ihm erstellten Pods prüfen:
- DaemonSet anzeigen:
kubectl get ds - Die auf den einzelnen Nodes ausgeführten Pods anzeigen:
kubectl get pods -l app=node-hello -o wide
Mit der Option -o wide sehen Sie, auf welchem Node die einzelnen Pods eingeplant sind.
DaemonSets auf ausgewählten Nodes
Was ist, wenn Ihr DaemonSet nur auf einer Teilmenge Ihrer Nodes ausgeführt werden soll? Zum Beispiel nur auf Nodes mit einer GPU oder auf Nodes, die für Speicher vorgesehen sind.
Dies erreichen Sie mit nodeSelector. Dieses Feld in der spec des Pods innerhalb der Vorlage des DaemonSets ermöglicht es Ihnen, Node-Labels anzugeben, die ein Node besitzen muss, damit der Pod dort eingeplant wird.
Node-Selectoren in YAML verwenden
Ändern wir unser vorheriges DaemonSet so, dass es nur auf Nodes mit dem Label disktype: ssd ausgeführt wird. Zuerst müssen Sie Ihre Nodes mit diesem Label versehen, z. B. mit kubectl label node <node-name> disktype=ssd.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ssd-monitor-daemon
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disktype: ssd # Only runs on nodes with this label
containers:
- name: monitor-container
image: busybox
command: ["sh", "-c", "while true; do echo 'Monitoring SSD on node: $(NODE_NAME)'; sleep 10; done"]
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeNameFunktionen von DaemonSets
Sie haben gelernt, wie DaemonSets funktionieren. Testen wir nun Ihr Verständnis!
DaemonSets: Die wichtigsten Erkenntnisse
Sehr gut! Sie haben die Kubernetes-DaemonSets erfolgreich kennengelernt.
- DaemonSets stellen sicher, dass auf jedem geeigneten Node ein Pod ausgeführt wird.
- Sie sind für Vorgänge auf Node-Ebene wie Logging-, Monitoring- und Storage-Agents besonders wichtig.
- Mit
nodeSelectorkönnen Sie bestimmte Nodes auswählen. - DaemonSets werden mit
kind: DaemonSetdefiniert und verwenden ähnlich wie Deployments eine Pod-Vorlage.
Als Nächstes beschäftigen Sie sich mit StatefulSets zur Verwaltung zustandsbehafteter Anwendungen!
Häufig gestellte Fragen
Ist die Lektion „DaemonSets für Node-spezifische Aufgaben“ kostenlos?
Ja — der vollständige Text von „DaemonSets für Node-spezifische Aufgaben“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kubernetes Basics-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kubernetes Basics-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „DaemonSets für Node-spezifische Aufgaben“?
Verwenden Sie DaemonSets, um für Clusteroperationen eine Kopie eines Pods auf allen oder ausgewählten Nodes Ihres Clusters auszuführen. Du übst Kubernetes Basics mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Kubernetes Basics zu starten?
Keine Vorkenntnisse erforderlich. Kubernetes Basics auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „DaemonSets für Node-spezifische Aufgaben“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Kubernetes Basics-Lektion Code schreiben und ausführen?
Ja. Jede Kubernetes Basics-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- StatefulSets für zustandsbehaftete Apps
- DaemonSets für Node-spezifische Aufgaben
- Kubernetes-Operatoren verstehen
- Custom Resource Definitions (CRDs)