В соответствии с официальной документацией Kubernetes , Задание обрабатывает Pod, потерпевший неудачу, когда один из целых контейнеров завершает работу с ненулевым кодом выхода или для некоторых обнаруженных превышений ресурсов. Из-за этого факта Pod phase на самом деле является основным индикатором с точки зрения общего жизненного цикла Pod, сообщая начальному Job о последнем статусе Pod.
Однако, как я заметил, kubectl get pod
output STATUS
столбец не отображает состояние фазы модуля, вместо этого он извлекает значение для конкретного контейнера внутри модуля и использует поле .status.containerStatuses.state.terminated.reason
для отображения STATUS
данных столбца.
Фактически, выможет даже получить более информативный вывод, предоставляя пользовательские столбцы стандартному инструменту командной строки kubectl
:
$ kubectl get po -o=custom-columns=NAME:.metadata.name,PHASE:.status.phase,CONTAINERS:.spec.containers[*].name,STATUS:.status.containerStatuses[*].state.terminated.reason
Поскольку задание достигает значения backoffLimit: 9
, оно заканчивается с BackoffLimitExceeded
предупреждающим сообщением:
Предупреждение BackoffLimitExceeded 54m Job-controller Задание достигло указанного предела отката