您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關K8S中Eviction Manager如何實現Pod驅逐,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
為了保證Node節點的穩定性,當資源(memory/storage)出現緊缺時,kubelet會主動選擇驅逐一些Pods來釋放資源。實現該功能的組件是Eviction Manager。
當驅逐一個Pod時,kubelet會將pod內的所有containers都kill掉,并把pod的狀態設置為Failed。被kill掉的pod,可能被調度到其他node上。
可以人為定義Thresholds來告訴Kubelet在什么情況下驅逐pods。有兩種類型的thresholds:
Soft Eviction Thresholds - 到達閾值時,并不會馬上觸發驅逐操作,而是會等待一個用戶配置的grace period之后再觸發。
Hard Eviction Thresholds - 立刻Kill Pods。
Eviction Manager相關的代碼在包/pkg/kubelet/eviction中,核心邏輯是managerImpl.synchronize方法。EvictionManager會在一個單獨的協程中周期性調用synchronize方法,實現驅逐。
synchronize方法主要包含以下幾個步驟:
|
|
在每一輪Eviction中,kubelet至多只會kill一個Pod。由于Eviction Manager會同時處理多種資源(memory/storage)的緊缺情況,因此在選擇Pod之前,首先會選出本輪Eviction參考的資源類型,再將Pods對該種資源的使用量進行排序,選出kill掉的Pod。
|
在排好序的Pods中選擇第一個Kill掉:
|
看完上述內容,你們對K8S中Eviction Manager如何實現Pod驅逐有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。