Плагин Kubernetes Jenkins, создающий больше ресурсов для ожидающих подчиненных устройств

#jenkins #kubernetes #jenkins-plugins #jnlp

#дженкинс #kubernetes #jenkins-плагины #jnlp

Вопрос:

У меня есть вопрос относительно того, как работает плагин Jenkins Kubernetes. Я использую Google Cloud, jenkins, helm и kubernetes для настройки своей среды. Я использовал эти инструкции для настройки jenkins в kubernetes:

https://cloud.google.com/solutions/jenkins-on-kubernetes-engine-tutorial

В этом руководстве с помощью файла helm подчиненные устройства потребляют 500 мбит /с и 256 мбит /с памяти с ограничением до 1 процессора и 512 МБИТ /с. Затем я использую плагин Kubernetes jenkins, который работает так, как я себе представляю. В основном он использует доступные ресурсы в моих пулах kubernetes, или узлах, для создания агентов для выполнения моих заданий на jenkins.

Моя проблема заключается в следующем, из руководства мои доступные пулы — это 2 узла с 2CPU по 7,5 ГБ каждый. Некоторые из этих ресурсов используются jenkins для обеспечения работы сервера и т.д., Что означает, что у меня нет всех доступных ресурсов. На моем сервере Jenkins я изменил поле «Ограничение параллелизма» на 20, я запустил 20 заданий, ожидая, что одновременно для моих заданий будут созданы и использованы 20 исполнителей, но было создано и использовано только 8. Остальные были отключены и приостановлены. Я предполагаю, что было создано только 8, потому что в моем кластере не хватило ресурсов для создания большего количества исполнителей? Затем исполнители смогли запуститься, когда некоторые задания были завершены и исполнители были прекращены. Итак, теперь мой вопрос в том, есть ли способ добавить больше ресурсов (модулей, узлов или чего бы то ни было), чтобы я мог достичь своего предела параллелизма, если случится так, что я выполняю 20 заданий, так что мой предел параллелизма достигнут, и ни одно из моих заданий не должно ждать? Я хочу сделать это, поскольку некоторым из моих исполнителей может не потребоваться большая мощность процессора (возможно, например, 100mCPU), но могут быть и другие, которым может потребоваться 1CPU, и с конфигурациями кластера на месте теперь я смогу запускать, ВОЗМОЖНО, по 1 заданию за раз, что займет много времени для выполнения всех 20 заданий. Если я каким-то образом смогу изменить размер своего кластера, создав больше узлов или модулей, а затем удалив их, то это упростит масштабирование, оставаясь при этом динамичным. У кого-нибудь есть какие-либо советы о том, как этого добиться? Спасибо

Ответ №1:

Поскольку вы используете Google Cloud, вы можете отредактировать существующий пул узлов, чтобы включить автоматическое масштабирование:

Программа автоматического масштабирования кластеров GKE автоматически изменяет размеры кластеров в зависимости от требований рабочих нагрузок, которые вы хотите запустить. При включенном автоматическом масштабировании GKE автоматически добавляет новый узел в ваш кластер, если вы создали новые модули, у которых недостаточно емкости для запуска; и наоборот, если узел в вашем кластере используется недостаточно и его модули могут быть запущены на других узлах, GKE может удалить узел.

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

В качестве альтернативы, и если у вас достаточно места в вашем узле, вы можете увеличить количество модулей, используя автоматическое масштабирование модуля по горизонтали:

Автоскалерирование горизонтальных модулей автоматически масштабирует количество модулей в контроллере репликации, развертывании или наборе реплик на основе наблюдаемой загрузки процессора

Это создаст больше модулей вместо узлов на основе показателей использования ресурсов модуля.

Комментарии:

1. У меня такой же сценарий для Jenkins при настройке Kubernetes. ———— Вариант использования в основном таков: если все мои рабочие устройства в Jenkins заполнятся, я хочу автоматически масштабировать (увеличить количество подчиненных устройств), если он снова выйдет из строя, я хотел бы уменьшить количество подчиненных устройств — Возможно ли масштабировать модуль jenkins-slave? дайте мне знать, как?