当前位置:首页|资讯

Kubernetes-Volcano在线离线混部-理论知识补充

作者:BeijingToTokyo发布时间:2024-09-18

1  背景

Volcano在离线混部实践中介绍了混部的配置方法。

本文列举了笔者在落地中的思考和结论,希望本文能给您提供帮助。


2  问题 & 结论

2.1 priorityClass 与 volcano.sh/qos-level 的关系 和 作用范围?

priorityClass会影响调度时的排序,它还用来表示 Pod 的重要性。当计算资源争用(计算资源不足)发生时,优先级较高的 Pod 将比优先级较低的 Pod 获得更多的资源保障。[例如:kube-system命名空间下的系统组件,优先级默认会设置的比较高]。所以原生的Kubernetes集群中,在计算资源不足时会驱逐低优先级pod,让出资源给高优先级的Pod。

volcano.sh/qos-level 是volcano中应用的注释,非原生Kubernetes功能。用于标记Pod为"在线Pod"或"离线Pod"。

priorityclass与volcano.sh/qos-level的关系:两者功能独立,不冲突。


2.2 有了priorityClass 还需要Volcano的能力吗?

PriorityClass能力有限,如果希望设置节点负载水位线,则需要配置Volcano。此外Volcano还提供了CPU优先核 、CPU抑制等能力,可以结合在离线混部一起配置,实现更复杂的需求。


2.3 未设置qos-level  未设置priorityclass 的普通pod,在驱逐处理逻辑中被如何对待?

在Volcano中"未设置qos-level  未设置priorityclass 的普通pod" 被看做是 "在线Pod"。

当发生超过节点水位线驱逐时,不会驱逐"普通Pod"。

若混部节点上只有"在线Pod"和"普通Pod",超过水位线也不会发生驱逐,同时此节点也不会打上volcano.sh/offline-job-evicting 注释,所以此时节点依然处于可调度状态。额外说明:因为离线pod会优先调度到混部节点,所以理论上这种场景发生的概率比较低。


2.4 驱逐Pod时,优先驱逐什么Pod?

这个要看驱逐场景,驱逐是谁触发的。

  • 如果驱逐原因是priority的驱逐,会驱逐优先级最低的。

  • 如果是volcano超水位线驱逐,会驱逐有离线标识的pod。驱逐逻辑:按照离线pod request资源进行排序,优先驱逐request大的pod,每间隔10s进行一次判断,如果仍高于水位线,则再驱逐1个request大的离线pod。

需要注意:所有离线pod在volcano看都是一个优先级,离线pod间不再区分级别了。qos-level 设置为 -2 和 -5在volcano处理逻辑里没区别。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1