运行 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

您还可以 监控工作负载的状态



上次修改时间:2024 年 4 月 2 日:[网站] 添加 cronjob 示例 (#1446) (4ca45b05)