一、Taint(污点)
1.1概念
节点亲和性是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 。 这可能出于一种偏好,也可能是硬性要求。 Taint(污点)则相反,它使节点能够排斥一类特定的 Pod。
1.2设置污点
kubectl taint nodes [Node Name] key=value:[effect]
effect可取三种值:
NoSchedule #一定不能被调度【常用】
PreferNoShedule #尽量不要调度
NoExecute #不仅不会调度,而且还会驱逐Node上所有的Pod
例如:
kubectl taint node k8smaster type=dev:NoSchedule
给k8smaster节点增加一个污点,它的键名是type,键值是 dev,效果是 NoSchedule。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 这个节点。
取消污点
kubectl taint nodes [Node Name] key:[effect]-
二、tolerations(污点容忍)
2.1概念
容忍度能够让打有污点的节点可以部署到与该污点相匹配的容忍度的Pod
一个容忍度和一个污点相“匹配”是指它们有一样的键名和效果,并且:
如果 operator 是 Exists (此时容忍度不能指定 value)
如果 operator 是 Equal ,则它们的 value 应该相等
2.2示例
tolerations:
- key: "type"
operator: "Exists"
effect: "NoSchedule"
表示该Pod可以调度到key等于type,且动作为NoSchedule的节点上