0Pricing
DevOps Bootcamp · Lektion

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 DevOps Bootcamp-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 DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-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.nodeName

Wichtige 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.nodeName

Ihr 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.nodeName

Funktionen 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 nodeSelector können Sie bestimmte Nodes auswählen.
  • DaemonSets werden mit kind: DaemonSet definiert 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 DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-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 DevOps Bootcamp 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 DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp 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 DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-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

  1. StatefulSets für zustandsbehaftete Apps
  2. DaemonSets für Node-spezifische Aufgaben
  3. Kubernetes-Operatoren verstehen
  4. Custom Resource Definitions (CRDs)
← Zurück zu DevOps Bootcamp