Как определить, провалилась ли работа - PullRequest
0 голосов
/ 27 апреля 2018

Как я могу программным путем определить, не удалось ли job навсегда и больше не будет повторять попытку? Я видел следующее на неудачных работах:

status:
  conditions:
  - lastProbeTime: 2018-04-25T22:38:34Z
    lastTransitionTime: 2018-04-25T22:38:34Z
    message: Job has reach the specified backoff limit
    reason: BackoffLimitExceeded
    status: "True"
    type: Failed

Однако документация не объясняет, почему conditions является списком. Может ли быть несколько условий? Если да, то на кого мне положиться? Это гарантия, что будет только один с status: "True"?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

JobConditions аналогично PodConditions. Вы можете прочитать о PodConditions в официальных документах .

В любом случае, чтобы определить успешный модуль, я иду по другому пути. Давайте посмотрим на это.


В спецификации задания есть два поля.

Один - это spec.completion (значение по умолчанию 1), что говорит:

Указывает желаемое количество успешно завершенных контейнеров. задание должно выполняться с.

Другим является spec.backoffLimit (значение по умолчанию 6), которое говорит:

Указывает количество повторных попыток, прежде чем пометить это задание не удалось.


Сейчас в JobStatus

В JobStatus также есть два поля. Succeeded и Failed. Succeeded означает, сколько раз стручок завершил успешно, а Failed обозначает, сколько стручков достигло фазы Failed.

  • Как только Success станет равным или больше spec.completion, задание станет completed.
  • Если Failed равно или больше spec.backOffLimit, задание станет failed.

Итак, логика будет здесь,

if job.Status.Succeeded >= *job.Spec.Completion {
    return "completed"
} else if job.Status.Failed >= *job.Spec.BackoffLimit {
    return "failed"
}
0 голосов
/ 27 апреля 2018

Если да, то на кого мне положиться?

Возможно, вам не придется выбирать, учитывая commit dd84bba64

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...