K8s中的排程程式是如何工作的? - daniele

banq發表於2020-09-25

排程程式如何在Kubernetes中工作?排程程式負責確定您的Pod在群集中的部署位置。這聽起來很簡單,但是卻相當複雜!讓我們開始吧。
 
每次建立Pod時,它也會新增到排程Scheduler佇列中。排程程式透過兩個階段逐個處理Pod:
  1. 排程階段(我應該選擇哪個節點?)
  2. 繫結階段(將屬於該節點的Pod資訊寫入資料庫)

 
如果您要部署一些需要GPU的Pod。您將Pod提交給叢集,然後:
  1. 排程程式過濾掉所有不具有GPU的節點
  2. 排程程式對其餘節點進行排名,並選擇利用率最低的節點
  3. 在這個最低利用率的節點上排程Pod

 此時,過濾階段有13個謂詞。這是13個函式,用於確定排程程式應從Pod中丟棄該節點作為可能目標的方式。甚至計分階段也有13個優先事項。這些是決定如何對節點評分和排名的13個功能。
 
您如何影響排程程式的決策?
  • nodeSelector
  • Node affinity
  • Pod affinity/anti-affinity
  • Taints汙點 /toleration容忍度

如果要自定義排程程式該怎麼辦?
您可以為排程程式編寫外掛。您可以在排程階段自定義任何塊。但是,繫結階段不要公開任何公共API。
 
可以在此處瞭解有關排程程式的更多資訊:

相關文章