ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
通过前面预选策略过滤出来的 Node 列表,会再一次使用优选策略为这些 Node 打分,最终得分最高的 Node 会作为该 Pod 的调度对象。 有多个优选策略就相当于有多个打分函数,那么总得分的计算公式为:`总分 = (打分函数1 * 权重1) + (打分函数2 * 权重2) + ... + (打分函数3 * 权重3)`,打分函数的打分范围为 0 - 10 分,0 表示非常不合适,10 表示非常合适。每个打分函数都可以配置对应的权重,默认权重值为 1,如果某个打分函数特别重要就可以增加该权重值。 常用的优选策略有: * `LeastRequestedPriority`:选出空闲资源(CPU & Memory)最多的 Node * `BalancedResourceAllocation`:主要用于资源平衡,选出各项资源分配最均衡的 Node,避免出现某些 Node CPU 被大量分配,而 Memory 大量剩余的情况 * `SelectorSpreadPriority`:为了更好容灾,对属于同一个 Service 或是 RC 的多个 Pod 副本,尽量调度到多个不同的 Node 上 * `InterPodAffinityPriority`:优先将 Pod 调度到相同的拓扑上(如同一个节点、Rack、Zone 等) * `NodeAffinityPriority`:优先调度到匹配 NodeAffinity 的 Node 上 * `TaintTolerationPriority`:优先调度到匹配 TaintToleration 的 Node 上 * `ImageLocalityPriority`:优先选择已经存在 Pod 所需 Image 的 Node(已注册但默认未使用) * `MostRequestedPriority`:优先选择已经使用过的 Node,适用于 cluster-autoscaler(已注册但默认未使用) 因此`kube-scheduler`算法流程图如下所示: ![](https://img.kancloud.cn/f3/2d/f32d1374a5bedd9b0b2b378252130c93_2384x2276.png)