Einführung
In Kubernetes ist ein DaemonSet eine Art von Controller, der sicherstellt, dass eine Kopie eines Pods auf jedem Knoten im Cluster ausgeführt wird. In diesem Lab werden Sie durch den Prozess der Erstellung eines DaemonSets geführt, um Replikate eines Pods auf jedem Knoten im Cluster auszuführen.
Starte das Minikube-Cluster
Bevor Sie Ressourcen erstellen, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichte Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.
Navigieren Sie in Ihr Arbeitsverzeichnis:
Öffnen Sie das Terminal und navigieren Sie in den Standardprojektordner:
cd /home/labex/projectStarten Sie Minikube:
Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:
minikube start- Dieser Befehl richtet einen Ein-Knoten-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
- Minikube kann je nach Leistung Ihres Systems einige Minuten dauern, um zu starten.
Überprüfen Sie, ob Minikube läuft:
Überprüfen Sie den Status des Minikube-Clusters:
minikube status- Suchen Sie nach Komponenten wie
kubeletundapiserver, die alsRunningaufgeführt sind. - Wenn der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Suchen Sie nach Komponenten wie
Wenn Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.
Erstelle einen Pod
Erstellen Sie einen einfachen Pod, der als Vorlage für die Replikate verwendet wird. Erstellen Sie eine Datei namens /home/labex/project/myapp-pod.yaml mit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
Erstellen Sie den Pod mit folgendem Befehl:
kubectl apply -f /home/labex/project/myapp-pod.yaml
Erstelle ein DaemonSet
Erstellen Sie ein DaemonSet, um Replikate des myapp-pod auf jedem Knoten im Cluster auszuführen. Erstellen Sie eine Datei namens /home/labex/project/myapp-daemonset.yaml mit folgendem Inhalt:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
Dieses DaemonSet verwendet den myapp-pod als Vorlage für die Replikate und setzt den matchLabels-Selektor auf app: myapp, um sicherzustellen, dass die Replikate auf jedem Knoten erstellt werden.
Erstellen Sie das DaemonSet mit folgendem Befehl:
kubectl apply -f /home/labex/project/myapp-daemonset.yaml
Überprüfe das DaemonSet
Überprüfen Sie, ob das DaemonSet erstellt wurde und ob Replikate des myapp-pod auf jedem Knoten ausgeführt werden. Verwenden Sie den folgenden Befehl, um die Knoten im Cluster aufzulisten:
kubectl get nodes
Verwenden Sie den folgenden Befehl, um die von dem DaemonSet erstellten Pods aufzulisten:
kubectl get pods -l app=myapp
Sie sollten für jeden Knoten im Cluster einen Pod sehen.
Aktualisiere das DaemonSet
Aktualisieren Sie das DaemonSet, um das von myapp-container verwendete Image zu ändern. Erstellen Sie eine Datei namens /home/labex/project/myapp-daemonset-update.yaml mit folgendem Inhalt:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ["sleep", "3600"]
Dieses aktualisierte DaemonSet ändert das von myapp-container verwendete Image auf busybox und setzt den Befehl auf sleep 3600.
Aktualisieren Sie das DaemonSet mit folgendem Befehl:
kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml
Überprüfen Sie, ob das DaemonSet aktualisiert wurde und ob Replikate des myapp-pod mit dem neuen Image ausgeführt werden. Verwenden Sie den folgenden Befehl, um die von dem DaemonSet erstellten Pods aufzulisten:
kubectl get pods -l app=myapp
Sie sollten neue Pods sehen, die mit dem aktualisierten Image erstellt wurden.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie ein DaemonSet in Kubernetes verwenden, um Replikate eines Pods auf jedem Knoten im Cluster auszuführen.


