Ir para o conteúdo

Perguntas frequentes: Tarefas do Amazon ECS que estão presas em um estado de ciclo de vida

8 minuto de leitura
0

Quero saber por que minha tarefa do Amazon Elastic Container Service (Amazon ECS) está presa em um determinado estado do ciclo de vida.

P: Por que minha tarefa do Amazon ECS está presa no estado de PROVISIONAMENTO?

Quando o agendador do ECS não consegue encontrar uma instância do ECS adequada no tipo de inicialização do Amazon Elastic Compute Cloud (Amazon EC2), uma tarefa que usa o tipo de inicialização pode permanecer no estado de PROVISIONAMENTO. Isso acontece mesmo se houver espaço disponível nas instâncias de contêiner existentes para a execução da tarefa.

As tarefas no estado de PROVISIONAMENTO formam uma fila. O Amazon ECS adiciona tarefas à fila que não podem ser implantadas devido a restrições de recursos relacionadas à memória, portas, interfaces de rede elástica, GPU e CPUs. À medida que mais recursos se tornam disponíveis, essas tarefas passam para o estado EM EXECUÇÃO.

Se você gerencia o escalamento para o provedor de capacidade, as tarefas não falham imediatamente quando não conseguem obter recursos suficientes nas instâncias existentes. Em vez disso, as tarefas entram no estado de PROVISIONAMENTO. Se você não gerenciar o escalamento, as tarefas que não conseguem encontrar capacidade falharão imediatamente.

Quando ocorrem problemas e as tarefas no modo awsvpc não conseguem provisionar interfaces de rede elásticas, elas podem permanecer no estado de PROVISIONAMENTO. As tarefas do AWS Fargate também podem permanecer no estado de PROVISIONAMENTO quando ocorrem problemas e não conseguem provisionar interfaces de rede elásticas.

P: Por que minhas tarefas do Amazon ECS passam do estado de PROVISIONAMENTO para o estado PARADO quando usam um provedor de capacidade?

Um ECS pode ficar preso no estado de PROVISIONAMENTO pelos seguintes motivos:

  • Erros de configuração
  • Restrições de recursos
  • Desalinhamento com as especificações do provedor de capacidade

Para solucionar esses erros, execute as seguintes ações:

  • Verifique se o grupo do Auto Scaling associado ao provedor de capacidade atingiu sua contagem máxima de instâncias. Se o limite for atingido, o ECS não poderá provisionar mais tarefas.

  • Se você estiver usando o tipo de inicialização do Amazon EC2 com um modelo de inicialização associado ao seu grupo do Auto Scaling, verifique os dados do usuário. Verifique se você tem o nome correto do cluster no seguinte formato:

    #!/bin/bash
    echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
  • Certifique-se de que a política ecsInstanceRole com a relação de confiança correta esteja anexada às instâncias associadas ao seu grupo do Auto Scaling.

  • Confira os eventos do serviço Amazon ECS. Se você vir o erro a seguir, a instância será iniciada, mas não configurada para o balanceador de carga anexado:
    O destino está em uma Zona de disponibilidade que não está ativada para o balanceador de carga

  • Certifique-se de que as sub-redes designadas para a tarefa e as instâncias de contêiner gerenciadas pelo provedor de capacidade estejam na mesma Zona de disponibilidade. Eles devem estar na mesma Zona de disponibilidade para tarefas que você inicia com uma estratégia de provedor de capacidade no modo de rede aws-vpc.

  • Para tarefas que usam o modo de rede awsvpc em instâncias Linux do EC2, as interfaces de rede elásticas não são fornecidas com endereços IP públicos. Para acessar a internet, você deve iniciar tarefas em uma sub-rede privada configurada para usar um gateway NAT. As tarefas que você inicia em sub-redes públicas não têm acesso à internet e podem ficar presas no estado de PROVISIONAMENTO.

Para obter mais informações, consulte Visualizar mensagens de eventos do serviço do Amazon ECS.

P. Por que minha tarefa do Amazon ECS está presa no estado PENDENTE?

Quando o Amazon ECS está esperando que o atendente de contêiner realize outras ações, sua tarefa entra no estado PENDENTE. A tarefa permanece nesse estado até que os recursos sejam disponibilizados para a tarefa.

Para obter mais informações, consulte Por que minha tarefa do Amazon ECS está presa no estado PENDENTE?

P: Por que minha tarefa do Amazon ECS está presa no estado ATIVANDO?

Quando o processo principal nos contêineres passa para o estado EM EXECUÇÃO e o Amazon ECS executa outras etapas, sua tarefa entra no estado ATIVANDO. Por exemplo, você deve criar recursos de descoberta de serviços para tarefas que usam a descoberta de serviços.

Para tarefas que fazem parte de um serviço que usa vários grupos de destino do Elastic Load Balancing, o registro do grupo de destino ocorre durante esse estado. Quando a tarefa está no estado ATIVANDO, o Amazon ECS espera que as ações correspondentes sejam concluídas nos recursos de registro do grupo de destino ou de descoberta de serviços.

P: Por que minha tarefa que usa a descoberta de serviços está presa no estado ATIVANDO?

Verifique o histórico de eventos do AWS CloudTrail para ver as chamadas de API relacionadas ao serviço de descoberta de serviços correspondentes, como as seguintes:

  • CreatePrivateDnsNamespace
  • CreateService
  • RegisterInstance
  • UpdateInstanceCustomHealthStatus

As ações de API anteriores são definidas na política gerenciada pela AWS AmazonECSServiceRolePolicy. Se a chamada de API falhar com um código de erro, como SeviceNotFound ou InternalFailure, siga as considerações sobre descoberta de serviços.

P: Por que uma tarefa que usa o grupo de destino do Elastic Load Balancing está presa no estado ATIVANDO?

Quando o Amazon ECS leva muito tempo para determinar a integridade do contêiner, a tarefa pode ficar paralisada no estado ATIVANDO. Para calcular o tempo total necessário, multiplique os parâmetros HealthCheckIntervalSeconds e HealthyThresholdCount. Para acelerar o processo de verificação de integridade, reduza o número de verificações e o intervalo entre elas. Verifique os eventos do CloudTrail para ver se algum erro ou falha foi relatado nas chamadas de API RegisterTargets correspondentes do Elastic Load Balancing.

P: Por que minha tarefa do Amazon ECS está presa no estado EM EXECUÇÃO quando deveria estar no estado PARADO?

Problemas com a aplicação ou uma tarefa mal configurada podem fazer com que sua tarefa fique presa no estado EM EXECUÇÃO.

Para solucionar esses erros, execute as seguintes ações:

  • Examine os logs da aplicação em busca de erros ou informações sobre o motivo pelo qual o contêiner não sai. Depois que o contêiner essencial sai, a tarefa passa para o estado PARADO.
  • Se a tarefa fizer parte de um serviço do Amazon ECS, verifique se seus parâmetros DeploymentConfiguration estão definidos corretamente.
  • Se a tarefa fizer parte de um serviço do Amazon ECS que usa um balanceador de carga, verifique se o parâmetro deregistration delay está definido corretamente.
  • Verifique se o valor ECS_CONTAINER_STOP_TIMEOUT está definido corretamente.
  • Ative o Amazon ECS exec para sua tarefa. Em seguida, use o ECS exec para fazer login no contêiner e solucionar o problema na aplicação.

Para obter mais informações, consulte Como soluciono problemas de tarefas do Amazon ECS que demoram muito para serem interrompidas quando a instância de contêiner está definida como DRAINING?

P: Por que minha tarefa do Amazon ECS está presa no estado DESATIVANDO?

No estado DESATIVANDO, o Amazon ECS executa mais etapas antes que a tarefa seja interrompida. Por exemplo, para tarefas que fazem parte de um serviço que usa vários grupos de destino do Elastic Load Balancing, o cancelamento do registro do grupo de destino ocorre durante esse estado.

Os motivos a seguir podem fazer com que sua tarefa permaneça no estado DESATIVANDO:

  • Você exclui os recursos relacionados aos grupos de destino do Elastic Load Balancing antes que a tarefa possa cancelar o registro dos grupos de destino.
  • O role personalizado especificado como parâmetro quando você cria o serviço Amazon ECS não tem as permissões necessárias do Elastic Load Balancing.
  • Você exclui o perfil personalizado quando a tarefa está ativa.

Verifique se o grupo de destino e o perfil do AWS Identity and Access Management (AWS IAM) que você especificou na definição de serviço existem. Além disso, certifique-se de que a definição de serviço inclua a política de confiança necessária e as permissões do Elastic Load Balancing.

Para otimizar o tempo necessário para que uma tarefa saia do estado DESATIVANDO, ajuste os parâmetros deregistration_delay.timeout_seconds and deregistration_delay.timeout_seconds. Para obter mais informações, consulte Drenagem da conexão do balanceador de carga.

P: Por que minha tarefa do Amazon ECS está presa no estado de DESPROVISIONAMENTO?

O Amazon ECS executa outras etapas após a interrupção da tarefa, mas antes da transição da tarefa para o estado PARADO. Por exemplo, para tarefas que usam o modo de rede awsvpc, o Amazon ECS desanexa e exclui a interface de rede elástica.

Os motivos a seguir podem fazer com que sua tarefa permaneça no estado de DESPROVISIONAMENTO:

  • Você excluiu os perfis vinculados ao serviço associados ao serviço antes de a tarefa ser encerrada. O serviço predefine os perfis vinculados ao serviço e inclui todas as permissões que o serviço exige para chamar outros serviços da AWS em seu nome. Execute o comando a seguir para verificar se um perfil vinculado ao serviço está associado ao seu serviço:

    $aws ecs describe-services --cluster CLUSTER-NAME --services SERVICE-NAME
  • Você excluiu o grupo de destino antes que as tarefas cancelassem o registro do grupo de destino.

AWS OFICIALAtualizada há 2 anos