2015-07-10 112 views
2

我试图Dockerizing Zookeeper/Marathon/Mesos和从Dockerized Mesos集群部署Docker容器(可能是愚蠢的)任务。到目前为止,我在两个物理分离的节点上有一个工作的Mesos集群:一个节点同时运行一个Mesos master和一个slave(容器Dockerfiles链接),第二个节点只运行一个从属节点。他们似乎运作良好;我能够通过Marathon(也是它自己的容器,在主节点和从属节点上运行节点)提交非常简单的作业,并且它们可以成功完成。Docker应用程序部署挂在Marathon上,在Mesos上失败

但是,当我试图submit Docker containers through the Marathon API时,它好像挂起。 Marathon界面挂在“部署”上,即使放置15分钟后,也不会改变,停止,重新提交并让它再坐15分钟。

Marathon UI, depicting seemingly frozen deployment of Docker task

与此同时,任务仍然被提交给Mesos奴隶; Mesos UI正在向左和向右报告FAILED任务。

Mesos UI, depicting failed tasks

EDIT 1

每个执行者所得到的沙箱日志也完全是空的。

empty sandbox

EDIT 2

找到一些有趣的事情埋在从日志:

slave logs

的利益线:

所有已启用的容器(mesos)都不能为提供的TaskInfo/ExecutorInfo消息创建容器。

它看起来像集装箱没有运行,从我所看到的,它甚至没有考虑码头作为集装箱。我遵循配置here部署Docker作业;如果Mesos从站本身就是Docker容器,这是否会发生变化?

我有些超出我的元素,无法找到这些行的任何引用。任何想法发生了什么?

+0

为了帮助您分类问题,任务日志非常重要。您可以通过单击沙箱链接从WebUI获取它们。 – rukletsov

+1

不幸的是,沙盒链接报告任何相应目录中的“无文件”。 – Magsol

回答

4

什么是您的从属docker run命令? 这里有几个参数,其他人发现有用:

--net host \ 
--pid host \ 
--privileged \ 
--env MESOS_CONTAINERIZERS=docker,mesos \ 
--env MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins \ 
-v /var/run/docker.sock:/var/run/docker.sock \ 
-v /sys:/sys:ro \ 
-v /usr/bin/docker:/usr/bin/docker:ro \ 
-v /lib64/libdevmapper.so.1.02:/lib/libdevmapper.so.1.02:ro \ 
-v /home/core/.dockercfg:/root/.dockercfg:ro \ 

还要注意的是,你不应该命名容器mesos-slave为副会尝试删除与mesos-在恢复任何前缀容器。

仅供参考,Mesos使用docker --version命令查看是否可以使用码头集装箱容器。尝试启动一个只运行docker --version的Marathon任务,看看它是否可以在你的dockerized slave环境中工作。

+1

我发现通过大量搜索,有两个关键配置行(包括你发布的):'-v/sys:/ sys'和'-v /var/run/docker.sock:/var/run/docker.sock'。包括这两条线使一切都很完美。我很高兴能够正常工作,但如果您有任何有关这些选项的信息(即*他们为什么*他们解决了这个问题),我很乐意听到它! – Magsol

+0

作为参考,这是我现在使用的'run'调用:https://github.com/magsol/littlejohn/blob/master/dockerfiles/lj-mesos-slave/start.sh – Magsol

+0

@Magsol我可以'你似乎弄清楚你在哪里输入这些配置?您是否在Docker中运行Mesos主节点和从属节点? –