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
  2. 若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的子队列

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