Docker 通过命令协议和容器使用Marathon Health Check时的奇怪行为

Docker 通过命令协议和容器使用Marathon Health Check时的奇怪行为,docker,mesos,marathon,Docker,Mesos,Marathon,我不明白为什么以下请求不能在Marathon中开始健康检查。容器已启动,但状态仍为部署 { "id": "bridged-webapp", "cmd": "python3 -m http.server 8080", "cpus": 0.1, "mem": 64.0, "instances": 1, "container": { "type": "DOCKER", "docker": { "image": "python:3",

我不明白为什么以下请求不能在Marathon中开始健康检查。容器已启动,但状态仍为部署

{
  "id": "bridged-webapp",
  "cmd": "python3 -m http.server 8080",
  "cpus": 0.1,
  "mem": 64.0,
  "instances": 1,
  "container": {
     "type": "DOCKER",
     "docker": {
       "image": "python:3",
        "network": "BRIDGE",
        "portMappings": [
           { 
             "containerPort": 8080,
             "hostPort": 31313,
             "servicePort": 9000,
             "protocol": "tcp"
           }
        ]
      }
    },
  "healthChecks": [
    {
        "protocol": "COMMAND",
        "command": { "value": "echo 0" },
        "maxConsecutiveFailures": 3
    }
   ]
}
当我看马拉松比赛的记录时,它基本上只是说健康检查已经开始,但仅此而已:

Aug 28 16:52:33 cnode2 marathon[11495]: [2015-08-28 16:52:33,603] INFO   Adding health check for app [/bridged-webapp] and version [2015-08-28T16:52:33.500Z]: [HealthCheck(Some(/),COMMAND,0,Some(Command(echo 0)),300 seconds,60 seconds,20 seconds,3,false)] (mesosphere.marathon.health.MarathonHealthCheckManager$$EnhancerByGuice$$d8828133:76)
Aug 28 16:52:33 cnode2 marathon[11495]: [INFO] [08/28/2015 16:52:33.604] [marathon-akka.actor.default-dispatcher-693] [akka://marathon/user/$kg] Starting health check actor for app [/bridged-webapp] and healthCheck [HealthCheck(Some(/),COMMAND,0,Some(Command(echo 0)),300 seconds,60 seconds,20 seconds,3,false)]
Aug 28 16:52:33 cnode2 marathon[11495]: [INFO] [08/28/2015 16:52:33.627] [marathon-akka.actor.default-dispatcher-694] [akka://marathon/user/MarathonScheduler/$a/DeploymentManager/4f3a1a8e-8934-441a-9c55-b7cf332893e2/$a] Successfully started 0 instances of /bridged-webapp
Aug 28 16:52:37 cnode2 marathon[11495]: [2015-08-28 16:52:37,080] INFO Received status update for task bridged-webapp.2f4399a5-4da5-11e5-b538-080027bb2503: TASK_RUNNING () (mesosphere.marathon.MarathonScheduler$$EnhancerByGuice$$b7a64e04:100)
在UI中,作业运行状况为灰色,表示运行状况检查未知

真正奇怪的是,如果我运行相同的作业,但没有容器,它就会工作

有什么想法吗?

更新: 结果是命令运行状况检查无法与docker executor一起工作。。。。一位同事已经为此打开了一个问题: 我们至少会尽快更新文档


谢谢你发现这个

在mesos 0.27.0中,行为似乎发生了变化。现在,
命令在docker容器内执行。我在任何地方都没有看到记录。

问题是它甚至没有给我一个红色状态,而是给我一个灰色状态,这意味着健康检查未知。此外,在他们基于curl的示例中,如果curl成功,它将返回0。即使说它有效,但对于mesos 0.25.0和marathon 0.11,它不是…没有运行状况检查的同一个作业也有效,目前正在尝试了解运行状况检查的错误…也许您可以尝试命令:{“value”:“curl 127.0.0.1:8080”}用于您的案例,您确定吗?似乎mesos 0.28.x版本中仍在使用
mesos health checkl
二进制文件: