Por que minha tarefa do Amazon ECS foi interrompida?

8 minuto de leitura
0

Quero solucionar por que minha tarefa do Amazon Elastic Container Service (Amazon ECS) foi interrompida.

Breve descrição

Suas tarefas do Amazon ECS podem ser interrompidas por um dos seguintes motivos:

  • O contêiner essencial na tarefa foi encerrado
  • Falha nas verificações de integridade do Elastic Load Balancing (ELB)
  • Verificações de integridade do contêiner falharam
  • Instância de contêiner não íntegra
  • Manutenção da infraestrutura subjacente
  • Evento de scaling de serviços acionado
  • ResourceInitializationError
  • CannotPullContainerError
  • Tarefa interrompida pelo usuário

Resolução

É possível usar a API DescribeTasks para ver os detalhes de uma tarefa interrompida. No entanto, os detalhes da tarefa interrompida aparecem somente por uma hora nos resultados retornados. Para permitir mais tempo para visualizar os detalhes da tarefa interrompida, use um modelo do AWS CloudFormation no site do GitHub. Use o modelo para armazenar os Amazon CloudWatch Logs de um evento do EventBridge que é acionado quando uma tarefa é interrompida.

Motivos para interrupção

A seguir estão os motivos comuns pelos quais sua tarefa do Amazon ECS pode ser interrompida.

O contêiner essencial na tarefa foi encerrado

Todas as tarefas devem ter pelo menos um contêiner essencial. Se o parâmetro essencial de um contêiner for marcado como verdadeiro e falhar ou parar, todos os contêineres na tarefa serão interrompidos. Para entender por que uma tarefa foi encerrada com esse motivo, use a API DescribeTasks para identificar o código de saída. Em seguida, conclua as etapas na seção Códigos de saída comuns deste artigo.

A tarefa falhou nas verificações de integridade do ELB

Quando uma tarefa falhar devido às verificações de integridade do ELB, confirme se seu grupo de segurança do contêiner permite tráfego que se origina do balanceador de carga. Conclua as seguintes tarefas:

  • Defina um período mínimo de carência da verificação de integridade. Esse período de carência instrui o programador de serviços a ignorar as verificações de integridade do Elastic Load Balancing por um período de tempo predefinido após a instanciação de uma tarefa.
  • Use o modo de iniciação lenta. Por padrão, um alvo recebe suas solicitações assim que é registrado em um grupo de destino e passa por uma verificação inicial de integridade. O modo de iniciação lenta permite que os alvos se aqueçam antes que o balanceador de carga envie aos alvos uma parcela completa das solicitações.
  • Monitore as métricas de CPU e memória do serviço. Por exemplo, uma CPU elevada pode fazer com que sua aplicação pare de responder e resultar em um erro 502.
  • Verifique os logs da aplicação em busca de erros da aplicação.
  • Verifique se a porta de ping e o caminho da verificação de integridade estão corretamente configurados.
  • Curve o caminho da verificação de integridade do Amazon Elastic Compute Cloud (Amazon EC2) e, em seguida, confirme o código de resposta.

Verificações de integridade do contêiner falharam

É possível definir verificações de integridade na API TaskDefinition. Ou é possível definir verificações de integridade no Dockerfile. Para obter mais informações, consulte Verificação de integridade no site do Docker.

Para visualizar o status de integridade dos contêineres individuais e da tarefa, use a operação da API DescribeTasks.

O status de saída do comando de verificação de integridade deve indicar que o contêiner está íntegro. Para verificar se há erros na aplicação nos logs do contêiner, use as configurações do driver de log especificadas na definição da tarefa. A seguir estão os valores possíveis para seu status de verificação de integridade:

  • 0: sucesso O contêiner está íntegro e pronto para uso
  • 1: não íntegro O contêiner não está funcionando corretamente
  • 2: reservado Não use esse código de saída

(instância i-##) (porta #) não está íntegra em (motivo pelo qual as verificações de integridade falharam)

Essa mensagem de erro indica que o status do contêiner não está íntegro. Para solucionar esse problema, conclua as seguintes tarefas:

  • Verifique se o grupo de segurança anexado à instância do contêiner permite tráfego.
  • Confirme se há uma resposta bem-sucedida sem demora do back-end.
  • Atualize o tempo de resposta para um valor correto.
  • Verifique os logs de acesso do balanceador de carga para obter mais informações.

Serviço ABCService: O ECS está realizando a manutenção na infraestrutura subjacente que hospeda a tarefa

Essa mensagem de erro indica que a tarefa foi interrompida devido a um problema de manutenção da tarefa. Para obter mais informações, consulte Perguntas frequentes sobre manutenção de tarefas do AWS Fargate no Amazon ECS.

Se a instância de contêiner fizer parte de um grupo do Auto Scaling, você deverá executar uma nova instância de contêiner e, em seguida, colocar as tarefas. Para obter mais informações, consulte Verificar uma ação de scaling para um grupo do Auto Scaling.

Evento de scaling de serviços do ECS acionado

Essa mensagem de erro é uma mensagem de serviço padrão. O Amazon ECS usa o serviço de Application Auto Scaling para fornecer essa funcionalidade. O serviço do ECS pode aumentar ou diminuir automaticamente a contagem desejada de tarefas. Para resolver essa mensagem de erro, conclua as seguintes tarefas:

  • Analise os alarmes do CloudWatch para ver se há alterações em suas tarefas.
  • Analise as implantações que estão programadas e que possam afetar suas tarefas.

ResourceInitializationError: não é possível extrair segredos ou autenticação do registro: falha na recuperação do recurso de execução

Para solucionar essa mensagem de erro, consulte Como soluciono a mensagem de erro “não é possível extrair segredos ou autenticação do registro” no Amazon ECS?

CannotPullContainerError

Essa mensagem de erro indica que a função de execução de tarefas usada não tem permissão para se comunicar com o Amazon ECS. Para solucionar esse problema, conclua as seguintes tarefas:

Tarefa interrompida pelo usuário

Essa mensagem de erro indica que a tarefa recebeu um StopTask. Para identificar quem iniciou a chamada, consulte StopTask no CloudTrail para obter informações de userIdentity.

Códigos de saída comuns

A seguir estão os códigos de saída comuns:

  • 0: Entrypoint, success ou CMD está concluindo sua execução. O contêiner está parado.
  • 1: Refere-se ao erro da aplicação. Para obter mais informações, revise os logs da aplicação.
  • 137: Ocorre quando a tarefa foi forçada a sair (SIGKILL) para o contêiner.
    Se você não responder a um SIGTERM dentro de um período padrão de 30 segundos, o valor SIGKILL será enviado e os contêineres serão interrompidos à força. É possível configurar o período padrão de 30 segundos no agente do contêiner do ECS com o parâmetro ECS_CONTAINER_STOP_TIMEOUT. Esse código de saída também pode ocorrer em uma situação de falta de memória (OOM). Para verificar se OOM ocorreu, revise suas métricas do CloudWatch.
  • 139: Ocorre quando ocorre uma falha de segmentação. Isso geralmente acontece quando a aplicação tenta acessar uma região de memória que não está disponível ou quando há uma variável de ambiente ou não definida que não é válida.
  • 255: Ocorre quando o comando ENTRYPOINT CMD em seu contêiner falha devido a um erro. Para confirmar que essa é a causa, revise suas métricas do CloudWatch.

Mensagens de erro comuns

A seguir estão as mensagens de erro comuns:

Nenhuma instância de contêiner foi encontrada em seu cluster

Para resolver essa mensagem de erro, consulte a seção de instâncias de contêiner do seu cluster. Se necessário, execute uma instância de contêiner.

InvalidParameterException

Para resolver essa mensagem de erro, revise seus parâmetros de TaskDefinition. Todos os parâmetros definidos em TaskDefinition devem estar presentes e o Amazon Resource Name (ARN) deve estar correto. Verifique se a função da tarefa e a função de execução da tarefa têm permissões suficientes.

Você atingiu o limite do número de tarefas que é possível executar simultaneamente

Para resolver essa mensagem de erro, revise seus limites. Para obter mais informações sobre limites, consulte as Service Quotas do ECS.

Para todas as outras solicitações de aumento de cota, crie um caso no console do AWS Support e escolha Aumento do limite de serviço.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses