W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在 Kubernetes 中,調(diào)度 是指將 Pod 放置到合適的 Node 上,然后對(duì)應(yīng) Node 上的 Kubelet 才能夠運(yùn)行這些 pod。
調(diào)度器通過 kubernetes 的監(jiān)測(Watch)機(jī)制來發(fā)現(xiàn)集群中新創(chuàng)建且尚未被調(diào)度到 Node 上的 Pod。 調(diào)度器會(huì)將發(fā)現(xiàn)的每一個(gè)未調(diào)度的 Pod 調(diào)度到一個(gè)合適的 Node 上來運(yùn)行。 調(diào)度器會(huì)依據(jù)下文的調(diào)度原則來做出調(diào)度選擇。
如果你想要理解 Pod 為什么會(huì)被調(diào)度到特定的 Node 上,或者你想要嘗試實(shí)現(xiàn) 一個(gè)自定義的調(diào)度器,這篇文章將幫助你了解調(diào)度。
kube-scheduler 是 Kubernetes 集群的默認(rèn)調(diào)度器,并且是集群 控制面 的一部分。 如果你真的希望或者有這方面的需求,kube-scheduler 在設(shè)計(jì)上是允許 你自己寫一個(gè)調(diào)度組件并替換原有的 kube-scheduler。
對(duì)每一個(gè)新創(chuàng)建的 Pod 或者是未被調(diào)度的 Pod,kube-scheduler 會(huì)選擇一個(gè)最優(yōu)的 Node 去運(yùn)行這個(gè) Pod。然而,Pod 內(nèi)的每一個(gè)容器對(duì)資源都有不同的需求,而且 Pod 本身也有不同的資源需求。因此,Pod 在被調(diào)度到 Node 上之前, 根據(jù)這些特定的資源調(diào)度需求,需要對(duì)集群中的 Node 進(jìn)行一次過濾。
在一個(gè)集群中,滿足一個(gè) Pod 調(diào)度請(qǐng)求的所有 Node 稱之為 可調(diào)度節(jié)點(diǎn)。 如果沒有任何一個(gè) Node 能滿足 Pod 的資源請(qǐng)求,那么這個(gè) Pod 將一直停留在 未調(diào)度狀態(tài)直到調(diào)度器能夠找到合適的 Node。
調(diào)度器先在集群中找到一個(gè) Pod 的所有可調(diào)度節(jié)點(diǎn),然后根據(jù)一系列函數(shù)對(duì)這些可調(diào)度節(jié)點(diǎn)打分, 選出其中得分最高的 Node 來運(yùn)行 Pod。之后,調(diào)度器將這個(gè)調(diào)度決定通知給 kube-apiserver,這個(gè)過程叫做 綁定。
在做調(diào)度決定時(shí)需要考慮的因素包括:單獨(dú)和整體的資源請(qǐng)求、硬件/軟件/策略限制、 親和以及反親和要求、數(shù)據(jù)局域性、負(fù)載間的干擾等等。
kube-scheduler 給一個(gè) pod 做調(diào)度選擇包含兩個(gè)步驟:
過濾階段會(huì)將所有滿足 Pod 調(diào)度需求的 Node 選出來。 例如,PodFitsResources 過濾函數(shù)會(huì)檢查候選 Node 的可用資源能否滿足 Pod 的資源請(qǐng)求。 在過濾之后,得出一個(gè) Node 列表,里面包含了所有可調(diào)度節(jié)點(diǎn);通常情況下, 這個(gè) Node 列表包含不止一個(gè) Node。如果這個(gè)列表是空的,代表這個(gè) Pod 不可調(diào)度。
在打分階段,調(diào)度器會(huì)為 Pod 從所有可調(diào)度節(jié)點(diǎn)中選取一個(gè)最合適的 Node。 根據(jù)當(dāng)前啟用的打分規(guī)則,調(diào)度器會(huì)給每一個(gè)可調(diào)度節(jié)點(diǎn)進(jìn)行打分。
最后,kube-scheduler 會(huì)將 Pod 調(diào)度到得分最高的 Node 上。 如果存在多個(gè)得分最高的 Node,kube-scheduler 會(huì)從中隨機(jī)選取一個(gè)。
支持以下兩種方式配置調(diào)度器的過濾和打分行為:
QueueSort
?, ?Filter
?, ?Score
?, ?Bind
?, ?Reserve
?, ?Permit
?等等。 你也可以配置 kube-scheduler 運(yùn)行不同的配置文件。Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: