深入分析kubelet(6)—— Eviction驱逐
参考:
如果node处于资源压力,那么kubelet就会执行驱逐策略。驱逐会考虑Pod的优先级,资源使用和资源申请。当优先级相同时,资源使用/资源申请
最大的Pod会被首先驱逐。
这也是为什么BestEffort会首先被驱逐,因为他的request为0,所以这个值会无限大。所以调度器虽然不考虑抢占BestEffort,但是kubelet仍然驱逐它。
ping-pong
考虑这样一个场景,node上运行一些高优先级的BestEffort Pod,调度器调度了一个低优先级的非BestEffort Pod在node。当node处于资源压力时,kubelet会先驱逐低优先级的Pod,不管高优先级的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状态
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 |
网友评论