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

If an marathon app running in a docker image, is in 'deploying' state, where can we check the reason why the app isn't deploying?

已检查此 URL (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
      }]
  }

我在 Mesos + Marathon 设置中遇到了类似的问题。原因是slaves资源不足

在您的 json 文件中,您没有为 cpusmem 指令指定任何值。默认,据我所知,这些是 1 CPU 和 128 MB 内存。如果没有 slave 有足够的可用资源,您的应用程序将一直潜伏在部署状态。

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

"cpus": 0.1,
"mem": 16

看看是否启动成功

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

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