运行 Argo Workflow
将 Kueue 与 Argo Workflow 集成。
此页面展示了在运行 Argo Workflow 时,如何利用 Kueue 的调度和资源管理能力。
本指南适用于对 Kueue 有基本了解的批处理用户。 欲了解更多信息,请参见 Kueue 概述。
目前,Kueue 不直接支持 Argo Workflow 的 Workflow 资源, 但你可以利用 Kueue 管理普通 Pod 的能力来集成它们。
开始之前
学习如何使用自定义管理器配置安装 Kueue。
遵循运行普通 Pod 中的步骤来学习如何启用和配置
pod集成。
Workflow 定义
a. 针对单个本地队列
如果你希望整个工作流针对单个本地队列,
应在 Workflow 配置的 spec.podMetadata 部分指定它。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: whalesay
podMetadata:
labels:
kueue.x-k8s.io/queue-name: user-queue # All pods will target user-queue
templates:
- name: whalesay
container:
image: docker/whalesay
command: [ cowsay ]
args: [ "hello world" ]
resources:
limits:
memory: 32Mi
cpu: 100mb. 针对每个模板的不同本地队列
如果你希望针对工作流的每一步使用不同的本地队列,
可以在 Workflow 配置的 spec.templates[].metadata 部分定义队列。
在这个例子中,hello1 和 hello2a 将针对 user-queue,
而 hello2b 将针对 user-queue-2。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: steps-
spec:
entrypoint: hello-hello-hello
templates:
- name: hello-hello-hello
steps:
- - name: hello1 # hello1 is run before the following steps
template: whalesay
arguments:
parameters:
- name: message
value: "hello1"
- - name: hello2a # double dash => run after previous step
template: whalesay
arguments:
parameters:
- name: message
value: "hello2a"
- name: hello2b # single dash => run in parallel with previous step
template: whalesay-queue-2
arguments:
parameters:
- name: message
value: "hello2b"
- name: whalesay
metadata:
labels:
kueue.x-k8s.io/queue-name: user-queue # Pods from this template will target user-queue
inputs:
parameters:
- name: message
container:
image: docker/whalesay
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
- name: whalesay-queue-2
metadata:
labels:
kueue.x-k8s.io/queue-name: user-queue-2 # Pods from this template will target user-queue-2
inputs:
parameters:
- name: message
container:
image: docker/whalesay
command: [cowsay]
args: ["{{inputs.parameters.message}}"]c. 限制
- Kueue 仅管理由 Argo Workflow 创建的 Pod。它不会以任何方式管理 Argo Workflow 资源。
- Workflow 中的每个 Pod 都将创建一个新的 Workload 资源,并且必须等待 Kueue 的准入。
- 没有办法确保 Workflow 在开始前完成。如果多步骤工作流中的某一步没有可用配额, Argo Workflow 将运行所有之前的步骤并等待配额变为可用。
- Kueue 不理解 Argo Workflow 的
suspend标志,也不会管理它。 - Kueue 不管理
suspend、http或resource模板类型,因为它们不创建 Pod。
反馈
这个页面有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.