运行 CronJob
在启用了 Kueue 的环境里运行 CronJob
本页面展示了如何在 Kubernetes 集群中运行带有 Kueue 的 CronJob。
本页面的受众是批处理用户。
开始之前
请确保满足以下条件:
- 已运行 Kubernetes 集群。
- kubectl 命令行工具已与你的集群建立通信。
- Kueue 安装文档。
- 集群已配置 配额。
0. 识别你命名空间中的可用队列
运行以下命令以列出你命名空间中的 LocalQueues
。
kubectl -n default get localqueues
# 或使用 'queues' 别名。
kubectl -n default get queues
输出类似于以下内容:
NAME CLUSTERQUEUE PENDING WORKLOADS
user-queue cluster-queue 3
ClusterQueue 定义了队列的配额。
1. 定义作业
在 Kueue 中运行 CronJob 与在 Kubernetes 集群中运行 CronJob 类似, 但你必须考虑以下差异:
- 你应该在 CronJob 中将 JobTemplate 设置为暂停状态, 因为 Kueue 将决定何时启动 Job。
- 你必须设置要提交 Job 的队列。在
jobTemplate.metadata
中添加kueue.x-k8s.io/queue-name
标签。 - 你应该为每个 Job Pod 包含资源请求。
- 你应该设置
spec.concurrencyPolicy
以控制并发策略。默认是Allow
。你也可以将其设置为Forbid
以防止并发运行。 - 你应该设置
spec.startingDeadlineSeconds
以控制 Job 启动的截止日期。默认没有截止日期。
以下是包含三个 Pod 的 CronJob 示例,这些 Pod 仅睡眠 10 秒。CronJob 每分钟运行一次。
apiVersion: batch/v1
kind: CronJob
metadata:
name: sample-cronjob
namespace: default
spec:
schedule: "* * * * *"
jobTemplate:
metadata:
labels:
kueue.x-k8s.io/queue-name: user-queue
spec:
parallelism: 3
completions: 3
template:
spec:
containers:
- name: dummy-job
image: registry.k8s.io/e2e-test-images/agnhost:2.53
args: ["entrypoint-tester", "hello", "world"]
resources:
requests:
cpu: 1
memory: "200Mi"
restartPolicy: Never
2. 运行 CronJob
你可以使用以下命令运行 CronJob:
kubectl create -f sample-cronjob.yaml
内部,Kueue 将为每次 Job 运行创建一个对应 Workload 其名称与 Job 匹配。
kubectl -n default get workloads
输出类似于以下内容:
NAME QUEUE ADMITTED BY AGE
job-sample-cronjob-28373362-0133d user-queue cluster-queue 69m
job-sample-cronjob-28373363-e2aa0 user-queue cluster-queue 68m
job-sample-cronjob-28373364-b42ac user-queue cluster-queue 67m
你还可以监控 Workload 的状态。
反馈
这个页面有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.