深究Kubernetes源碼- Scheduler-2 調度器流程分析
分析基于kubernetes v1.26?
1 啟動加載
通過Cobra框架生成Command,最終執(zhí)行Scheduler.Run運行Scheduler.scheduleOne協(xié)程,scheduleOne是Pod調度的核心流程,下面會詳細介紹。

Setup是初始化SchedulerQueue、Cache、Framework和Scheduler結構體的關鍵方法。

NewInTreeRegistry會載入所有InTreePlugin
默認加載的Plugin Profile配置如下
其中addAllEventHandlers處理了所有的Informer EventHandler注冊

2調度流程
調度流程分為兩個階段,schedulingCycle和bindingCycle,根據(jù)Framework介紹,很明顯schedulingCycle主要是過濾和打分,bindingCycle主要是處理綁定

schedulingCycle主要分為兩個階段,F(xiàn)ilter和Score,在得出ScheduleResulet后進行Reserve和Permit,涉及Framework擴展調用點的地方為深綠色流程。

bindingCycle相對簡單,其流程是在并發(fā)的協(xié)程中,當schedulingCycle Permint之后,執(zhí)行Pod的binding操作,核心是執(zhí)行Framework的PreBind/Bind/PostBind

標簽: