云原生混部最后一道防线:节点水位线设计
引言
Aliware
为什么需要单机水位线
Aliware
水位线的分级
Aliware
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
驱逐条件:基于满足度的驱逐模式
Aliware
-
在 t1 时间,总资源利用率达到压制水位线的时候,对低优先级的任务进行压制,保证整体资源利用率在压制水位线之下,此时低优任务不会再被调度进来 -
在 t3 时间,总资源利用率开始进一步上升,达到驱逐水位线时,会对低优任务进行删除和驱逐的处理,保证高/中优的资源使用
-
内存的驱逐必须是实时的,因为节点上内存不足,会导致高/中优任务内存不足而 OOM -
这个延迟时间并不好配置,配的短了没有效果,配了长了反而会引起低优 Pod 长期“饥饿”而造成低优 Pod 运行时间更长 -
如果在一个节点上,有多个低优 Pod 都在运行,是否要驱逐所有的低优 Pod?是否可能尽量的少驱逐 Pod?
-
窗口期:获取 CPU 利用率的时间窗口(例如 5 分钟),在窗口时间的平均 CPU 利用率超过驱逐水位线,则开始驱逐,可以避免抖动 -
低优 Pod 资源满足率:= 低优 Pod 实际资源使用量/低优 Pod Request 资源量 -
低优 Pod 满足率下限:一个百分比值,低于这个值的认为低优 Pod 的资源供给不足
-
窗口期内:平均低优 Pod 资源满足率 < 低优 Pod 满足率下限 -
窗口期内:低优 Pod 平均 CPU 利用率接近 100%(如 90% 或者 80%) -
当前时间:平均低优 Pod 资源满足率 < 低优 Pod 满足率下限 -
最近时间:BE CPU 利用率接近100%(如 90% 或者 80%)
-
优先驱逐调度优先级 Priority 低的 Pod(是的,即使是低优 Pod,我们还是可以按照数值来细分不同的调度优先级) -
如果 2 个 Pod 调度优先级一致,则计算驱逐哪一个 Pod 带来的资源释放更多,优先驱逐能释放更多资源的
展望:是否有更好的设计?
Aliware
相关解决方案介绍
Aliware