如果在docker镜像中运行的马拉松应用程序处于“部署”状态,我们在哪里可以检查应用程序未部署的原因?

时间:2015-08-04 09:11:23

标签: docker mesosphere marathon

检查了此网址(https://support.mesosphere.com/hc/en-us/articles/205575835-My-Marathon-app-isn-t-deploying-What-s-wrong-)日志没有显示任何原因。同时登录/ var / log / syslog和/ var / log / mesos也没有任何理由。

我正在尝试部署的应用的JSON文件:

    {
      "id": "/nodeexporter",
      "instances": 1,
      "constraints": [["hostname", "UNIQUE"]],
      "container": {
           "type": "DOCKER",
           "docker": {
           "image": "prom/node-exporter",
           "network": "BRIDGE",
           "portMappings": [
               {
                   "containerPort": 9100,
                   "hostPort": 0,
                   "protocol": "tcp"
               }
              ]
           }
       },
      "healthChecks": [{
      "protocol": "TCP",
      "gracePeriodSeconds": 600,
      "intervalSeconds": 30,
      "portIndex": 0,
      "timeoutSeconds": 10,
      "maxConsecutiveFailures": 2
      }]
  }

2 个答案:

答案 0 :(得分:1)

我在Mesos + Marathon设置中遇到了类似的问题。原因是奴隶缺乏资源。

在json文件中,您没有为cpusmem指令指定任何值。默认值为AFAIK,这些是1 CPU和128 MB内存。如果没有奴隶拥有足够的可用资源,您的应用程序将在部署状态中不断潜伏。

在Mesos主UI上,检查总资源和可用资源。如果您的应用程序不需要太多CPU或内存,请尝试在json文件中将这些值设置为如下所示:

"cpus": 0.1,
"mem": 16

并查看它是否成功启动。

编辑:刚看到您正在尝试运行Prometheus Node Exporter。我在我的设置上运行它,它只消耗大约25 MB的内存。

答案 1 :(得分:1)

如果任务失败并且您在stdout或stderr中都没有看到任何内容,则可以检查正在执行或已执行任务的从站上的日志,以查看是否存在原因(即无法找到容器)