2015-08-24 2 views
0

У нас есть этот сценарий.Ограничения в мезосе и марафоне относительно докера

У нас есть 3/3 арка главного/ведомого для Мезоса.

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

Мы начали 10 приложений для марафона с 1core CPU и 1GB RAM. Мы начали контейнеры, но не использовали их, согласно системе, это означает, что 97% процессор свободен.

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

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

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

Согласно моему пониманию:

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

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

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

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

Благодарим вас

ответ

2

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

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

1

Mesos/Marathon на самом деле считает выделенное 10 * (1GB + 1CPU), потому что это максимальное количество ваших приложений (ы). И так да, ваше понимание верное.

На мой взгляд, у вас есть по крайней мере 2 варианта

  1. Назначают меньше ресурсов для ваших задач.
  2. На самом деле есть интересная новая функция, которая, по-видимому, подходит вашему использованию: oversubscription, который в основном пытается использовать эту разницу между выделенными и фактическими использованными ресурсами.
+0

1.У нас проблема с марафоном здесь, мы используем сайты WordPress внутри контейнеров. Если мы выделяем меньше ресурсов, когда мы достигаем максимального использования ОЗУ (на основе Allocation), Container начинает использовать SWAP, этот контейнер сценария занимает много времени ответить. Мы настроили проверки работоспособности, из-за медленной реакции контейнера Marathon убивает старый контейнер и создает новый контейнер. @ js84 –

+0

2. @rukletsov @ js84 Если мы пытаемся использовать переподписку, мы не можем создавать все приложения, используя переподписку. Они ясно упомянули, что если «Если какой-либо ресурс, используемый задачей или исполнителем, отменяется, весь контейнер обрабатывается как перезаписываемый контейнер и поэтому может быть убит или дросселирован контроллером QoS. « –

+0

Правильно, переподписка предназначена для задач с максимальным усилием. Если я правильно понимаю ваше дело, ваши контейнеры могут использовать всю выделенную память. Если это так, вы не можете действительно улучшить использование, потому что ваши задачи в конечном итоге потребуют всех ресурсов, доступных в кластере. Имеет ли это смысл? – rukletsov

Смежные вопросы