add-license-1
yinwenqin 5 years ago
parent 603ba87827
commit bb0dbbd7d8

@ -18,7 +18,7 @@ Tips: 本篇篇幅较长,因调度优选算法较为复杂,但请耐心结
同上一篇,回到`pkg/scheduler/core/generic_scheduler.go`中的`Schedule()`函数,`pkg/scheduler/core/generic_scheduler.go:184`:
![](http://pwh8f9az4.bkt.clouddn.com/p4-schedule.jpg)
![](http://pwh8f9az4.bkt.clouddn.com/20190822165920.png)
截图中有几处标注metric相关的几行是收集metric信息用以提供给prometheus使用的kubernetes的几个核心组件都有这个功能以后如果读prometheus的源码这个单独拎出来再讲。直接进入优先级函数`PrioritizeNodes()`内部`pkg/scheduler/core/generic_scheduler.go:215`
@ -201,7 +201,7 @@ func defaultPriorities() sets.String {
在注册的每一个计算维度都有专属的维度描述关键字即factory方法的第一个参数(str类型)。不难发现,这里的每一个关键字,`pkg/scheduler/algorithm/priorities`目录内都有与其对应的文件,图中圈出了几个例子(灵魂画笔请原谅):
![image-20190821171031395](/Users/ywq/Library/Application Support/typora-user-images/image-20190821171031395.png)
![](http://pwh8f9az4.bkt.clouddn.com/image-20190821171031395.png)
显而易见,维度计算的内容就在这些文件中,可以自行通过编辑器的跳转功能逐级查看进行验证.
@ -239,7 +239,7 @@ func CalculateNodePreferAvoidPodsPriorityMap(pod *v1.Pod, meta interface{}, node
这也印证了前面说的当前仅剩pod亲和性这一个维度在使用传统的Function,虽然已经被DEPRECATED掉了传统的Function是直接计算出结果Map-Reduce是将这个过程解耦拆成了两个步骤且我们可以看到所有的factory函数很多形参`reduceFunction`接收到的实参实际是是`nil`:
![image-20190822111624614](/Users/ywq/Library/Application Support/typora-user-images/image-20190822111624614.png)
![](http://pwh8f9az4.bkt.clouddn.com/image-20190822111624614.png)
这就说明这些维度的计算工作在map函数里面已经执行完成了不需要再执行reduce函数了。因此传统的Function的计算过程同样值得参考那么首先就来看看`InterPodAffinityPriority`维度是怎么计算的吧!

Loading…
Cancel
Save