3

我正在尝试创建一个在单个busybox 容器中运行命令日期的cronjob。该命令应该每分钟运行一次,并且必须在 17 秒内完成或被 Kubernetes 终止。cronjob 名称和容器名称都应该是 hello。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  jobTemplate:
    metadata:
      name: hello
    spec:
      completions: 1
      activeDeadlineSeconds: 17
      template:
        metadata:
          creationTimestamp: null
        spec:
          containers:
          - image: busybox
            name: hello
            command: ["/bin/sh","-c","date"]
            resources: {}
          restartPolicy: OnFailure
  schedule: '*/1 * * * *'
status: {}

我想验证作业至少成功执行一次。我使用命令k get cronjob -w进行了尝试,它给了我这个结果。

在此处输入图像描述

是否有另一种方法来验证作业是否成功执行?向容器添加命令日期是一种好方法吗?

4

3 回答 3

8

CronJob内部创建Job哪个内部创建Pod。注意由CronJob

kubectl get jobs --watch

输出类似于:

NAME               COMPLETIONS   DURATION   AGE
hello-4111706356   0/1                      0s
hello-4111706356   0/1           0s         0s
hello-4111706356   1/1           5s         5s

你可以看到数量COMPLETIONS

#Replace "hello-4111706356" with the job name in your system

pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items[*].metadata.name})

检查 pod 日志

kubectl logs $pods
于 2020-07-10T13:24:31.883 回答
2

您可以检查 cronjob 资源创建的 pod 的日志。看看这个问题,如果这能解决您的问题,请告诉我。

于 2020-07-10T13:17:10.183 回答
1

您可以直接检查作业的状态。Cronjob 只是控制一个 Kubernetes 作业。

运行kubectl get jobs,它将为您提供完成状态。

> kubectl get jobs
NAME           COMPLETIONS   DURATION   AGE
datee-job      0/1 of 3      24m        24m

于 2020-07-10T13:21:40.440 回答