Lógica de controle de utilização do serviço do Amazon ECS
O programador de serviço do Amazon ECS inclui uma lógica que controla a frequência com que as tarefas de serviço são iniciadas caso apresentem falhas repetidas na inicialização.
Se as tarefas de um serviço falharem repetidamente ao entrar no estado RUNNING
(mudando diretamente do estado PENDING
para STOPPED
), o tempo entre as tentativas de reinicialização subsequentes aumentará de maneira incremental até chegar a, no máximo, 27 minutos. Esse período máximo está sujeito a alterações no futuro. Esse comportamento reduz o efeito que tarefas com falha têm sobre os custos dos recursos de cluster do Amazon ECS ou da infraestrutura do Fargate. Se o seu serviço iniciar a lógica de controle de utilização, você receberá a seguinte mensagem de evento do serviço:
(service
service-name
) is unable to consistently start tasks successfully.
O Amazon ECS nunca impede a nova tentativa de um serviço com falha. Ele também não tenta modificá-lo de nenhuma outra forma que não seja aumentando o tempo entre reinicializações. A lógica de controle de serviço não fornece parâmetros ajustáveis pelo usuário.
Se você atualizar o serviço para usar uma nova definição de tarefa, ele retornará imediatamente ao estado normal, não controlado. Para ter mais informações, consulte Atualização de um serviço do Amazon ECS usando o console.
Veja a seguir algumas causas comuns que iniciam essa lógica. Recomendamos que você execute uma ação manual para resolver o problema:
-
A falta de recursos com os quais hospedar sua tarefa, como portas, memória ou unidades de CPU no seu cluster. Nesse caso, também é possível ver a mensagem de evento do serviço sobre recursos insuficientes.
-
O agente de contêiner do Amazon ECS não consegue extrair a imagem do Docker da tarefa. Isso pode ser devido a problemas com a imagem, etiqueta ou nome da imagem de contêiner ou à falta de autenticação ou de permissões de registro privado. Nesse caso, você também verá um
CannotPullContainerError
entre os erros da tarefa interrompida. -
Não há espaço em disco suficiente em sua instância de contêiner para criar o contêiner. Nesse caso, você também verá um
CannotCreateContainerError
entre os erros da tarefa interrompida. Para ter mais informações, consulte Solução de problemas relacionados a API error (500): devmapper do Docker no Amazon ECS.
Importante
Tarefas que são interrompidas depois que alcançam o estado RUNNING
não iniciam a lógica de controle de utilização ou a mensagem de evento do serviço associada. Por exemplo, suponha que a falha nas verificações de integridade do Elastic Load Balancing para um serviço faça com que uma tarefa seja sinalizada como não íntegra e que o Amazon ECS cancele o registro dessa tarefa e a interrompa. Nesse ponto, as tarefas não têm controle de utilização. Mesmo que um comando de contêiner da tarefa seja encerrado imediatamente com um código de saída diferente de zero, o estado da tarefa já terá sido mudado para RUNNING
. Tarefas que falham imediatamente porque erros de comando não causam o controle de utilização ou a mensagem de evento de serviço.