默认调度流程分为以下两步:
- 预选调度过程,即遍历所有目标Node,筛选出符合要求的候选节点。为此,Kubernetes内置了多种预选策略(xxx Predicates)供用户选择。
- 确定最优节点,在第一步的基础上,采用优选策略计算出每个候选节点的积分,积分最高者胜出。
预选策略
- CheckNodeUnschudulable:检查节点是否被标识为Unschedulable,以及是否将Pod调度到该类节点之上。
- NoDiskConflict
- PodFitsResouces
- PodSelectorMatches
- PodFitHost
- CheckNodeLabelPresence
- CheckServiceAffinity
- PodFitsPorts
优选策略
- LeastRequestedPriority
- CalculateNodeLabelPriority
- BalancedResourceAllocation
LeastRequestedPriority
LeastRequestedPriority该优选策略用于从备选节点列表中选出资源消耗最小的节点。
(1)计算出在所有备选节点上运行的Pod和备选Pod的CPU占用量totalMilliCPU。
(2)计算出在所有备选节点上运行的Pod和备选Pod的内存占用量totalMemory。
(3)计算每个节点的得分,计算规则大致如下,其中,NodeCpuCapacity为节点CPU计算能力,NodeMemoryCapacity为节点内存大小:
(cpu((capacity –sum(requested)) * 10 / capacity) + memory((capacity –sum(requested)) * 10 / capacity))/ 2
