使用 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 的 PriorityClassSource
和 PriorityClassName
字段不可变。
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