This page looks best with JavaScript enabled

Kubernetes Scheduler context流水線略窺一二

 ·  ☕ 2 min read


ref:kubernetes scheduler

從上圖可以看到會經過幾個步驟分別是排成(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插件。
  • Permit
    • Pod的調度週期結束時,做最後的把關用來Permit、deny或是wait這次的調度。

最後進行綁定(binding)

  • PreBind
    • 在Pod真正綁定前設定相關的volume並將其安裝在目標節點,若是處理失敗則離開綁定週期,重新進入scheduler queue。
  • Bind
    • 將Pod綁定到節點。
  • PostBind
    • 成功綁定Pod後,用來清理相關的資源。

結語

接下來將會簡單介紹一下每個階段的 plugins 在做什麼 ,以便我們了解整個 framwork 的架構。


Meng Ze Li
WRITTEN BY
Meng Ze Li
Kubernetes / DevOps / Backend

What's on this Page