Kubernetes 调度体系白皮书
—— 节点选择器、污点/容忍度与亲和性机制的完整解析与生产实践
在 Kubernetes 中,调度并不仅仅是“找一台能跑 Pod 的机器”,而是一套精密的资源治理系统。
节点选择器、污点与容忍度、亲和性规则,共同构成了 K8s 调度系统的三大支柱:
用一句话总结:
nodeSelector / nodeAffinity 决定 Pod 想去哪
taint / toleration 决定 节点准不准 Pod 来
Prefer / preferred 决定 Pod 更想去哪
NoExecute 决定 Pod 现在必须走
一、Kubernetes 调度器的真实工作流程
调度并不是“匹配一次就结束”,而是三阶段:
Filtering(过滤)
- nodeSelector
- nodeAffinity.required
- taint NoSchedule / NoExecute
- 资源是否足够
Scoring(打分)
- nodeAffinity.preferred
- PreferNoSchedule
- 负载均衡策略
Binding(绑定)
- 将 Pod 绑定到最终节点
| 机制 | 所在阶段 |
|---|---|
| nodeSelector | 过滤 |
| nodeAffinity.required | 过滤 |
| taint NoSchedule / NoExecute | 过滤 |
| nodeAffinity.preferred | 打分 |
| PreferNoSchedule | 打分 |
二、节点选择器(nodeSelector)
最简单的节点调度方式:键值强匹配。
kubectl