跳到主要内容
版本:v1.11.0

Queue

定义

queue是容纳一组podgroup的队列,也是该组podgroup获取集群资源的划分依据

示例

apiVersion: scheduling.volcano.sh/v1beta1
kind: Queue
metadata:
creationTimestamp: "2024-12-30T09:31:12Z"
generation: 1
name: test
resourceVersion: "987630"
uid: 88babd01-c83f-4010-9701-c2471c1dd040
spec:
capability:
cpu: "8"
memory: 16Gi
# deserved字段仅用于capacity插件
deserved:
cpu: "4"
memory: 8Gi
guarantee:
resource:
cpu: "2"
memory: 4Gi
priority: 100
reclaimable: true
# weight字段仅用于proportion插件
weight: 1
status:
allocated:
cpu: "0"
memory: "0"
state: Open

关键字段

  • guarantee,可选

guarantee表示该queue为自己队列中的所有podgroup预留的资源,其他队列无法使用该部分资源。

注意: 若需配置guarantee值,则需要小于等于deserved值的配置

  • deserved,可选

deserved表示该queue内所有podgroup的资源应得量,若该queue已分配资源量超过了设置的deserved值,则queue中已分配的资源可被其他queue回收

注意

  1. 该字段只有在capacity插件开启时可按需配置,需要小于等于capability值,proportion插件使用weight来自动计算queue的deserved值。capacity插件使用文档详见:capacity plugin User Guide
  1. 若queue中已分配的资源量超过了自己配置的deserved值,则queue不可再回收其他队列中的资源
  • weight,可选

weight表示该queue在集群资源划分中所占的相对比重,该queue应得资源量deserved的计算方式为 (weight/total-weight) * total-resource。其中, total-weight表示所有的queue的weight总和,total-resource表示集群的资源总量。weight是一个软约束,取值范围为[1, 2^31-1]

注意

  1. 该字段只有在proportion插件开启时可按需配置,若不设置weight,则默认设置为1,capacity插件无需设置此字段
  2. 该字段为软约束,Deserved值由weight计算得到,当其他queue中的资源占用量未达到Deserved值时,该队列的资源使用量可超过Deserved值,即从其他队列借用资源,但当集群资源不够用,且其他队列有任务需要用到这部分借出去的资源时,则该队列需要归还借出去的资源,回收到Deserved值为止。这种设计可以保证集群资源的最大化利用。
  • capability,可选

capability表示该queue内所有podgroup使用资源量之和的上限,它是一个硬约束,若不设置该字段,则队列的capability会设置为realCapability(集群的资源总量减去其他队列的总guarantee值)

  • reclaimable,可选

reclaimable表示该queue在资源使用量超过该queue所应得的资源份额时,是否允许其他queue回收该queue使用超额的资源,默认值为true

  • priority,可选

priority表示该queue的优先级,在资源分配和资源抢占/回收时,更高优先级的队列将会优先分配/抢占/回收资源

  • parent,可选

该字段用于配置层级队列。parent用来指定queue的父队列,若未指定parent,则默认会作为root queue的子队列

资源状态

  • Open

该queue当前处于可用状态,可接收新的podgroup

  • Closed

该queue当前处于不可用状态,不可接收新的podgroup

  • Closing

该Queue正在转化为不可用状态,不可接收新的podgroup

  • Unknown

该queue当前处于不可知状态,可能是网络或其他原因导致queue的状态暂时无法感知

说明事项

  • default queue

volcano启动后,会默认创建名为default的queue。后续下发的job,若未指定queue,默认属于default queue

  • root queue

volcano启动后,同样会默认创建名为root的queue,该queue为开启层级队列功能时使用,作为所有队列的根队列,default queue为root queue的子队列

队列的详细使用场景请参考队列资源管理