Я использую плагин Jenkins Kubernetes, который запускает модули в кластере Kubernetes, которые служат в качестве агентов Jenkins. Модули содержат 3 контейнера для обеспечения подчиненной логики, сокета Docker, а также инструмента командной строки gcloud
.
Обычный рабочий процесс заключается в том, что ведомое устройство выполняет свою работу и уведомляет ведущее устройство о завершении. Затем мастер завершает работу модуля. Однако, если подчиненный контейнер выходит из строя из-за потери сетевого подключения, контейнер завершает работу с кодом ошибки 255, два других контейнера продолжают работать, как и модуль. Это проблема, потому что модули имеют большие запросы к ЦП, а установка обходится дешево, так как подчиненное устройство работает только тогда, когда это необходимо, но наличие нескольких компьютеров, работающих в течение 24 часов или в выходные, является заметным финансовым ущербом.
Я знаю, что запуск нескольких контейнеров в одном модуле - не лучший прием в Kubernetes, но это нормально, если я знаю, что делаю, и предполагаю, что знаю. Я уверен, что это сложно решить по-другому, учитывая то, как работает плагин Jenkins Kubernetes.
Могу ли я завершить работу модуля в случае отказа одного контейнера без его возрождения? Поскольку решение с тайм-аутом также приемлемо, но менее предпочтительно.