污点和容忍度
污点(Taint),它使节点能够排斥一类特定的 Pod。
容忍度(Toleration) 是应用于 Pod 上的,容忍度允许调度器调度带有对应污点的 Pod。 容忍度允许调度但并不保证调度:作为其功能的一部分, 调度器也会评估其它参数(Pod的优先级)。
Taint 和 Toleration 相互配合,可以用来避免 Pod 被分配到不合适的节点上。 每个节点上都可以应用一个或多个污点,如何Pod对节点没有添加对应的容忍,它是无法被成功分配到该节点上的。
添加污点
使用命令 kubectl taint 给节点增加一个污点
[root@k8s-master-1 ~]# kubectl taint nodes k8s-node-2 key1=value1:NoSchedule
给节点 k8s-node-2
增加一个污点,它的键名是 key1
,键值是 value1
,效果是 NoSchedule
。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 node1
这个节点。
若要移除上述命令所添加的污点,可以执行:
[root@k8s-master-1 ~]# kubectl taint nodes k8s-node-2 key1=value1:NoSchedule-
在 Pod 规约中为 Pod 设置容忍度。
下面两个容忍度均与上面例子中使用 kubectl