Ограничения в Mesos и Marathon относительно Docker

У нас есть этот сценарий.

У нас есть арка 3/3 master/slave для Mesos.

Каждый рукав идентичен, 4 ГБ ОЗУ и 4 ядра процессора.

Мы запустили 10 приложений-марафонцев с 1-ядерным процессором и 1 ГБ оперативной памяти. Мы запустили контейнеры, но не использовали их, так как система говорит, что 97% ЦП свободен.

Теперь мы пытаемся запустить другой контейнер с 3-ядерным процессором и 2 ГБ оперативной памяти.

К сожалению, мы не можем запустить контейнер, в логах Mesos написано, что марафон отклонил предложение, но все подчиненные узлы ничего не делают. Приложения Marathon сами оставались в состоянии развертывания.

Если mesos не может выделить ресурсы для приложения марафона (если контейнеры не используют ресурсы), то какой смысл в интеграции с Docker.

В моем понимании:

Как только предложение принимается приложением marathon, даже если докер не использует этот ресурс, mesos считает, что ресурсы уже используются приложением. Но если контейнер не использует какие-либо ресурсы, mesos необходимо собрать доступные ресурсы и выделить их следующему марафонскому приложению.

Вместо этого, как только предложение назначается приложению marathon, Mesos вычитает выделенные ресурсы из общих ресурсов.

Мы не полностью используем функции Docker в Mesos/Marathon.

Дайте мне знать любые предложения и ответы.

Спасибо


person Rajiv Reddy    schedule 24.08.2015    source источник


Ответы (2)


Mesos отслеживает «распределение», а не фактическое использование. Если ваше приложение ничего не делает, это не значит, что оно ничего не сделает в следующий момент. Это означает, что если ваше приложение запросило 1 ЦП, этот ЦП зарезервирован для приложения.

Теперь, если вы не хотите точно оценивать ресурсы, которые использует ваше приложение, вы можете посмотреть переподписка в Mesos. Однако вы должны иметь в виду, что, как только приложение запрашивает ресурсы с превышением лимита подписки, для которых эти ресурсы были выделены, приложения, использующие ресурсы с лимитом подписки, могут быть закрыты.

person rukletsov    schedule 24.08.2015

Mesos/Marathon фактически учитывает выделенные 10*(1 ГБ + 1 ЦП), потому что это максимум, который разрешено использовать вашим приложениям. А так да, ваше понимание правильное.

По моему у вас как минимум 2 варианта

  1. Назначайте меньше ресурсов для своих задач.
  2. На самом деле есть интересная новая функция, которая, кажется, подходит для вашего варианта использования: oversubscription который в основном пытается использовать эту разницу между выделенными и фактически используемыми ресурсами.
person js84    schedule 24.08.2015
comment
1. У нас есть проблема с Marathon здесь, мы запускаем сайты WordPress внутри контейнеров. Если мы выделяем меньше ресурсов, когда мы достигаем максимального использования ОЗУ (на основе распределения), контейнер начинает использовать SWAP, этот сценарий контейнера принимает долго отвечать. Мы настроили проверку работоспособности, из-за медленного отклика контейнера Marathon убивает старый контейнер и создает новый контейнер. @js84 - person Rajiv Reddy; 25.08.2015
comment
2. @rukletsov @js84 Если мы пытаемся использовать избыточную подписку, Мы не можем создать все приложения, используя избыточную подписку, Они ясно упомянули, что если If any resource used by a task or executor is revocable, the whole container is treated as a revocable container and can therefore be killed or throttled by the QoS Controller. - person Rajiv Reddy; 25.08.2015
comment
Правильно, переподписка предназначена для задач с максимальной эффективностью. Если я правильно понимаю ваш случай, ваши контейнеры могут использовать всю выделенную память. Если это так, вы не сможете реально улучшить использование, потому что вашим задачам в конечном итоге потребуются все ресурсы, доступные в кластере. Имеет ли это смысл? - person rukletsov; 26.08.2015