跳至内容

如何对 Amazon ECS 任务的容器运行状况检查失败问题进行故障排除?

1 分钟阅读
0

我的 Amazon Elastic Container Service (Amazon ECS) 任务未通过容器运行状况检查。

简短描述

如果您的任务中的 Amazon ECS 容器使用您的服务无法通过的运行状况检查,则您会收到以下错误:

“(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks.”

解决方法

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

在本地测试容器以确保其通过容器运行状况检查

在向 Amazon ECS 预置容器之前,请确保其按预期运行。使用 Docker Docs 网站上的 HEALTHCHECK 测试您的容器。确认容器通过了 Dockerfile 中的运行状况检查。然后,在任务定义中指定运行状况检查配置,以允许 Amazon ECS 容器代理监控和报告运行状况检查。

**注意:**Amazon ECS 不监控嵌入在容器映像中且未在容器定义中指定的 Docker 运行状况检查。容器定义中指定的运行状况检查参数会覆盖容器映像中存在的 Docker 运行状况检查。

确认您对 Amazon ECS 任务使用正确的语法

确认您传递给容器的命令是准确的,且您对命令使用了正确的语法。不要用双引号分隔运行状况检查命令,例如 ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]。相反,请使用以下命令语法:

["CMD-SHELL", "healthcheck.sh || exit 1"]

给您的容器足够的时间启动

如果您的容器需要很长时间才能启动,则它可能无法通过容器运行状况检查。在高级容器定义参数中设置 startPeriod 以满足配置需求。

对于运行时间较长的任务,请查看您的应用程序日志

如果您的容器运行了很长时间且未通过容器运行状况检查,请查看您的应用程序日志。如果您的任务使用 awslogs 日志驱动程序,请在 Amazon CloudWatch 中查看您的应用程序日志。

**注意:**AWS Fargate 是一项托管服务,因此您无法访问底层基础设施。要对 Fargate 的此问题进行故障排除,请在 Amazon Elastic Compute Cloud (Amazon EC2) 中启动您的 Amazon ECS 任务。然后,使用 SSH 连接到您的 Amazon EC2 实例。您也可以使用 ECS Exec 直接与您的 Amazon ECS 容器进行交互。

相关信息

如何让使用 Amazon EC2 启动类型的 Amazon ECS 任务通过应用程序负载均衡器运行状况检查?