Docker应用程序部署在Marathon上挂起,在Mesos上失败

时间:2015-07-10 21:13:25

标签: docker mesos mesosphere marathon

我正尝试Dockerizing Zookeeper / Marathon / Mesos的(可能是愚蠢的)任务,并从 Dockerized Mesos集群部署Docker容器

到目前为止,我在两个物理上独立的节点上有一个工作的Mesos集群:一个节点同时运行Mesos masterslave(容器Dockerfiles链接),第二个节点正在运行奴隶。他们似乎运作得很好;我能够通过Marathon(也是自己的容器,在主节点和从节点上运行)提交非常简单的作业,并且它们成功完成。

但是,当我尝试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

编辑1

每个执行程序生成的沙箱日志也完全为空。

empty sandbox

编辑2

在奴隶日志中发现了一些有趣的东西:

slave logs

兴趣爱好:

  

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

看起来集装箱运输无法运行,而且从我所看到的情况来看,它甚至没有将码头工程师视为集装箱运输工具。我按照配置here来部署Docker作业;如果Mesos奴隶本身就是Docker容器,这会改变吗?

我有点偏离了我的元素,并且无法在这些方面找到任何参考。知道发生了什么吗?

1 个答案:

答案 0 :(得分: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容器。尝试启动只运行docker --version的Marathon任务,看看它是否可以在dockerized slave的环境中运行。