Inhaltsverzeichnis

Tolerierungen (Tolerations) unter Kubernetes

In Kubernetes ermöglichen Tolerierungen, dass Pods auf Knoten platziert werden können, die bestimmte Taints (Verunreinigungen) aufweisen. Sie sind das Gegenstück zu „Taints“, die auf Knoten angewendet werden, um zu verhindern, dass Pods standardmäßig auf ihnen geplant werden.

Stell dir vor, du hast einen Kubernetes-Cluster und möchtest bestimmte Knoten für spezielle Aufgaben reservieren, z.B. für GPU-intensive Workloads oder für kritische Systemkomponenten. Du möchtest verhindern, dass gewöhnliche Pods auf diesen speziellen Knoten landen und deren Ressourcen unnötig belegen. Hier kommen Taints und Tolerierungen ins Spiel.

Wie funktionieren Taints und Tolerierungen zusammen?

1. Taints auf Knoten:
Ein Administrator kann einem Knoten einen oder mehrere Taints hinzufügen. Ein Taint ist ein Schlüssel-Wert-Paar, das mit einem „Effekt“ verknüpft ist. Der Effekt bestimmt, was passiert, wenn ein Pod keine entsprechende Tolerierung für diesen Taint hat.

Beispiele für Effekte:


Beispiel für das Hinzufügen eines Taints zu einem Knoten:

kubectl taint nodes node1 specialpurpose=true:NoSchedule

Dieser Befehl fügt dem Knoten node1 den Taint specialpurpose=true mit dem Effekt NoSchedule hinzu.

2. Tolerierungen in Pods:
Um zu erlauben, dass ein Pod auf einem Knoten mit einem bestimmten Taint geplant wird, musst du dem Pod entsprechende Tolerierungen hinzufügen. Eine Tolerierung spezifiziert, welche Taints der Pod tolerieren kann.
Beispiel für Tolerierungen in einer Pod-Definition (YAML):

apiVersion: v1
kind: Pod
metadata:
  name: my-special-pod
spec:
  containers:
  - name: my-container
    image: my-image
  tolerations:
  - key: "specialpurpose"
    operator: "Equal"
    value: "true"
    effect: "NoSchedule"

In diesem Beispiel hat der Pod my-special-pod eine Tolerierung für den Taint specialpurpose=true mit dem Effekt NoSchedule. Das bedeutet, dieser Pod kann auf Knoten geplant werden, die diesen spezifischen Taint haben.

Wichtige Felder einer Tolerierung:

Anwendungsfälle für Taints und Tolerierungen

Unterschied zu Node Affinity/Anti-Affinity

Man kann beide Mechanismen auch kombinieren, um eine sehr detaillierte Steuerung der Pod-Platzierung zu erreichen.