汙點和容忍度taint tolerations
阿新 • • 發佈:2022-03-15
汙點和容忍度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。
真的有試用場景,就是想讓節點上面只放某類應用,汙點很好用,可以配合親和性使用。