kueue

Kueue 批处理作业排队

补充说明

Kueue 是 Kubernetes 原生的作业排队系统,为 Job、JobSet、MPIJob、RayJob 等提供配额、排队、抢占和借用。它把“提交作业”和“何时可以运行”解耦,适合 GPU 集群和批处理平台。

核心概念:ResourceFlavor(节点 flavor)、ClusterQueue(集群级配额)、LocalQueue(命名空间队列)、Workload(排队单元)和 Cohort(配额借用组)。

语法

安装:

kubectl apply -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.9.1/manifests.yaml
kubectl -n kueue-system get pods

创建 ResourceFlavor:

kubectl apply -f - <<'EOF'
apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
  name: gpu-a100
spec:
  nodeLabels:
    nvidia.com/gpu.product: A100-SXM4-80GB
EOF

创建 ClusterQueue:

kubectl apply -f - <<'EOF'
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: team-a
spec:
  namespaceSelector: {}
  resourceGroups:
  - coveredResources: ["cpu", "memory", "nvidia.com/gpu"]
    flavors:
    - name: gpu-a100
      resources:
      - name: cpu
        nominalQuota: 100
      - name: memory
        nominalQuota: 400Gi
      - name: nvidia.com/gpu
        nominalQuota: 8
EOF

创建 LocalQueue:

kubectl apply -f - <<'EOF'
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
  name: team-a-queue
  namespace: demo
spec:
  clusterQueue: team-a
EOF

提交 Job 并指定队列:

kubectl apply -f - <<'EOF'
apiVersion: batch/v1
kind: Job
metadata:
  name: train
  namespace: demo
  labels:
    kueue.x-k8s.io/queue-name: team-a-queue
spec:
  template:
    spec:
      containers:
      - name: train
        image: example/train:latest
        resources:
          limits:
            nvidia.com/gpu: 2
      restartPolicy: Never
EOF

查看排队状态:

kubectl get workloads -n demo
kubectl describe workload -n demo
kubectl get clusterqueue team-a -o yaml

注意

相关命令

参考链接