Einführung
Taints und Tolerationen werden in Kubernetes verwendet, um anzugeben, welche Knoten (Nodes) für die Planung bestimmter Pods geeignet sind. Taints werden auf Knoten angewendet, um Pods abzuwehren, während Tolerationen auf Pods angewendet werden, um sie zu bestimmten Knoten zu ziehen. In diesem Lab (LabEx) werden wir lernen, wie man Taints und Tolerationen verwendet, um Pods auf bestimmten Knoten zu planen.
Starten Sie 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 zu Ihrem Arbeitsverzeichnis:
Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:
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.
Erstellen eines getainten Knotens (Tainted Node)
In diesem Schritt werden wir einen Knoten mit einem Taint erstellen, der bestimmte Pods abwehrt.
- Kennzeichnen Sie einen Knoten mit einer benutzerdefinierten Bezeichnung (Label):
kubectl label nodes minikube disk-type=ssd
- Tainten Sie den Knoten mit dem folgenden Befehl:
kubectl taint nodes minikube disk-type=ssd:NoSchedule
Der Effekt NoSchedule verhindert, dass Pods ohne Tolerationen auf diesem Knoten geplant werden.
Erstellen eines Pods ohne Tolerationen
In diesem Schritt werden wir einen Pod ohne Tolerationen erstellen und überprüfen, dass er nicht auf dem getainten Knoten (Tainted Node) geplant werden kann.
- Erstellen Sie eine Datei mit dem Namen
pod-without-toleration.yamlmit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
name: pod-without-toleration
spec:
containers:
- name: nginx
image: nginx:latest
- Wenden Sie die Änderungen an:
kubectl apply -f pod-without-toleration.yaml
- Überprüfen Sie, dass der Pod nicht auf dem getainten Knoten geplant wird:
kubectl describe pod pod-without-toleration | grep -i taint
Die Ausgabe sollte zeigen, dass der Pod nicht auf dem Knoten mit dem Taint geplant wird.
Erstellen eines Pods mit Tolerationen
In diesem Schritt werden wir einen Pod mit Tolerationen erstellen, der es ihm ermöglicht, auf dem getainten Knoten (Tainted Node) geplant zu werden.
- Erstellen Sie eine Datei mit dem Namen
pod-with-toleration.yamlmit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-toleration
spec:
containers:
- name: nginx
image: nginx:latest
tolerations:
- key: "disk-type"
operator: "Equal"
value: "ssd"
effect: "NoSchedule"
- Wenden Sie die Änderungen an:
kubectl apply -f pod-with-toleration.yaml
- Überprüfen Sie, dass der Pod auf dem getainten Knoten geplant wird:
kubectl get pod pod-with-toleration -o wide
Tolerieren mehrerer Taints
In diesem Schritt werden wir einen Pod mit mehreren Tolerationen erstellen, der es ihm ermöglicht, auf Knoten mit mehreren Taints geplant zu werden.
- Erstellen Sie eine Datei mit dem Namen
pod-with-multiple-tolerations.yamlmit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-multiple-tolerations
spec:
containers:
- name: nginx
image: nginx:latest
tolerations:
- key: "disk-type"
operator: "Equal"
value: "ssd"
effect: "NoSchedule"
- key: "gpu"
operator: "Equal"
value: "true"
effect: "NoSchedule"
- Wenden Sie die Änderungen an:
kubectl apply -f pod-with-multiple-tolerations.yaml
- Überprüfen Sie, dass der Pod auf einem Knoten mit beiden Taints geplant wird:
kubectl get pod pod-with-multiple-tolerations -o wide
Zusammenfassung
In diesem Lab haben wir gelernt, wie man Taints und Tolerationen verwendet, um Pods auf bestimmten Knoten zu planen. Wir haben begonnen, indem wir einen getainten Knoten (Tainted Node) erstellt und überprüft haben, dass Pods ohne Tolerationen nicht auf ihm geplant werden können. Anschließend haben wir einen Pod mit Tolerationen erstellt und überprüft, dass er auf dem getainten Knoten geplant werden kann. Schließlich haben wir einen Pod mit mehreren Tolerationen erstellt und überprüft, dass er auf Knoten mit mehreren Taints geplant werden kann.
Taints und Tolerationen sind eine leistungsstarke Funktion von Kubernetes, die verwendet werden kann, um sicherzustellen, dass bestimmte Workloads nur auf bestimmten Knoten geplant werden.


