Pods mit DaemonSets ausführen

KubernetesBeginner
Jetzt üben

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.

  1. In das Arbeitsverzeichnis navigieren:

    Öffnen Sie das Terminal und wechseln Sie in den Standard-Projektordner:

    cd /home/labex/project
    
  2. Minikube 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.
  3. Überprüfen, ob Minikube läuft:

    Prüfen Sie den Status des Minikube-Clusters:

    minikube status
    
    • Achten Sie darauf, dass Komponenten wie kubelet und apiserver als Running aufgeführt sind.
    • Falls der Cluster nicht läuft, führen Sie minikube start erneut aus.

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.