Share via


Erstellen von Kubernetes DaemonSets

Gilt für: AKS in 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 auf jedem Workerknoten in einem Cluster immer eine Kopie eines Pods verfügbar ist. Sie können ein DaemonSet verwenden, um die Clusterleistung zu verbessern, indem Sie sicherstellen, dass eine App auf allen Workerknoten 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 immer eine Kopie eines in der Konfiguration definierten Pods auf jedem Workerknoten 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 Pod, der auf dem Knoten ausgeführt wird, gelöscht und nicht auf einem anderen Knoten neu geplant (z. B. wie bei ReplicaSets). Dadurch können Sie Kubernetes-Planungsbeschränkungen ü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 der Knotenauswahl entsprechen.

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, wenn er ursprünglich erstellt wurde. Nachdem Sie ein Update angewendet haben, können Sie das Update status mit dem kubectl rollout status ds <daemonset-name> Befehl 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 das Löschen eines DaemonSets alle bereitgestellten Pods bereinigt.

Nächste Schritte