我们有一个运行在 ECS 集群中的 Docker 容器(Spring Boot)。我们在没有 Elastic Load Balancing 的情况下运行它。
我们希望在不停机的情况下更新服务,因此当新任务正常运行时,旧任务停止。我们一直在尝试在任务定义上添加健康检查,但它拒绝工作。我已经尝试过这些基本的健康检查命令。
[ "CMD-SHELL","exit 0" ]
[ "CMD-SHELL","exit 1" ]
Run Code Online (Sandbox Code Playgroud)
我希望前者会导致一个健康状况良好的任务,而后者会导致健康检查失败..在这两种情况下,新任务都可以正常启动,但健康状况未知。
这与我们不使用 ELB 有关系吗?文档不是很好,我的谷歌搜索没有返回任何有用的东西。
小智 5
Given 命令在语法上无效。
它应该是
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
Run Code Online (Sandbox Code Playgroud)
CMD或CMD-SHELL- 使用容器的默认 shell 运行命令curl -f http://localhost/ - 需要在容器内执行以验证健康检查的实际命令。exit 1 - 如果 curl 命令失败,那么它将退出 shell 所以你应该像下面一样改变你的命令。
[ "CMD-SHELL", "echo hi || exit 1" ]
Run Code Online (Sandbox Code Playgroud)
echo hi 是我的示例中的 helath 检查命令,您可以执行任何命令而不是“echo hi”,如果它在您的容器中成功运行,则应返回退出状态 0。
小智 5
raja 的回答和 Andrew 的编辑对 ECS/FARGATE 的回答略有偏差。它没有括号也没有引号:
CMD-SHELL, curl -f http://localhost/ || exit 1
Run Code Online (Sandbox Code Playgroud)
如果在 ECS 的任务定义中输入健康检查信息,这是正确的格式。
ECS/FARGATE 的无效文档 https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HealthCheck.html
| 归档时间: |
|
| 查看次数: |
17381 次 |
| 最近记录: |