使用 WorkloadPriority 运行作业

使用 WorkloadPriority 运行作业,该优先级独立于 Pod 的优先级

通常,在 Kueue 中,工作负载的优先级是使用 Pod 的优先级进行计算,用于排队和抢占。

通过使用 WorkloadPriorityClass,您可以独立管理工作负载的优先级,用于排队和抢占,与 Pod 的优先级分开。

此页面包含有关如何使用工作负载优先级运行作业的说明。

开始之前

确保满足以下条件

  • Kubernetes 集群正在运行。
  • kubectl 命令行工具已与集群通信。
  • 已安装 Kueue.

0. 创建 WorkloadPriorityClass

应先创建 WorkloadPriorityClass。

apiVersion: kueue.x-k8s.io/v1beta1
kind: WorkloadPriorityClass
metadata:
  name: sample-priority
value: 10000
description: "Sample priority"

1. 使用 kueue.x-k8s.io/priority-class 标签创建作业

可通过设置标签 kueue.x-k8s.io/priority-class 指定 WorkloadPriorityClass。这与其他 CRD(如 RayJob)相同。

apiVersion: batch/v1
kind: Job
metadata:
  name: sample-job
  labels:
    kueue.x-k8s.io/queue-name: user-queue
    kueue.x-k8s.io/priority-class: sample-priority
spec:
  parallelism: 3
  completions: 3
  suspend: true
  template:
    spec:
      containers:
      - name: dummy-job
        image: gcr.io/k8s-staging-perf-tests/sleep:latest
      restartPolicy: Never

Kueue 为上述作业生成以下 Workload。Kueue 中的队列、抢占和其他调度流程会利用工作负载的优先级。此优先级不会影响 Pod 的优先级。

Workload 的 Priority 字段始终可变,因为它可能对抢占有用。Workload 的 PriorityClassSourcePriorityClassName 字段不可变。

apiVersion: kueue.x-k8s.io/v1beta1
kind: Workload
metadata:
  name: job-sample-job-7f173
spec:
  priorityClassSource: kueue.x-k8s.io/workloadpriorityclass
  priorityClassName: sample-priority
  priority: 10000
  queueName: user-queue
  podSets:
  - count: 3
    name: dummy-job
    template:
      spec:
        containers:
        - image: gcr.io/k8s-staging-perf-tests/sleep:latest
          name: dummy-job


上次修改时间为 2024 年 3 月 25 日:将任务整理到文件夹中 (#1899) (d43d3ea4)