Einführung
In Kubernetes ist ein DaemonSet eine Art Controller, der sicherstellt, dass auf jedem Knoten im Cluster eine Kopie eines Pods ausgeführt wird. Dieses Lab führt Sie durch den Prozess der Erstellung eines DaemonSets, um Pod-Replikate auf jedem Knoten des Clusters bereitzustellen.
Minikube-Cluster starten
Bevor Sie Ressourcen erstellen können, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichtgewichtige Kubernetes-Umgebung, die auf Ihrem lokalen Rechner ausgeführt wird.
In das Arbeitsverzeichnis navigieren:
Öffnen Sie das Terminal und wechseln Sie in den Standard-Projektordner:
cd /home/labex/projectMinikube starten:
Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:
minikube start- Dieser Befehl richtet einen Single-Node-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
- Je nach Leistung Ihres Systems kann der Start von Minikube einige Minuten in Anspruch nehmen.
Überprüfen, ob Minikube läuft:
Prüfen Sie den Status des Minikube-Clusters:
minikube status- Achten Sie darauf, dass Komponenten wie
kubeletundapiserveralsRunningaufgeführt sind. - Falls der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Achten Sie darauf, dass Komponenten wie
Sollten beim Starten von Minikube Probleme auftreten, können Sie die Umgebung bei Bedarf mit minikube delete zurücksetzen.
Einen Pod erstellen
Erstellen Sie einen einfachen Pod, der als Vorlage für die Replikate dienen soll. 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 dem folgenden Befehl:
kubectl apply -f /home/labex/project/myapp-pod.yaml
Ein DaemonSet erstellen
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 dem folgenden Befehl:
kubectl apply -f /home/labex/project/myapp-daemonset.yaml
Das DaemonSet überprüfen
Überprüfen Sie, ob das DaemonSet erstellt wurde und ob Replikate des myapp-pod auf jedem Knoten laufen. Verwenden Sie den folgenden Befehl, um die Knoten im Cluster aufzulisten:
kubectl get nodes
Verwenden Sie den folgenden Befehl, um die vom DaemonSet erstellten Pods aufzulisten:
kubectl get pods -l app=myapp
Sie sollten für jeden Knoten im Cluster einen Pod sehen.
Das DaemonSet aktualisieren
Aktualisieren Sie das DaemonSet, um das vom 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 Image des myapp-container zu busybox und setzt den Befehl auf sleep 3600.
Aktualisieren Sie das DaemonSet mit dem folgenden Befehl:
kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml
Überprüfen Sie, ob das DaemonSet aktualisiert wurde und ob die Replikate des myapp-pod mit dem neuen Image laufen. Verwenden Sie den folgenden Befehl, um die vom DaemonSet erstellten Pods aufzulisten:
kubectl get pods -l app=myapp
Sie sollten nun neue Pods sehen, die mit dem aktualisierten Image erstellt wurden.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie man ein DaemonSet in Kubernetes verwendet, um Pod-Replikate auf jedem Knoten eines Clusters auszuführen.


