iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

Kube-Scheduler 是負責資源調度。

它的主要職責是將 Pod 分配到叢集中的合適節點,以確保叢集的資源得到最佳利用並滿足應用程式的需求。

a

Figure Source

Kube-Scheduler 的主要功能

  1. Pod 調度
    Kube-Scheduler 的核心功能是根據一定的調度策略將 Pod 分配到適當的節點。它會考慮節點的資源使用狀況、Pod 的資源需求、以及其他調度條件來做出最佳的決策。

  2. 節點評估
    在調度過程中,Kube-Scheduler 會評估叢集中的每個節點,檢查它們的資源可用性(如 CPU、內存等)和符合性,以確保 Pod 能夠在選定的節點上順利運行。

  3. 策略應用
    Kube-Scheduler 支援多種調度策略,如親和性(Affinity)、反親和性(Anti-Affinity)以及資源限制等。這些策略幫助確保 Pod 以符合應用需求的方式分佈在叢集中。

  4. 異常處理
    在 Pod 調度過程中,Kube-Scheduler 會處理各種異常情況,如節點故障、資源不足等,並根據情況調整調度策略或重新調度 Pod。

Kube-Scheduler 的運作原理

Kube-Scheduler 的運作過程可以分為以下幾個步驟:

  1. Pod 排隊
    當一個 Pod 被建立或更新時,Kube-Scheduler 會將其放入待調度隊列。這些 Pod 會等待被分配到適當的節點上。

  2. 節點選擇
    Kube-Scheduler 會從所有可用的節點中選擇出符合 Pod 要求的節點。這個過程包括資源檢查和調度策略應用。Kube-Scheduler 會考慮節點的資源使用情況、Pod 的要求以及其他因素,如節點的標籤和污點(Taints)。

  3. 優化選擇
    在選擇候選節點後,Kube-Scheduler 會根據預設或自定義的調度策略進行優化選擇。這一步驟的目的是選擇出最合適的節點來運行 Pod。

  4. 更新狀態
    當選擇了最合適的節點後,Kube-Scheduler 會更新 Pod 的狀態,將其標記為已調度,並將 Pod 發送到選定的節點上運行。

  5. 監控和調整
    Kube-Scheduler 會持續監控叢集中的狀態,並在需要時進行調整。它會根據節點的變化和 Pod 的狀態進行重新調度,以確保叢集的穩定性和性能。

調度策略

Kube-Scheduler 提供了多種調度策略來滿足不同的需求:

  • 親和性(Affinity)
    用於控制 Pod 與其他 Pod 之間的關係。例如,可以指定 Pod 與某些特定的 Pod 在同一節點上運行,或者避免與某些 Pod 在同一節點上運行。

  • 反親和性(Anti-Affinity)
    用於避免 Pod 與其他 Pod 在同一節點上運行。這有助於提高叢集的可靠性,防止某些 Pod 之間的相互干擾。

  • 資源限制
    Kube-Scheduler 會根據節點的資源使用情況(如 CPU、內存)來調度 Pod,確保每個節點上的資源使用量符合要求。


為了確保高可用性,Kube-Scheduler 通常會以多個副本進行部署。

這樣,即使某個 Scheduler 實例失效,其他實例仍然可以繼續處理調度工作,保證叢集的穩定性。

Reference


上一篇
[Day 10] Kube-API Server
下一篇
[Day 12] More about Kube-Scheduler
系列文
關於新手會想知道Kubernetes的幾件事情30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言