Taints und Tolerations
Verhindern Sie mithilfe von Taints, dass Pods auf bestimmten Nodes eingeplant werden, und erlauben Sie ausgewählten Pods, diese zu tolerieren.
Taints und Tolerations ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was sind Taints?
Stellen Sie sich vor, Sie haben spezielle Nodes in Ihrem Kubernetes-Cluster, etwa mit bestimmter Hardware wie GPUs oder Nodes, die für bestimmte Workloads reserviert sind. Sie möchten dort sicherlich nicht jeden beliebigen Pod platzieren, oder?
Hier kommen Taints ins Spiel! Ein Taint ist eine Eigenschaft eines Nodes, die verhindert, dass Pods dort eingeplant werden, sofern diese den Taint nicht ausdrücklich „tolerieren“.
Gründe für die Verwendung von Taints
Taints sind äußerst nützlich, um zu steuern, wo Pods ausgeführt werden:
- Dedizierte Nodes: Reservieren Sie Nodes für bestimmte Teams oder Anwendungen.
- Spezielle Hardware: Isolieren Sie Nodes mit GPUs oder leistungsstarken SSDs für Pods, die diese benötigen.
- Wartung: Markieren Sie einen Node als in Wartung befindlich, damit dort vorübergehend keine neuen Pods eingeplant werden.
Funktionsweise von Taints
Betrachten Sie einen Taint als ein „Betreten verboten“-Schild an einem Node. Ein Pod kann dieses Schild nur ignorieren, wenn er eine passende „Genehmigung“ besitzt, die Toleration genannt wird.
Ein Taint besteht aus einem Schlüssel, einem Wert und einem Effekt. Beispiel: key=value:effect.
Taint-Effekte verstehen
Der Teil „effect“ eines Taints teilt Kubernetes mit, was mit Pods geschehen soll, die ihn nicht tolerieren. Es gibt drei Haupteffekte:
NoSchedulePreferNoScheduleNoExecute
Sehen wir uns jeden davon an.
Taint-Effekt: NoSchedule
Der Effekt NoSchedule ist der strengste. Wenn ein Node einen Taint mit NoSchedule besitzt, wird kein Pod auf diesem Node eingeplant, sofern er nicht über eine passende Toleration verfügt.
Pods, die bereits auf dem Node ausgeführt werden, sind von einem neuen Taint mit NoSchedule NICHT betroffen.
Taint-Effekt: PreferNoSchedule
PreferNoSchedule ist eine „weiche“ Variante von NoSchedule. Kubernetes versucht nach Möglichkeit, Pods nicht auf einem mit einem Taint versehenen Node einzuplanen, es handelt sich jedoch nicht um eine harte Anforderung.
Wenn keine anderen geeigneten Nodes vorhanden sind, kann ein Pod auch ohne Toleration auf einem Node mit dem Taint PreferNoSchedule eingeplant werden.
Taint-Effekt: NoExecute
Der Effekt NoExecute ist einzigartig, da er *bereits ausgeführte* Pods betrifft. Wenn ein Node einen Taint mit NoExecute besitzt:
- Pods ohne passende Toleration werden *sofort entfernt*.
- Neue Pods ohne passende Toleration können nicht eingeplant werden.
Dies wird häufig verwendet, um Nodes zu leeren oder Node-Ausfälle zu behandeln.
Tolerations kennenlernen
Während Taints auf Nodes angewendet werden, werden Tolerations auf Pods angewendet. Die Toleration eines Pods ermöglicht es, ihn auf einem Node mit einem passenden Taint einzuplanen.
Ohne passende Toleration kann ein Pod nicht auf einem Node mit Taint eingeplant werden (oder wird dort nach Möglichkeit nicht eingeplant).
Tolerations in Pod-Manifesten
Sie definieren Tolerations im YAML-Manifest eines Pods unter dem Abschnitt spec. So toleriert ein Pod einen Taint mit key=value:NoSchedule:
apiVersion: v1
kind: Pod
metadata:
name: my-tolerated-pod
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "special-purpose"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"Wie Taints und Tolerations zusammenpassen
Damit ein Pod auf einem Node mit Taint eingeplant werden kann, muss seine Toleration mit dem Taint des Nodes übereinstimmen. Die Übereinstimmung umfasst:
- Schlüssel: Muss identisch sein.
- Wert: Muss bei
operator: Equalidentisch sein. - Effekt: Muss identisch sein.
- Operator: Kann
EqualoderExistssein (also jeder beliebige Wert für den Schlüssel).
Eine spezielle Toleration key: "" operator: Exists toleriert *jeden* Taint.
Schnelltest: Taints
Ein Node besitzt den Taint env=production:NoSchedule. Welche Pod-Konfiguration würde ermöglichen, dass der Pod auf diesem Node eingeplant wird?
Zusammenfassung: Taints und Tolerations
Sie haben Taints und Tolerations kennengelernt!
- Taints werden auf Nodes angewendet, um Pods fernzuhalten.
- Tolerations werden auf Pods angewendet, damit diese auf Nodes mit Taints eingeplant werden können.
- Die wichtigsten Taint-Effekte sind
NoSchedule,PreferNoScheduleundNoExecute. - Tolerations müssen mit dem Schlüssel, dem Wert und dem Effekt des Taints übereinstimmen, damit ein Pod eingeplant werden kann.
Mit diesen Werkzeugen können Sie die Platzierung von Pods sehr genau steuern!
Häufig gestellte Fragen
Ist die Lektion „Taints und Tolerations“ kostenlos?
Ja — der vollständige Text von „Taints und Tolerations“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Taints und Tolerations“?
Verhindern Sie mithilfe von Taints, dass Pods auf bestimmten Nodes eingeplant werden, und erlauben Sie ausgewählten Pods, diese zu tolerieren. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Taints und Tolerations“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Ressourcenanforderungen und -limits
- Node-Selektoren und Affinität
- Taints und Tolerations
- Pod-Priorität und Preemption