首页/云/Kubernetes 速查/三种 effect 的区别
调度与资源52 条

三种 effect 的区别

NoSchedule 影响新调度,PreferNoSchedule 是软偏好,NoExecute 还会驱逐不容忍的存量 Pod;变更强度依次加大。

Kubernetes 速查云更新于 2026-10-13

三种 effect 的差别

污点的作用强度由 effect 决定:影响新调度的、只是软性回避的、以及会主动驱逐存量 Pod 的。强度依次递增,使用风险也随之上升。给节点加污点前先想清楚:是只挡住新来的负载,还是要把已经在跑的业务请走。

基本信息

适用平台Kubernetes 1.20+,由调度器与节点控制器执行
组成键、值、作用效果
配套机制工作负载通过容忍匹配污点
系统污点节点压力与不可达状态由系统自动维护
查看方式读取节点规格中的污点字段

作用效果对照

作用效果对已运行 Pod常见用途
不调度不驱逐,仅影响新调度节点专池、渐进隔离
倾向不调度不驱逐,软性回避空闲节点尽量少用
不执行驱逐不容忍的 Pod,可用容忍时长控制节点下线、故障隔离

查看与设置

查看与设置
kubectl get nodes -o custom-columns='NODE:.metadata.name,TAINTS:.spec.taints'   # 查看现有污点
kubectl taint node node1 dedicated=gpu:NoSchedule      # 只挡新调度
kubectl taint node node1 maintenance=true:NoExecute    # 连存量一起请走
kubectl taint node node1 dedicated=gpu:NoSchedule-     # 去掉污点
kubectl describe node node1 | grep -i taint            # 确认结果

典型使用场景

  • 把显卡或大内存节点保留给特定业务专用
  • 节点进入维护前先隔离,避免新 Pod 被调度进来
  • 故障节点快速隔离:让不容忍的工作负载迁走
  • 测试环境用软性回避,让普通负载尽量不去占用稀缺节点
  • 区分自建集群与托管集群的系统污点,避免误删
容忍匹配之后 Pod 可以落到该节点,但不代表一定落上去。要保证专池行为,通常还需要节点亲和把工作负载拉过来,两者配合才稳定。
带驱逐效果的污点可以配容忍时长:容忍里写明的秒数表示容许继续运行的时间,超过后才被驱逐;不写这个字段则表示可以一直运行下去,节点维护时会一直等在那里。
带有驱逐效果的系统污点由节点控制器自动维护,手工删除没有实际意义:只要压力条件仍然存在,它很快会被重新加上。

易错点

  • 给在线业务节点加驱逐效果污点:存量 Pod 立刻被赶走,先确认副本数与中断预算能扛住
  • 只加容忍不做亲和:Pod 可以调度到专池,但也会跑到普通节点上,隔离意图不成立
  • 手工删除系统污点:节点压力仍在时会立即恢复,删除动作只会掩盖判断依据
  • 维护完成忘记移除污点:节点长期空转,集群容量被白白浪费

数据来源与参考

  • Kubernetes 官方文档 · Taint 的 effect 语义
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌