Erstellen von Kubernetes DaemonSets
Gilt für: AKS auf Azure Local 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. undLogstash
. - Führen Sie einen Knotenüberwachungsdaemon aus, z
Prometheus
. B. . - Führen Sie einen Clusterspeicherdaemon aus, z
glusterd
. B. oderceph
.
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: null
labels:
app: nginx
containers: null
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.