Как проверить успешное выполнение cronjob в Kubernetes - PullRequest
2 голосов
/ 10 июля 2020

Я пытаюсь создать задание cron, которое запускает команду date в одном контейнере busybox. Команда должна запускаться каждую минуту и ​​завершиться в течение 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 , которая дает мне такой результат.

введите описание изображения здесь

Есть ли другой способ убедиться, что задание выполняется успешно? Это хороший способ добавить в контейнер команду date ?

Ответы [ 3 ]

4 голосов
/ 10 июля 2020

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})

Проверить журналы модуля

kubectl logs $pods
2 голосов
/ 10 июля 2020

вы можете проверить журналы модулей, созданных ресурсом cronjob. Взгляните на этот вопрос и дайте мне знать, решит ли он ваш запрос.

1 голос
/ 10 июля 2020

Вы можете напрямую проверить статус заданий. Cronjob просто контролирует задание Kubernetes.

Выполнить kubectl get jobs, и вы получите статус завершения.

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

...