为隔离Worker节点需打污点:用kubectl taint nodes =:,支持NoSchedule、NoExecute、PreferNoSchedule三种效果,添加后通过kubectl describe node验证Taints字段。

需要让普通工作负载避开某台Worker节点,比如临时隔离故障机器、预留资源给关键任务,或划分GPU专用节点,就必须给该Worker节点打上污点(Taint)。
确认目标Worker节点名称
执行 kubectl get nodes 列出所有节点,从输出中找到你要操作的Worker节点完整名称,例如 worker-gpu-01 或 k8s-node03。注意不要复制错别字或空格——【节点名大小写敏感且必须完全匹配】。
给Worker节点添加污点
使用 kubectl taint nodes 命令直接打污点,格式为:kubectl taint nodes <node-name><key>=<value>:<effect></effect></value></key></node-name>。
方法一:标记为GPU专用节点(常用)
执行:kubectl taint nodes worker-gpu-01 hardware=gpu:NoSchedule。这会让所有未声明容忍 hardware=gpu 的Pod无法调度上去,但已运行的Pod不受影响。
方法二:临时下线维护(强隔离)
执行:kubectl taint nodes k8s-node03 maintenance=urgent:NoExecute。这不仅阻止新Pod调度,还会立即驱逐当前不满足容忍的所有Pod——【操作不可逆,驱逐即时发生,请提前确认】。
方法三:软性避开(资源紧张时仍可调度)
执行:kubectl taint nodes node-worker-2 disk=slow:PreferNoSchedule。调度器会优先避开,但若集群资源耗尽,仍可能把Pod塞过去。
验证污点是否生效
第一步:查看节点详情
运行 kubectl describe node worker-gpu-01,在输出中定位到 Taints: 字段,确认出现类似 hardware=gpu:NoSchedule 的条目。
第二步:快速交叉验证
执行 kubectl get nodes -o wide,观察目标节点的 ROLES 列旁是否显示 Taints 标识(部分kubectl版本会简略显示)。
第三步:检查是否误加重复污点
同一 key+effect 组合重复添加会报错,但不同 value 或 effect 可共存;若需清理,用 kubectl taint nodes worker-gpu-01 hardware=:NoSchedule-(value留空可匹配任意值)。


















