污點和容忍度taint tolerations

污點和容忍度taint tolerations
官方文檔寫的真的挺好:
https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/

污點和容忍度

節點親和性 是 Pod 的一種屬性,它使 Pod 被吸引到一類特定的節點 (這可能出於一種偏好,也可能是硬性要求)。 污點(Taint)則相反——它使節點能夠排斥一類特定的 Pod。

容忍度(Toleration)是應用於 Pod 上的,允許(但並不要求)Pod 調度到帶有與之匹配的污點的節點上。

污點和容忍度(Toleration)相互配合,可以用來避免 Pod 被分配到不合適的節點上。 每個節點上都可以應用一個或多個污點,這表示對於那些不能容忍這些污點的 Pod,是不會被該節點接受的。

自己稍微小結一下,
給節點打污點:

您可以使用命令 kubectl taint 給節點增加一個污點。比如,

kubectl taint nodes node1 key1=value1:NoSchedule

去除污點

kubectl taint nodes node1 key1=value1:NoSchedule-

然後tolerations 作用於pod,分2中區別不大

tolerations:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoSchedule"
tolerations:
- key: "key1"
  operator: "Exists"
  effect: "NoSchedule"

operator 分Equal和Exists ,後者對應value爲空的情況。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  tolerations:
  - key: "example-key"
    operator: "Exists"
    effect: "NoSchedule"

上面就是value不存在的情況,operator用Exists。
真的有試用場景,就是想讓節點上面只放某類應用,污點很好用,可以配合親和性使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章