调度约束怎么选
调度约束手段的差别集中在两点:谁挑谁,以及是硬性要求还是软性偏好。节点选择器只能表达等值匹配,节点亲和支持表达式与软硬两档,Pod 之间的亲和与反亲和描述相对关系,污点由节点侧拒绝、Pod 通过容忍豁免,拓扑分布约束则用于控制副本在多个域上的均衡。
基本信息
| 适用平台 | Kubernetes 1.20+ |
|---|---|
| 硬约束后果 | 没有节点满足时 Pod 一直处于等待调度状态 |
| 软约束后果 | 不满足时仍会调度,只是权重降低 |
| 常用组合 | 节点侧污点加工作负载侧亲和 |
| 配置位置 | 工作负载模板的调度字段 |
手段对照
| 手段 | 方向 | 硬或软 |
|---|---|---|
| 节点选择器 | Pod 挑节点,等值匹配 | 硬 |
| 节点亲和 | Pod 挑节点,支持表达式 | 两者都支持 |
| Pod 亲和与反亲和 | Pod 之间的拓扑关系 | 两者都支持 |
| 污点与容忍 | 节点拒绝,Pod 豁免 | 硬,驱逐效果还会赶走存量 |
| 拓扑分布约束 | 按域控制副本分布 | 两者都支持 |
组合建议
组合建议
独占资源池:节点污点 + 工作负载容忍 + 节点亲和(三重保险)
多副本高可用:Pod 反亲和(节点级硬)+ 拓扑分布(可用区级软)
普通业务:只用拓扑分布均衡,不必加硬约束限制调度自由度典型使用场景
- 专用资源池:用污点防止其他业务进入,用容忍与亲和把目标业务放进去
- 高可用部署:反亲和把副本散到不同节点,拓扑分布再摊到多个可用区
- 硬件依赖:显卡或特定架构节点用节点亲和表达
- 同置访问:需要低延迟通信的服务用 Pod 亲和放在同一拓扑域
- 灰度节点:新增节点先只允许测试工作负载进入
硬约束叠加越多,可行节点集合越小。容量规划要把约束条件一起考虑:集群缩容或节点故障时,剩余节点必须仍然满足这些条件,副本才装得下。
用单一手段表达多重意图容易出问题。只加容忍不加亲和时,专用资源池里的 Pod 可能跑到普通节点上,隔离目的无法达成。