Готовые поды, созданные Kubernetes CronJob, удаляются через некоторое время

Я создал CronJob, используя файл yaml ниже.

kind: CronJob
metadata:
  name: $DEPLOY_NAME
spec:
  # Run the job once a day at 8 PM
  schedule: "0 20 * * *"
  # If the previous job is not yet complete during the scheduled time, do not start the next job
  concurrencyPolicy: Forbid
  jobTemplate:
      spec:
        # The pods will be available for 3 days (259200 seconds) so that logs can be checked in case of any failures
        ttlSecondsAfterFinished: 259200
        template:
          spec:
            containers:
            - name: $DEPLOY_NAME
              image: giantswarm/tiny-tools
              imagePullPolicy: IfNotPresent
              resources:
                requests:
                  cpu: "0.01"
                  memory: 256Mi
                limits:
                  cpu: "0.5"
                  memory: 512Mi
              command: ["/bin/sh"]
              args: ["-c", "cd /home/tapi && sh entrypoint.sh"]

Как упоминалось в ttlSecondsAfterFinished, k8s сохраняет мою работу в кластере. Однако модуль, созданный заданием (после завершения), через некоторое время удаляется.

В соответствии с политикой сборки мусора мой объект модуля должен зависеть от моя работа. А поскольку объект задания не собирает мусор, мой объект-модуль также должен оставаться в живых. Я что-то упускаю?


person Manish Bansal    schedule 15.11.2019    source источник
comment
сколько времени?   -  person Patrick W    schedule 15.11.2019
comment
Не очень уверен. 2-3 часа может быть. Эта работа выполняется ночью. А утром, когда мы пытаемся получить логи из pod'а, сам pod недоступен. Мы пробовали планировать работу в день, тогда пакет оставался как минимум на 2 часа.   -  person Manish Bansal    schedule 15.11.2019
comment
kubectl describe cronjob $DEPLOY_NAME и проверьте Events   -  person Oleg Butuzov    schedule 15.11.2019
comment
Проверьте версию Kubernetes - TTL для завершенных заданий с помощью параметра .spec.ttlSecondsAfterFinished был введен в v1.12. Если версия v1.12 +, проверьте, включен ли шлюз функций TTLAfterFinished.   -  person apisim    schedule 15.11.2019
comment
Для меня события идут как пустые   -  person Manish Bansal    schedule 15.11.2019
comment
Версия @apisim - 1.15. также должен быть включен функциональный шлюз, поскольку мои рабочие объекты остаются активными в течение 3 дней, как настроено.   -  person Manish Bansal    schedule 15.11.2019
comment
Можете ли вы проверить kubectl get jobs <job_name> -o yaml, есть ли TTL?   -  person Crou    schedule 18.11.2019
comment
@Crou ys, и он установлен на ttlSecondsAfterFinished: 259200   -  person Manish Bansal    schedule 18.11.2019


Ответы (1)


Поля .spec.successfulJobsHistoryLimit и .spec.failedJobsHistoryLimit необязательны. В этих полях указывается, сколько завершенных и неудачных заданий следует сохранить. По умолчанию они установлены на 3 и 1 соответственно.

Возможно, вам потребуется установить в этих полях соответствующее значение

person P Ekambaram    schedule 15.11.2019
comment
Хотя, когда я проверяю kubectl get jobs, я вижу только 3 вакансии. Но если я проверю `kubectl describe cronjob abc`, failedjobhistortlimit будет равно 1. Но предел успеха будет иметь очень большое число, например 824638391724 - person Manish Bansal; 15.11.2019
comment
Вам нужно описать выполненную работу - person P Ekambaram; 15.11.2019
comment
Я тоже это сделал. Но в этом нет никаких событий. Скажите, пожалуйста, что еще мне следует проверить. В работе ,. Пределы успеха и неудачи не определены. - person Manish Bansal; 16.11.2019