更新时间:2022-08-13 21:23:29
点击列表中的某台主机,进入详情页。当我们发现节点内存使用情况已经高达 91%,不建议再继续往这台节点上调度新的 Pod,此时可以为其设置一个污点。设置了污点后,KubeSphere 是不会将 Pod 调度到这个 Node 上的。
1. 点击左上角【污点管理】按钮,进入主机污点 (Taints) 管理页面;

2. 污点的属性一般是 key=value [effect],其中 key=value 一般用来匹配 Pod 的容忍 (Toleration)。而 effect 有 3 个选项,详见下方参数解释。
例如:设置 test=node1,effect 设置为 NoSchedule,那么只有设置了 Toleration 与该Node 污点属性一致的 Pod,才允许被调度到该节点。
参数解释:
Node 的 effect 存在以下 3 个值,对于还未被调度的 Pod 来说:
► NoSchedule:表示不允许调度,已调度的资源不受影响;
► PreferNoSchedule:表示尽量不调度;
► NoExecute:表示不允许调度。
如果在设置 Node 的 Taints (污点) 之前,就已经运行了一些 Pod,则分为以下几种情况:
► 情况 1:若 effect 的值是 NoSchedule 或 PreferNoSchedule,对于已运行的 Pod 仍然可以运行,只是新 Pod(如果没有设置容忍)不会再往上调度;
► 情况 2:若 effect 的值是 NoExecute,那么此 Node 上正在运行的 Pod,只要没有容忍的,将立刻被驱逐。effect 为 NoExecute 的污点,在容忍 (Toleration) 属性中有一个可选配置:tolerationSeconds 字段,用来设置这些 Pod 还可以在这个 Node 之上运行多久,给它们一点宽限的时间,到时间才驱逐。
• 如果是部署(Deployment),那么被该 Node 驱逐的 Pod 会漂移其它节点运行;
• 如果是守护进程集(DaemonSet)被驱逐后也不会再被运行到其它 Node,直到 Node 上的 NoExecute 污点被删除或者为该 Pod 设置了容忍。