Erstellen von Kubernetes DaemonSets

Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server

In diesem Artikel wird beschrieben, wie Sie ein Kubernetes DaemonSet in AKS erstellen und verwenden, das von Azure Arc aktiviert ist, um sicherzustellen, dass eine Kopie eines Pods immer auf jedem Arbeitsknoten in einem Cluster verfügbar ist. Sie können ein DaemonSet verwenden, um die Clusterleistung zu verbessern, indem Sie sicherstellen, dass eine App auf allen Arbeitsknoten ausgeführt wird, und Pods bereitstellen, die Wartungs- und Supportdienste für Knoten bereitstellen.

Übersicht über DaemonSets

Ein DaemonSet ist ein Kubernetes-Objekt, das sicherstellt, dass eine Kopie eines in der Konfiguration definierten Pods immer auf jedem Arbeitsknoten in einem Cluster verfügbar ist. Wenn einem Cluster ein neuer Knoten hinzugefügt wird, ordnet das DaemonSet den Pod automatisch auf diesem Knoten zu.

Ebenso wird beim Löschen eines Knotens auch der auf dem Knoten ausgeführte Pod gelöscht und nicht auf einem anderen Knoten neu geplant (z. B. wie bei ReplicaSets). Auf diese Weise können Sie Die Planungsbeschränkungen von Kubernetes überwinden und sicherstellen, dass eine bestimmte Anwendung auf allen Knoten innerhalb des Clusters bereitgestellt wird.

DaemonSets können die Gesamtleistung des Clusters verbessern. Sie können sie beispielsweise zur Bereitstellung von Pods verwenden, um Wartungstasks auszuführen und Dienste für jeden Knoten zu unterstützen:

  • Führen Sie einen Protokollsammlungsdaemon aus, z Fluentd . B. und Logstash.
  • Führen Sie einen Knotenüberwachungsdaemon aus, z Prometheus. B. .
  • Führen Sie einen Clusterspeicherdaemon aus, z glusterd . B. oder ceph.

DaemonSets erstellen zwar standardmäßig einen Pod auf jedem Knoten, Sie können aber die Anzahl zulässiger Knoten begrenzen, indem Sie vorab das Knotenselektorfeld in der YAML-Datei definieren. Der DaemonSet-Controller erstellt nur Pods auf Knoten, die mit der Knotenauswahl übereinstimmen.

In der Regel stellt ein DaemonSet einen Daemontyp auf allen Knoten bereit. Es kommt aber auch vor, dass mehrere DaemonSets einen Daemontyp mithilfe verschiedener Bezeichnungen steuern. Eine Kubernetes-Bezeichnung gibt Bereitstellungsregeln basierend auf den Merkmalen einzelner Knoten an.

Weitere Informationen zur Verwendung von DaemonSets finden Sie unter Kubernetes DaemonSets.

Erstellen eines DaemonSets

Sie beschreiben ein DaemonSet mithilfe einer YAML-Datei und erstellen es dann mit den Befehlen kubectl create oder kubectl apply (z. B. kubectl create –f example-daemon.yaml).

Im folgenden Beispiel werden die Merkmale einer DaemonSet-Konfigurationsdatei beschrieben, die ein nginx-Image verwendet:

apiVersion: apps/v1  
kind: DaemonSet  
metadata: 
      labels: 
         app: nginx
      name: example-daemon
spec:  
  template:
    metadata:
    labels:
             app: nginx
          spec:  
    containers:  
        -name: nginx  
         image: nginx

Wenn Sie den aktuellen Zustand des DaemonSets anzeigen möchten, verwenden Sie den Befehl kubectl describe (z. B. kubectl describe daemonset example-daemon).

Beschränken des DaemonSets auf bestimmte Knoten

Standardmäßig erstellen DaemonSets Pods auf allen Knoten in einem Cluster. Mit Knotenselektoren können Sie sie jedoch so konfigurieren, dass Pods nur auf bestimmten Knoten erstellt werden. Wenn Sie ein DaemonSet auf bestimmte Knoten beschränken möchten, verwenden Sie den Befehl kubectl label.

Aktualisieren eines DaemonSets

Sie können ein DaemonSet mithilfe des Befehls kubectl edit ds<NAME> aktualisieren. Es wird jedoch empfohlen, die ursprüngliche Konfigurationsdatei zu bearbeiten und dann den kubectl apply Befehl zu verwenden, als er ursprünglich erstellt wurde. Nachdem Sie ein Update angewendet haben, können Sie den Aktualisierungsstatus mithilfe des kubectl rollout status ds <daemonset-name> Befehls anzeigen.

Löschen eines DaemonSets

Verwenden Sie zum Entfernen eines DaemonSets den Befehl kubectl delete (z. B. kubectl delete –f example-daemon.yaml -n monitoring). Sie sollten vorsichtig sein, wenn Sie den Namen der DaemonSet-Datei angeben, da beim Löschen eines DaemonSets alle bereitgestellten Pods bereinigt werden.

Nächste Schritte