🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
可以在官方文档中找到对于scheduler的大致描述: https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/ 大意就是,kube-schedulor是默认的scheduler并且是控制平面的一部分,如果需要的话,可以自己编写 替换。对于每一个需要被分配的pod,调度器都会为他们选择一个最优的容器去运行,但是每一个容器对于资源有不同的约束条件,所以需要在现有的node上通过调度器的指定条件去赛选出符合条件的node。满足条件的pod就称为可行节点(feasible node),如果没有合适的节点,pod会一直不可调度直到调度器找到合适的位置时。 确实,首先要做的就是大致浏览下三个主要文件。 调度器找到可行的节点然后运行一些列的方法去给可行的节点评分,然后选择一个分数最高的节点去放置pod,然后schedulor在称为bind的过程中给API server发送信息。 调度的决策包括个人和集体资源需求,硬件/软件/策略约束,亲和力和反亲和力规范等等。 schedulor对于节点的选择主要进行两个步骤: 1.赛选 2.评分 赛选是为了找到合适的节点,比如PodFitsResources候选节点是否有足够的可用资源去满足pod指定的需求,这一部完成之后,node list 就会包含所有合适的节点,通常情况下,这里不只一个,如果为空,则pod为unschedulable, 接着是score step,调度器为每一个node rank,然后选择一个最好的节点。然后将pod放置到score最高的节点上,如果有节点分数相同,那么解随机选择一个。 并切还有两种额外的方法去配置赛选与评分的规则 1 [Scheduling Policies](https://kubernetes.io/docs/reference/scheduling/policies) 通过调度策略,您可以配置谓词进行过滤,配置优先级进行评分。 2: [Scheduling Profiles](https://kubernetes.io/docs/reference/scheduling/config/#profiles) 调度配置文件允许您配置实现不同调度阶段的插件,包括:QueueSort、Filter、Score、Bind、Reserve、Permit等。您还可以配置kube调度器以运行不同的配置文件 这道这个大致的描述之后,就可以继续看代码啦。