深入分析kubelet(6)—— Eviction驅逐
參考:
如果node處于資源壓力棚蓄,那么kubelet就會執(zhí)行驅逐策略。驅逐會考慮Pod的優(yōu)先級梭依,資源使用和資源申請稍算。當優(yōu)先級相同時役拴,資源使用/資源申請
最大的Pod會被首先驅逐。
這也是為什么BestEffort會首先被驅逐河闰,因為他的request為0科平,所以這個值會無限大姜性。所以調度器雖然不考慮搶占BestEffort,但是kubelet仍然驅逐它部念。
ping-pong
考慮這樣一個場景,node上運行一些高優(yōu)先級的BestEffort Pod儡炼,調度器調度了一個低優(yōu)先級的非BestEffort Pod在node妓湘。當node處于資源壓力時乌询,kubelet會先驅逐低優(yōu)先級的Pod榜贴,不管高優(yōu)先級的BestEffort 楣责。但是調度器不考慮BestEffort竣灌,還是會調度node秆麸,造成這種ping-pong
。
驅逐閾值
<eviction-signal><operator><quantity | int%>
- eviction-signal:
memory.available, nodefs.available, nodefs.inodesFree, imagefs.available, imagefs.inodesFree
- operator :<
比如:
memory.available < 10%
memory.available < 1Gi
soft
當收到驅逐信號時沮趣,kubelet不會回收資源直到超過寬限期。
--eviction-soft
:軟驅逐閾值設置
--eviction-soft-grace-period
:軟驅逐寬限期房铭,軟驅逐信號與驅逐處理之間的時間差
--eviction-max-pod-grace-period
:最大驅逐pod寬限期驻龟,停止信號與kill之間的時間差缸匪,小于pod.Spec.TerminationGracePeriodSeconds
hard
此閾值沒有寬限期
--eviction-hard
:直接驅逐,沒有寬限期凌蔬。
node
驅逐會影響node狀態(tài)
Node Condition | Eviction Signal | Description |
---|---|---|
MemoryPressure | memory.available | Available memory on the node has satisfied an eviction threshold |
DiskPressure | nodefs.available, nodefs.inodesFree, imagefs.available, or imagefs.inodesFree | Available disk space and inodes on either the node's root filesystem or image filesystem has satisfied an eviction threshold |