Я выполняю задания Kubernetes через cron. В некоторых случаях задания могут потерпеть неудачу, и я хочу, чтобы они перезапустились. Я планирую работу следующим образом:
kubectl run collector-60053 --schedule=30 10 * * * * --image=gcr.io/myimage/collector --restart=OnFailure --command node collector.js
У меня проблема с тем, что некоторые из этих заданий выполняются и не работают, но связанные модули исчезают, поэтому у меня нет возможности просмотреть журналы, и они не перезапускаются.
Например:
$ kubectl get jobs | grep 60053
collector-60053-1546943400 1 0 1h
$ kubectl get pods -a | grep 60053
$ // nothing returned
Это на Google Cloud Platform под управлением 1.10.9-gke.5
Любая помощь будет высоко ценится!
EDIT:
Я обнаружил еще немного информации. У меня есть настройка автоматического масштабирования на моем кластере GCP. Я заметил, что когда серверы удаляются, стручки также удаляются (и их метаданные). Это ожидаемое поведение? К сожалению, это не дает мне простой способ просмотреть журналы стручков.
Моя теория состоит в том, что при сбое модулей происходит включение CrashLoopBackOff, и в конечном итоге автоматическое масштабирование решает, что узел больше не нужен (он не видит модуль в качестве активной рабочей нагрузки). В этот момент узел исчезает, как и стручки. Я не думаю, что это ожидаемое поведение с Restart OnFailure, но я в основном засвидетельствовал это, внимательно наблюдая за этим.