kube-scheduler是kubernetes中的调度程序,负责从api server中获得待分发的pod列表,并为他们找到最合适运行的Node。
基于kubernetes 1.27
基本框架
下面是kubernetes官发给出的框架图,先对kubernetes pod调度的大致流程有一个认识
看一下有了初步的印象之后,再简单看看里面的操作流程。
调度逻辑里面一共有4个关键的步骤:
- filter
预选,过滤掉不满足pod运行条件的Node。包括prefilter、filter、postfilter。prefilter
初步过滤,包括一些基础的标准或规则,更加轻量级。filter
过滤条件更加复杂和耗时。postfilter
常用来处理没有找到合适pod的场景,比如preempt抢占。
- prioritize
优选。根据优选函数对每个符合条件的Node进行打分。按照各项的分值*权重合并后,找到分值最高的Node。包括secore、prescore、normalizeScoreprescore
准备数据,为score提供需要的信息。score
根据各个plugins计算每个节点的得分。normalizeScore
在计算最