咨询:Nomad中无端口Docker进程的轻量健康检查实现方案
用Nomad进程健康检查解决问题
不需要额外暴露端口或添加辅助服务,直接用Nomad内置的进程健康检查就能满足你的需求——完全匹配「主进程没崩溃就算健康」的判定标准。
具体配置方法:
- 在Nomad任务的
service或check块里,指定type = "process",通过进程名或者PID定位主进程即可。 - 示例配置片段:
task "your-task" { driver = "docker" config { image = "your-image:tag" entrypoint = ["your-entrypoint-command"] } service { name = "your-service" check { type = "process" name = "main-process-alive" command = "pgrep" args = ["your-entrypoint-command"] interval = "10s" timeout = "2s" } } }
- 更省事的写法:直接检查容器里的PID 1进程(容器主进程默认是PID 1):
check { type = "process" name = "main-process-running" interval = "10s" timeout = "2s" process_pid = 1 }
这种方式不用修改Docker镜像,也不用启动nc这类多余进程,是最轻量化且贴合你需求的方案。
要是你非得暴露个端口凑数,也可以用busybox的tcpsvd开个空端口,但相比进程检查多了额外进程,不如前者优雅。
内容的提问来源于stack exchange,提问作者Arkadiy Kukarkin
相关产品推荐
相关产品推荐

