Schreiben Sie über Makel und Toleranz in K8s

In Kubernetes können Sie Taints (Taints) zum Markieren von Knoten verwenden, um zu verhindern, dass Pods auf ungeeigneten Knoten geplant werden. Der Taint befindet sich auf Knotenebene. Zur Steuerung der Pod-Planung können verschiedene Ebenen und entsprechende Toleranzebenen angegeben werden.

Zu den Verschmutzungsgraden gehören:

  • NoSchedule: Pods werden nicht auf Knoten mit diesem Taint geplant.
  • PreferNoSchedule: Pods werden nicht bevorzugt auf einem Knoten mit diesem Taint geplant, können aber auf diesem Knoten geplant werden, wenn keine anderen Knoten verfügbar sind.
  • NoExecute: Wenn auf dem Knoten bereits ein Pod mit diesem Taint vorhanden ist, wird der Pod entfernt.

Zu den entsprechenden Toleranzgrenzen gehören:

  • NoSchedule: Pods werden nicht auf Knoten mit diesem Taint eingeplant, es sei denn, der Pod verfügt über eine Toleranzstufe, die dem Taint entspricht.
  • PreferNoSchedule: Pods können auf Knoten mit diesem Taint eingeplant werden, aber Pods mit einer höheren Toleranzstufe werden berücksichtigt.
  • NoExecute: Pods sind nicht betroffen, wenn sie bereits auf dem Knoten ausgeführt werden.

Sie können den Befehl verwenden, um einen Taint zu einem Knoten hinzuzufügen kubectl taint nodes node-name taint-key=taint-value:taint-effect, wobei taint-keySie taint-valueden Namen und den Wert des Taints sowie taint-effectdie Ebene des Taints definieren. Beispielsweise wird dem Knoten mit dem Namen ein Taint mit Namen , Wert und Ebene kubectl taint nodes node-1 gpu=true:NoSchedulehinzugefügt .node-1gputrueNoSchedule

Toleranzstufen können mithilfe von Feldern in der YAML-Datei des Pods angegeben werden tolerations. Die folgende YAML-Datei zeigt beispielsweise, wie Toleranzstufen in der YAML-Datei eines Pods verwendet werden:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx:latest
  tolerations:
  - key: gpu
    value: "true"
    effect: NoSchedule
    tolerationSeconds: 3600

Im obigen Beispiel tolerationsdefiniert das Feld eine Toleranzregel, d. h. der Pod verfügt über eine Regel gpu=truemit einer Ebene von NoScheduleund einer Toleranzebene von Sekunden. 3600Das heißt, wenn ein Pod auf einem Knoten mit diesem Taint ausgeführt werden muss, muss er über eine Toleranzstufe verfügen, die dem Taint entspricht.

Verwenden Sie Taint- und Toleranzstufen, um Knoten zu markieren und die Planung von Pods zu steuern, um die Anwendungsleistung und -verfügbarkeit sicherzustellen.

Guess you like

Origin blog.csdn.net/qq_44370158/article/details/132170844