为工作负载指定队列
本教程演示如何为不同类型的工作负载指定队列。
Pod
对于 Pod 有两种指定队列的方法:直接指定队列和通过 PodGroup 间接指定队列。
直接指定队列
Pod 的 scheduler.tensorstack.dev/queue
标签标识其属于哪一个队列。创建 Pod 时,用户可以设置 spec.schedulerName
字段为 t9k-scheduler
,并设置该标签以直接指定队列。
在下面的示例中,Pod 被指定了队列 default
:
apiVersion: v1
kind: Pod
metadata:
name: pod-test
labels:
scheduler.tensorstack.dev/queue: default
spec:
schedulerName: t9k-scheduler
containers:
- name: nginx
image: nginx
通过 PodGroup 间接指定队列
Pod 的 scheduler.tensorstack.dev/group-name
标签标识其属于哪一个 PodGroup。创建 Pod 时,用户可以设置该标签以指定所属的 PodGroup,这样 Pod 会使用该 PodGroup 的队列。
PodGroup
手动创建 PodGroup 时,需要设置 spec.queue
字段以指定队列。属于 PodGroup 的所有 Pod 都会使用该队列。
在下面的示例中,PodGroup 被指定了队列 default
:
apiVersion: scheduler.tensorstack.dev/v1beta1
kind: PodGroup
metadata:
name: podgroup-test
spec:
minMember: 2
queue: default
priority: 50
T9k Job
T9k Job 包括 TensorFlowTrainingJob、PyTorchTrainingJob、XGBoostTrainingJob、GenericJob、MPIJob、ColossalAIJob、DeepSpeedJob 和 BeamJob,这些 T9k Job 中都有相同的 spec.scheduler
字段。
创建这些 T9k Job 时,用户可以设置 spec.scheduler.t9kScheduler
字段以使用 T9k Scheduler 并指定队列。T9k Job 创建的所有 Pod 都会使用该队列。
在下面的示例中,GenericJob 被指定了队列 default
:
apiVersion: batch.tensorstack.dev/v1beta1
kind: GenericJob
metadata:
name: t9k-job-test
spec:
scheduler:
t9kScheduler:
queue: default
priority: 10
replicaSpecs:
- type: worker
replicas: 4
...
- type: ps
replicas: 1
...
batch/v1 Job
创建 batch/v1 Job 时,用户可以参照 Pod 设置 Pod 模板(spec.template
字段),从而为 batch/v1 Job 的所有 Pod 指定队列。
在下面的示例中,batch/v1 Job 的 Pod 被指定了队列 default
:
apiVersion: batch/v1
kind: Job
metadata:
name: batch-v1-job-test
spec:
parallelism: 2
template:
metadata:
labels:
scheduler.tensorstack.dev/queue: default
spec:
schedulerName: t9k-scheduler
containers:
- name: nginx
image: nginx
command: ["sleep", "10"]