运行 CronJob
在启用了 Kueue 的 Kubernetes 集群中运行 CronJob。
本页介绍如何在启用了 Kueue 的 Kubernetes 集群中运行 CronJob。
本页面的目标受众是 批处理用户。
开始之前
确保满足以下条件
0. 识别命名空间中可用的队列
运行以下命令以列出命名空间中可用的 LocalQueues
。
kubectl -n default get localqueues
# Or use the 'queues' alias.
kubectl -n default get queues
输出类似于以下内容
NAME CLUSTERQUEUE PENDING WORKLOADS
user-queue cluster-queue 3
ClusterQueue 定义了队列的配额。
1. 定义作业
在 Kueue 中运行 CronJob 与 在没有 Kueue 的 Kubernetes 集群中运行 CronJob 类似。但是,您必须考虑以下差异
- 您应将 CronJob 中的 JobTemplate 设置为 暂停状态,因为 Kueue 将决定何时是启动作业的最佳时间。
- 您必须设置要向其提交作业的队列。在
jobTemplate.metadata
中使用kueue.x-k8s.io/queue-name
标签 - 您应包括每个作业 Pod 的资源请求。
- 您应设置
spec.concurrencyPolicy
以控制并发策略。默认值为Allow
。您还可以将其设置为Forbid
以防止并发运行。 - 您应设置
spec.startingDeadlineSeconds
以控制启动作业的截止时间。默认情况下没有截止时间。
这是一个示例 CronJob,其中包含三个仅休眠 10 秒的 Pod。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: gcr.io/k8s-staging-perf-tests/sleep:v0.0.3
args: ["10s"]
resources:
requests:
cpu: 1
memory: "200Mi"
restartPolicy: Never
2. 运行 CronJob
您可以使用以下命令运行 CronJob
kubectl create -f sample-cronjob.yaml
在内部,Kueue 将为每个运行的作业创建一个具有匹配名称的相应 工作负载。
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
您还可以 监控工作负载的状态。