一、功能定义
Schedule调度器主要用来计算要部署的Pod应该运行在集群的哪个节点上。他会通过Api-Server的监听机制等待新创建的Pod,然后给每个新的、没有节点集的Pod分配节点,通过Api-Server更新Pod资源的定义信息。
二、调度算法
1.预选策略
判断备选Pod的gcePersistentDisk或AWSElasticBlockStore和备选的节点中已存在的Pod是否存在冲突。
2.PodFitsResources
判断备选节点的资源是否满足备选Pod的需求。
3.PodSelectorMathes
判断备选节点是否包含备选Pod的标签选择器指定的标签。
4.PodFitsHost
判断备选Pod的spec.nodeName域所指定的节点名称和备选节点的名称是否一致。如果一致,则返回true,否则返回false.
5.CheckNodeLabelPresence
如果用户在配置文件中指定了该策略,则scheduler会通过RegisterCustomFitPredicate方法注册该策略。
6.CheckServiceAffinity
该策略用于判断备选节点是否包含策略指定的标签,或包含和备选Pod在相同Service和Namespace下的Pod所在节点的标签列表。 如果存在,则返回true,否则返回false.
7.PodFitsPorts
判断备选Pod所用的端口列表中的端口是否在被选中已被占用,如果被占用则返回false,否则返回true
2.优选策略
1.LeastRequestedPriority
从备选节点列表中选出资源消耗最小的节点。
2.CalculateNodeLabelPriority
该策略用于判断策略列出的标签在备选节点中存在时,是否选择该备选节点。
3.BalancedResourceAllocation
从备选节点列表中选出各项资源使用率最均衡的节点。