深究Kubernetes源码- Scheduler-2 调度器流程分析
分析基于kubernetes v1.26
1 启动加载
通过Cobra框架生成Command,最终执行Scheduler.Run运行Scheduler.scheduleOne协程,scheduleOne是Pod调度的核心流程,下面会详细介绍。

Setup是初始化SchedulerQueue、Cache、Framework和Scheduler结构体的关键方法。

NewInTreeRegistry会载入所有InTreePlugin
默认加载的Plugin Profile配置如下
其中addAllEventHandlers处理了所有的Informer EventHandler注册

2调度流程
调度流程分为两个阶段,schedulingCycle和bindingCycle,根据Framework介绍,很明显schedulingCycle主要是过滤和打分,bindingCycle主要是处理绑定

schedulingCycle主要分为两个阶段,Filter和Score,在得出ScheduleResulet后进行Reserve和Permit,涉及Framework扩展调用点的地方为深绿色流程。

bindingCycle相对简单,其流程是在并发的协程中,当schedulingCycle Permint之后,执行Pod的binding操作,核心是执行Framework的PreBind/Bind/PostBind
