2016-01-27 5 views
1

У меня есть начальная/ведомая установка 1/1 с ведомым устройством с 8-гигабайтным барабаном 8 cpus. Я пытаюсь использовать марафон для развертывания контейнера докеров с 1gb mem и 1 cpu, но он просто зависает при ожиданииМарафон не запускает контейнер-докер

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

Sending 1 offers to framework 8bb1a298-cc23-426e-ad43-d440a2a560c4-0000 (marathon) at [email protected]:52016 I0127 23:07:37.396546 2471 master.cpp:3297] Processing DECLINE call for offers: [ 5271fcb3-4d77-4b12-af85-d94fd9172514-O127 ] for framework 8bb1a298-cc23-426e-ad43-d440a2a560c4-0000 (marathon) at [email protected]:52016 I0127 23:07:37.396917 2466 hierarchical.cpp:744] Recovered cpus(​):6; mem(​):5968; disk(​):156020; ports(​):[31000-31056, 31058-32000] (total: cpus(​):8; mem(​):6992; disk(​):156020; ports(​):[31000-32000], allocated: cpus(​):2; mem(​):1024; ports(*):[31057-31057]) on slave 8bb1a298-cc23-426e-ad43-d440a2a560c4-S0 from framework 8bb1a298-cc23-426e-ad43-d440a2a560c4-0000

поэтому похоже, что марафон отклоняет предложение, которое он получает? следующая строка в журналах говорит, что mesos восстанавливает предлагаемые ресурсы и каково их исправление, как много для моей задачи?

любые идеи о том, как беспокоиться, снимать это дальше?

Редакция:

Редактировать: так что нужно углубиться в это немного дальше и найти марафонские журналы.

В основном развертывание работает, если мы не вводим какую-либо информацию для сопоставления портов в разделе докеров-марафонов. Контейнер докеров развертывается успешно, и я могу успешно его выполнить с хоста, но я не могу получить доступ к нему из другого места.

если мы устанавливаем порт контейнера, как 8081 (который является то, что Докер контейнер обнажает является его применение прослушивает) мы получим дальше в процессе развертывания, но приложение в контейнере не удается построить с ошибкой

Error: listen EADDRINUSE :::8081 at Object.exports._errnoException (util.js:856:11) at exports._exceptionWithHostPort (util.js:879:20) at Server._listen2 (net.js:1234:14) at listen (net.js:1270:10) at Server.listen (net.js:1366:5) at EventEmitter.listen (/usr/src/app/node_modules/express/lib/application.js:617:24) at Object. (/usr/src/app/index.js:16:18) at Module._compile (module.js:425:26) at Object.Module._extensions..js (module.js:432:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:313:12) at Function.Module.runMain (module.js:457:10) at startup (node.js:138:18) at node.js:974:3

Так что я думаю, что мы дальше, чем мы, но у нас все еще есть проблемы с портом. Я не знаю, почему контейнер будет успешно строить самостоятельно и марафон без каких-либо настроек порта, но не марафон с настройками порта

+1

Можете ли вы разместить журналы о марафоне? – janisz

+1

Включили ли вы контейнер Docker в свою подчиненную конфигурацию? – Tobi

+0

Спасибо за ответы. Сегодня я буду марафонскими журналами. Да, мы изначально не могли запускать какие-либо контейнеры докеров, а затем мы включили правильный cintaineriser и контейнер busybot, но не наш пользовательский, который нуждался в немного больше ресурсов, но все же намного меньше, чем должно быть доступно. – Ir1sh

ответ

3

Есть несколько вещей, чтобы проверить:

  1. На вас ведомым: ps aux | grep sbin/mesos-slave должны содержать что-то вроде:

    --containerizers=docker,mesos --executor_registration_timeout=5mins

  2. Снова на проверку подчиненном, что есть Docker Daemon бег:

    ps aux | grep "docker daemon"

  3. Убедитесь, что вы настроили Docker сети (в марафоне), как BRIDGE. С режимом HOST вы можете столкнуться с конфликтами, уже используемыми на хосте. Это позволит отображать slave:32001 -> docker:8080.

    ... 
    "network": "BRIDGE", 
    "portMappings": [ 
        { 
        "containerPort": 8080, 
        "hostPort": $PORT0, 
        "protocol": "tcp" 
        } 
    ], 
    ... 
    
  4. Когда задача запускается в Марафоне вы увидите идентификатор приложения, как myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf. Используйте Mesos CLI (pip install mesos.cli mesos.interface) для извлечения журналов. Там же команда похожа на Unix-х tail для извлечения stdout журналов (-f последующих журналы):

    mesos tail -f -i myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf 
    

    и stderr:

    mesos tail -f -i myapp.a72db5b0-ca16-11e5-ba5f-fea9945fabaf stderr 
    

    -i позволяет получать журналы из неактивных задач (в случае, когда задача быстро сбой).Если вы не поймаете идентификатор в марафоне, используйте mesos ps -i.

  5. В случае, если задача не запущена, ресурсов или некоторой проблемы с марафоном недостаточно. Перейдите в браузер на http://{marathon URI:8080]/logging и увеличьте многословие для распределения задач. Затем проверьте журналы марафона.

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