Middle+
Welche Regeln verbieten das Starten eines bestimmten Knotens im System?
sobes.tech KI
Antwort von AI
Die folgenden Hauptmechanismen existieren:
-
Taints und Tolerations (T/T):
- Taints (Verschmutzungs-Tags): Werden auf Knoten angewendet. Ermöglichen es einem Knoten, Pods "abzuweisen", die die entsprechende Toleranz nicht haben.
- Tolerations (Toleranzen): Werden auf Pods angewendet. Ermöglichen es einem Pod, auf einem Knoten zu laufen, der eine entsprechende Verschmutzungs-Markierung hat.
Arten von Taint-Effekten:
NoSchedule- Der Pod wird nicht auf dem Knoten geplant, wenn er die entsprechende Toleranz nicht hat.PreferNoSchedule- Der Scheduler versucht, den Pod nicht auf diesem Knoten zu platzieren, kann es aber tun, wenn keine anderen Optionen bestehen.NoExecute- Der Pod wird nicht auf dem Knoten platziert, und Pods, die bereits auf dem Knoten ohne die entsprechende Toleranz laufen, werden verdrängt.
-
Node Affinity (Knoten-Affinität):
requiredDuringSchedulingIgnoredDuringExecution: Der Scheduler muss den Pod auf einem Knoten platzieren, der die angegebenen Affinitätskriterien erfüllt. Wenn keine passenden Knoten vorhanden sind, bleibt der Pod im Pending-Status.preferredDuringSchedulingIgnoredDuringExecution: Der Scheduler versucht den Pod auf einem Knoten zu platzieren, der die Affinitätskriterien erfüllt. Wenn keine passenden Knoten vorhanden sind, kann der Pod auf anderen Knoten platziert werden.
-
Kubelet-Konfiguration:
Es können Kubelet-Einstellungen verwendet werden, um die Arten von Pods zu beschränken, die auf einem bestimmten Knoten ausgeführt werden dürfen, z.B. durch
static podsodermanifests. Dies ist jedoch weniger flexibel für die dynamische Verwaltung.
# Beispiel Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Beispiel Toleration
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Beispiel Node Affinity
apiVersion: v1
kind: Pod
metadata:
name: my-pod-with-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
- node2
containers:
- name: my-container
image: nginx