Taint
Bei Taints handelt es sich um Objekte, welche die Planung von Pods auf Nodes verhindern
Ein “Taint” ist ein Kernobjekt in Kubernetes, das aus drei erforderlichen Eigenschaften besteht: Schlüssel, Wert und Effekt. Taints verhindern die Planung von Pods auf Nodes oder Node-Gruppen.
Taints und Tolerations arbeiten zusammen, um sicherzustellen, dass Pods nicht auf ungeeigneten Nodes geplant werden. Ein oder mehrere Taints werden einem Node zugewiesen. Ein Node sollte nur einen Pod planen, der die entsprechenden Tolerations für die konfigurierten Taints aufweist.
Taints werden normalerweise verwendet, um Nodes zu markieren, die möglicherweise bestimmte Einschränkungen haben oder für spezielle Aufgaben vorgesehen sind. Zum Beispiel könnten Sie einen Node mit einem Taint markieren, der angibt, dass er nur für speicherintensive Pods geeignet ist. In diesem Fall würden nur Pods mit der entsprechenden Tolerierung für den Speicher-Taint auf diesem Node geplant werden.
Die Effekte eines Taints können entweder “NoSchedule”, “PreferNoSchedule” oder “NoExecute” sein. “NoSchedule” bedeutet, dass keine Pods ohne passende Tolerierung auf diesem Node geplant werden können. “PreferNoSchedule” bedeutet, dass Pods ohne passende Tolerierung zwar geplant werden können, aber andere Nodes bevorzugt werden sollten. “NoExecute” bedeutet, dass vorhandene Pods auf dem Node, die keine passende Tolerierung haben, entfernt werden sollen.
Tolerations werden in Pod-Spezifikationen angegeben und geben an, welche Taints ein Pod akzeptieren kann. Wenn ein Pod eine Tolerierung für einen bestimmten Taint aufweist, kann er auf einem Node mit diesem Taint geplant werden.
Die Verwendung von Taints und Tolerations ermöglicht es Kubernetes-Administratoren, die Workloads besser zu steuern und sicherzustellen, dass sie auf den richtigen Nodes laufen. Dies ist besonders nützlich in Umgebungen mit unterschiedlichen Hardwarekonfigurationen oder spezialisierten Nodes für bestimmte Aufgaben.
Link zum offiziellen Glossar