我在马拉松赛上运行码头集装箱。我想实现健康检查,基本上想运行一个健康检查脚本。我的问题是,healthcheck命令是在容器本身上运行还是在从属服务器上运行?它可能是容器级别的,因为这是每个应用程序的运行状况检查,所以有点明显,但我想确认一下。没有找到任何相关的文件,说明它运行的地方。谢谢我确实尝试通过命令回显到/tmp/testfile,我在从机上看到了这个命令。这意味着它在奴隶身上运行?只是需要确认一下。任何更多的信息都是有用的
lf3rwulv1#
mesos级别的健康检查(mesos\u http、mesos\u https、mesos\u tcp和command)由mesos在运行相应任务的代理上本地执行,从而测试mesos执行器的可达性。与马拉松级别的健康检查相比,mesos级别的健康检查具有以下优势:mesos级别的健康检查在尽可能靠近任务的地方执行,因此它们不受网络故障的影响。mesos级别的健康检查被委托给运行任务的代理,因此可以检查的任务数量可以随着集群中代理的数量水平扩展。限制和注意事项mesos级的健康检查会消耗代理上的额外资源;此外,每次检查任务时,fork执行进程和输入任务的名称空间都会有一些开销。运行状况检查进程与它们检查的任务共享资源。应用程序定义必须考虑运行状况检查所消耗的额外资源。mesos级的健康检查要求任务除了侦听它们所需的任何接口外,还侦听容器的环回接口。如果在生产环境中运行服务,则需要确保用户能够访问它。马拉松目前不支持mesos和马拉松级别健康检查的组合。示例用法http:
{ "path": "/api/health", "portIndex": 0, "protocol": "HTTP", "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3, "ignoreHttp1xx": false }
或mesos http:
{ "path": "/api/health", "portIndex": 0, "protocol": "MESOS_HTTP", "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3 }
或安全http:
{ "path": "/api/health", "portIndex": 0, "protocol": "HTTPS", "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3, "ignoreHttp1xx": false }
注意:https健康检查不会验证ssl证书。或tcp:
{ "portIndex": 0, "protocol": "TCP", "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 0 }
或命令:
{ "protocol": "COMMAND", "command": { "value": "curl -f -X GET http://$HOST:$PORT0/health" }, "gracePeriodSeconds": 300, "intervalSeconds": 60, "timeoutSeconds": 20, "maxConsecutiveFailures": 3 } { "protocol": "COMMAND", "command": { "value": "/bin/bash -c \\\"</dev/tcp/$HOST/$PORT0\\\"" } }
更多信息:https://mesosphere.github.io/marathon/docs/health-checks.html
k0pti3hp2#
简单的回答是:视情况而定。长答案如下:)。命令健康检查由任务容器中的mesos docker执行器通过 docker exec . 如果您使用“统一容器器”运行您的容器,也就是说,对于没有docker守护进程的docker容器,情况是相似的,但是没有区别 docker exec 而mesos的执行者只需进入 mnt 在执行命令运行状况检查之前,容器的命名空间(请参阅此文档)。http和tcp运行状况检查由marathon调度器运行,因此不一定在容器运行的节点上运行(除非您使用mesos代理在同一节点上运行marathon,这可能是您不应该执行的)。查看此页。现在从mesos 1.2.0和Marathon1.3开始,有可能运行所谓的mesos本地健康检查。在这种情况下,http(s)和tcp运行状况检查都会在运行容器的代理上运行。为了确保可以访问容器网络,这些检查将进入 net 容器的命名空间。
docker exec
mnt
net
2条答案
按热度按时间lf3rwulv1#
mesos级别的健康检查(mesos\u http、mesos\u https、mesos\u tcp和command)由mesos在运行相应任务的代理上本地执行,从而测试mesos执行器的可达性。与马拉松级别的健康检查相比,mesos级别的健康检查具有以下优势:
mesos级别的健康检查在尽可能靠近任务的地方执行,因此它们不受网络故障的影响。
mesos级别的健康检查被委托给运行任务的代理,因此可以检查的任务数量可以随着集群中代理的数量水平扩展。
限制和注意事项
mesos级的健康检查会消耗代理上的额外资源;此外,每次检查任务时,fork执行进程和输入任务的名称空间都会有一些开销。
运行状况检查进程与它们检查的任务共享资源。应用程序定义必须考虑运行状况检查所消耗的额外资源。
mesos级的健康检查要求任务除了侦听它们所需的任何接口外,还侦听容器的环回接口。如果在生产环境中运行服务,则需要确保用户能够访问它。
马拉松目前不支持mesos和马拉松级别健康检查的组合。
示例用法http:
或mesos http:
或安全http:
注意:https健康检查不会验证ssl证书。
或tcp:
或命令:
更多信息:https://mesosphere.github.io/marathon/docs/health-checks.html
k0pti3hp2#
简单的回答是:视情况而定。长答案如下:)。
命令健康检查由任务容器中的mesos docker执行器通过
docker exec
. 如果您使用“统一容器器”运行您的容器,也就是说,对于没有docker守护进程的docker容器,情况是相似的,但是没有区别docker exec
而mesos的执行者只需进入mnt
在执行命令运行状况检查之前,容器的命名空间(请参阅此文档)。http和tcp运行状况检查由marathon调度器运行,因此不一定在容器运行的节点上运行(除非您使用mesos代理在同一节点上运行marathon,这可能是您不应该执行的)。查看此页。现在从mesos 1.2.0和Marathon1.3开始,有可能运行所谓的mesos本地健康检查。在这种情况下,http(s)和tcp运行状况检查都会在运行容器的代理上运行。为了确保可以访问容器网络,这些检查将进入
net
容器的命名空间。