首页/云/Kubernetes 速查/调度约束手段选型对照
调度与资源52 条

调度约束手段选型对照

nodeSelector、nodeAffinity、podAffinity、taints、topologySpread 的语义与粒度不同:按「谁挑谁」和硬软程度选择组合。

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

调度约束怎么选

调度约束手段的差别集中在两点:谁挑谁,以及是硬性要求还是软性偏好。节点选择器只能表达等值匹配,节点亲和支持表达式与软硬两档,Pod 之间的亲和与反亲和描述相对关系,污点由节点侧拒绝、Pod 通过容忍豁免,拓扑分布约束则用于控制副本在多个域上的均衡。

基本信息

适用平台Kubernetes 1.20+
硬约束后果没有节点满足时 Pod 一直处于等待调度状态
软约束后果不满足时仍会调度,只是权重降低
常用组合节点侧污点加工作负载侧亲和
配置位置工作负载模板的调度字段

手段对照

手段方向硬或软
节点选择器Pod 挑节点,等值匹配硬
节点亲和Pod 挑节点,支持表达式两者都支持
Pod 亲和与反亲和Pod 之间的拓扑关系两者都支持
污点与容忍节点拒绝,Pod 豁免硬,驱逐效果还会赶走存量
拓扑分布约束按域控制副本分布两者都支持

组合建议

组合建议
独占资源池:节点污点 + 工作负载容忍 + 节点亲和(三重保险)
多副本高可用:Pod 反亲和(节点级硬)+ 拓扑分布(可用区级软)
普通业务:只用拓扑分布均衡,不必加硬约束限制调度自由度

典型使用场景

  • 专用资源池:用污点防止其他业务进入,用容忍与亲和把目标业务放进去
  • 高可用部署:反亲和把副本散到不同节点,拓扑分布再摊到多个可用区
  • 硬件依赖:显卡或特定架构节点用节点亲和表达
  • 同置访问:需要低延迟通信的服务用 Pod 亲和放在同一拓扑域
  • 灰度节点:新增节点先只允许测试工作负载进入
硬约束叠加越多,可行节点集合越小。容量规划要把约束条件一起考虑:集群缩容或节点故障时,剩余节点必须仍然满足这些条件,副本才装得下。
用单一手段表达多重意图容易出问题。只加容忍不加亲和时,专用资源池里的 Pod 可能跑到普通节点上,隔离目的无法达成。

易错点

  • 用单种手段表达多重意图:独占池漏了容忍或亲和,Pod 会跑偏到非目标节点
  • 硬约束叠加过多:任何节点都不满足时 Pod 长期等待调度,看起来像集群没有容量
  • 反亲和写成节点级硬约束却没有足够节点:部分副本永远是等待状态
  • 忽略拓扑域的可用区划分:只做了节点级分散,整机架或整可用区故障仍会同时打掉多个副本

数据来源与参考

  • Kubernetes 官方文档 · 调度、抢占与驱逐
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌