Запуск cronjob в каждую минуту в k8s не работает - PullRequest
0 голосов
/ 16 мая 2019

 SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   * * * * *   False     2        2m42s           5m6s
hello   * * * * *   False   3     6s    5m30s
hello   * * * * *   False   4     6s    6m30s
hello   * * * * *   False   3     46s   7m10s
hello   * * * * *   False   1     56s   7m20s
hello   * * * * *   False   2     6s    7m30s
hello   * * * * *   False   0     26s   7m50s
hello   * * * * *   False   1     7s    8m31s
hello   * * * * *   False   0     16s   8m40s
hello   * * * * *   False   1     7s    9m31s
hello   * * * * *   False   0     17s   9m41s
hello   * * * * *   False   1     7s    10m


Im runnig K8S cronjob и Im используют следующую команду, чтобы просмотреть его

kubectl get cronjobs --watch -n ns1

при просмотре вывода, я замечаю, что для каждой минуты есть две работы

например, см. 2m1s и 2m11s и так далее ...

почему?Я хочу запускать его ровно один раз в минуту, как я могу это сделать?

hello   * * * * *   False     0        <none>          4s
hello   * * * * *   False   1     7s    61s
hello   * * * * *   False   0     17s   71s
hello   * * * * *   False   1     7s    2m1s
hello   * * * * *   False   0     17s   2m11s
hello   * * * * *   False   1     7s    3m1s
hello   * * * * *   False   0     17s   3m11s

Это файл Docker

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
  namespace: monitoring
spec:
  schedule: "* * * * *" # run every minute
  startingDeadlineSeconds: 10 # if a job hasn't starting in this many seconds, skip
  concurrencyPolicy: Forbid # either allow|forbid|replace
  successfulJobsHistoryLimit: 3 # how many completed jobs should be
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: hello
              image: busybox
              args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

Я также пытался изменить расписание, например "*/1 * * * *”, что не помогает.

update

Кажется, что для каждого cronjob есть такая запись

NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello             */1 * * * *                 False               1              0s            7s

, и через 10 секунд я вижу

hello              */1 * * * *                 False              0              1 0s           17s

и так далее ... один активный, а второйне

1 Ответ

1 голос
/ 16 мая 2019

Я думаю, что вы смотрите не на ту вещь.

CronJob порождает Job, поэтому вы должны просматривать журналы заданий:

$ kubectl get jobs
NAME               DESIRED   SUCCESSFUL   AGE
hello-1558019160   1         1            2m
hello-1558019220   1         1            1m
hello-1558019280   1         1            14s

Как видите, в минуту появляется только один .Возможно, для выполнения задания потребуется больше времени, чем минута, когда concurrencyPolicy вступает в игру:

Поле .spec.concurrencyPolicy также необязательно.Он определяет, как обрабатывать параллельные выполнения задания, созданного этим заданием cron.В спецификации может быть указана только одна из следующих политик параллелизма:

  • Allow (по умолчанию): задание cron позволяет одновременно запускать задания
  • Forbid: задание cron не выполняетразрешить одновременные прогоны;если пришло время для нового запуска задания, а предыдущее выполнение еще не завершено, задание cron пропускает новое выполнение задания
  • Replace: если пришло время для запуска нового задания и предыдущегоВыполнение задания еще не завершено, задание cron заменяет текущее выполнение задания новым выполнением задания

Обратите внимание, что политика параллелизма применяется только к заданиям, созданным тем же заданием cron.Если есть несколько заданий cron, их соответствующие задания всегда могут выполняться одновременно.

Вы также можете выполнить kubectl describe jobs hello-1558019160, в котором вы увидите события:

Events:
  Type    Reason            Age   From            Message
  ----    ------            ----  ----            -------
  Normal  SuccessfulCreate  2m    job-controller  Created pod: hello-1558019160-fld74

Iвыполнял .yaml и не видел, чтобы Active заданий было выше, чем 1.

Надеюсь, это поможет.

...