在K8S集群中,调度器负责将客户提交的pod绑到某个node节点上,完成pod调度的调度工作。
在这个调度过程中,调度器的优选策略会对集群中的每个node节点都打上一个分数(score),得分最高的节点,调度器将调度pod到该节点上运行。
调度器的优选策略及相关说明
(基于k8s 1.18版本)
名称 | 权重(weight) | 插件(plugin) | 说明 | 默认 | 相关特性 | 取值 | 决定因素 |
---|---|---|---|---|---|---|---|
| 1 |
| 最小化同一节点或者zone上的Pod数量(属于同一服务或复制控制器) | 是 | 否 | 0-100 | 无 |
| 1 |
| pod应该或不应该与其他pod放置在相同的拓扑域中 | 是 | 否 | 与 | 亲和性调度的 |
| 1 |
| 优先调度pod到node标签匹配了nodeAffinity的节点 | 是 | 否 | 与 | 亲和性调度的 |
| 1 |
| 调度pod到容忍了污点的node | 是 | 否 | 0 | 节点是否有配置污点,且 |
| 1 |
| 优先调度pod到已经具有需求的镜像的node | 是 | 否 | 0-100 | 节点是否已经具有pod所需求的镜像 |
| 1 |
| 平衡node的资源使用 | 是 | 否 | 0-100 | node节点的资源情况 |
| 1 |
| 优先调度pod到requested使用最少的节点 | 是 | 否 | 0-100 | node节点的资源情况 |
| 1 |
| 优先调度pod到requested使用最多的节点 | 否 | 否 | 0-100 | node节点的资源情况 |
| 1 |
| 待补充 | 否 | 否 | 0 | 无 |
| 10000 |
| 根据节点的注释" scheduler.alpha.kubernetes.io/preferAvoidPods"对节点进行优先级排序 | 是 | 否 | 0或者1000000 | 节点是否配置annotation: "scheduler.alpha.kubernetes.io/preferAvoidPods" |
| 1 |
| pod的拓扑扩展约束 | 否 |
| 0-100 | 是否配置拓扑扩展约束 |
| 1 |
| 待补充 | 否 |
| 1 | 无 |
补充说明:
1 优选策略都会使用某个具体的打分插件来进行打分。
2 插件的打分逻辑中一般都有score逻辑,部分插件还提供了preScore和NormalizeScore逻辑。
3 优选策略EvenPodsSpreadPriority
和ResourceLimitsPriority
是通过特性开启的。虽然不在默认列表中,但是如果对应的特性有开启,则开始工作。