1. 概念介绍
污点(Taint) 应用于node身上,表示该节点有污点了,如果不能忍受这个污点的pod,你就不要调度/运行到这个节点上。如果是不能运行到这个节点上,那就是污点驱逐了。
容忍度(Toleration) 是应用于 Pod 上的。容忍度允许调度器调度带有对应污点的 Pod。或者允许这个pod继续运行到这个节点上。
可以看出来,污点和容忍度(Toleration)相互配合,可以用来避免 Pod 被分配/运行到不合适的节点上。 每个节点上都可以应用一个或多个污点,每个pod也是可以应用一个或多个容忍度。
2. 污点详解
污点总共由4个字段组成:
key, value字段:可以任意字符。这个可以自定义。
Effect:NoExecute,PreferNoSchedule,NoSchedule 三选一
-
NoExecute表示不能运行污点,意思是如果该节点有这种污点,但是pod没有对应的容忍度,那么这个pod是会被驱逐的
-
NoSchedule表示不能调度污点,意思是如果该节点有这种污点,pod没有对应的容忍度,那么在调度的时候,这个pod是不会考虑这个节点的
-
PreferNoSchedule 是NoSchedule的软化版。意思是如果该节点有这种污点,pod没有对应的容忍度,那么在调度的时候,这个pod不会优先考虑这个节点,但是如果实在没有节点可用,它还是接受调度到该节点上的。