# 条件化的污点(TaintNodesByCondition)

自 Kubernetes 1.12 开始,TaintNodesByCondition 这个特性进入 beta 阶段,此时节点控制器自动根据 Node Condition 为节点创建对应的污点。调度器则不去检查 Node conditions,而是检查节点的污点,因此 Node Condition 不再直接影响到调度程序。用户通过为 Pod 添加容忍,可以选择性地忽略节点的某些问题(以 Node Condition 呈现的问题)。

TaintNodesByCondition 这个特性只会为节点添加 NoSchedule 效果的污点。TaintBasedEviction (Kubernetes 1.13 开始默认生效)则为节点添加 NoExecute 效果的污点,参考 TaintBasedEviction

自 Kubernetes 1.8 开始,DaemonSet Controller 自动为所有的 DaemonSet Pod 添加如下 NoSchedule 效果的容忍,以防止 DaemonSet 不能正常工作:

  • node.kubernetes.io/memory-pressure
  • node.kubernetes.io/disk-pressure
  • node.kubernetes.io/out-of-disk(只对关键 Pod 生效)
  • node.kubernetes.io/unschedulable(不低于 Kubernetes 1.10)
  • node.kubernetes.io/network-unavailable(只对 host network 生效)