從上圖可以看到會經過幾個步驟分別是排成(scheduing)綁定(binding),每個步驟又分成好幾個 Task 每一個 Task 由一到多個plugins組合而成。
下面將簡單敘述各個 Task 的作用,後續章節講到plugins時會比較了解在做什麼。
先是排成(scheduing)
- Sort
- 用於對 scheduler queue 中的 Pod 進行排序。一次只能啟用一個 sort plugins 。
- PreFilter
- 用來進行預先檢查 pod 的需要滿足的條件,若是處理失敗則離開調度週期,重新進入 scheduler queue 。
- Filter
- 用來對節點進行過濾,只會留下滿足 pod 執行條件的節點。
- PreScore
- 將 Filter 階段所產出的節點進行預評分工作,若是處理失敗則離開調度週期,重新進入 scheduler queue。
- Score
- 將 Filter 階段所產出的節點進行評分
- NormalizeScore
- 進行分數的正規化處理。
- Reserve
- 這時Pod處於保留狀態,它將在綁定週期結束時觸發
- 失敗 : Unreserve plugins
- 成功 : PostBind插件。
- 這時Pod處於保留狀態,它將在綁定週期結束時觸發
- Permit
- Pod的調度週期結束時,做最後的把關用來Permit、deny或是wait這次的調度。
最後進行綁定(binding)
- PreBind
- 在Pod真正綁定前設定相關的volume並將其安裝在目標節點,若是處理失敗則離開綁定週期,重新進入scheduler queue。
- Bind
- 將Pod綁定到節點。
- PostBind
- 成功綁定Pod後,用來清理相關的資源。
結語
接下來將會簡單介紹一下每個階段的 plugins 在做什麼 ,以便我們了解整個 framwork 的架構。