Minhas tarefas do Amazon Elastic Container Service (Amazon ECS) estão presas no estado de PROVISIONAMENTO.
Resolução
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Para solucionar esse problema, visualize seus eventos de serviço do Amazon ECS para o serviço afetado para verificar as recentes atividades e falhas de implantação. Use os padrões de eventos e as mensagens de erro para determinar se o problema está relacionado a problemas de capacidade, rede ou configuração. Para obter mais detalhes sobre falhas na inicialização da tarefa, verifique as mensagens de erro da tarefa interrompida para ver os erros do TaskFailedToStart.
Verifique a configuração do seu provedor de capacidade
Para verificar se o grupo do Amazon EC2 Auto Scaling do provedor de capacidade atinge sua capacidade máxima durante o provisionamento da tarefa, execute o seguinte comando describe-auto-scaling-groups da AWS CLI:
aws autoscaling describe-auto-scaling-groups \
--auto-scaling-group-names your-asg-name \
--query 'AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MaxSize:MaxSize,RunningInstances:Instances[?LifecycleState==InService].InstanceId|length}'
Observação: substitua your-asg-name pelo nome do seu grupo do EC2 Auto Scaling.
Para visualizar todas as instâncias de contêiner e seu status, execute o seguinte comando list-container-instances:
aws ecs list-container-instances \
--cluster your-cluster-name \
--status ACTIVE \
--query 'containerInstanceArns[]'
Para aumentar a capacidade do seu grupo do Auto Scaling, execute o seguinte comando update-auto-scaling-group:
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name your-asg-name \
--max-size new-max-size
Observação: substitua your-asg-name pelo nome do grupo do EC2 Auto Scaling e substitua new-max-size pelo tamanho de grupo atualizado do EC2 Auto Scaling.
Além disso, certifique-se de que o agente do Amazon ECS esteja em execução e saudável nas instâncias do contêiner.
Para solucionar ainda mais os erros do provedor de capacidade, consulte Como soluciono problemas quando tento configurar um novo provedor de capacidade ou atualizar um provedor de capacidade existente para meu cluster do Amazon ECS?
Verifique a configuração do serviço e a escalabilidade de tarefas
Certifique-se de que a contagem desejada do serviço corresponda à capacidade de infraestrutura disponível em CPU e memória nas instâncias do contêiner. Para visualizar a contagem e a contagem de execução desejadas do serviço, execute o seguinte comando describe-services:
aws ecs describe-services \
--cluster your-cluster-name \
--services your-service-name \
--query 'services[].{desiredCount:desiredCount,runningCount:runningCount,pendingCount:pendingCount}'
Observação: substitua your-cluster-name pelo nome do cluster e your-service-name pelo nome do serviço.
Para atualizar a contagem desejada do serviço, execute o seguinte comando update-service:
aws ecs update-service \
--cluster your-cluster-name \
--service your-service-name \
--desired-count new-count
--force-new-deployment
Observação: substitua your-cluster-name pelo nome do cluster, your-service-name pelo nome do serviço e new-count pela contagem de tarefas desejada. A opção \ --force-new-deployment força a atualização do serviço.
Verifique suas service quotas
Se você exceder suas service quotas do Amazon ECS, poderá encontrar problemas de tarefa. Para solucionar problemas de cota de serviço, consulte Como resolvo problemas de cota de serviço do Amazon ECS?
Verifique sua configuração de rede
Verifique as regras do grupo de segurança de tarefas e certifique-se de que a sub-rede tenha endereços IP disponíveis. Para sub-redes privadas sem NAT Gateway, configure os endpoints VPC necessários para sua configuração. Os grupos de segurança de endpoints da VPC devem permitir tráfego de entrada do CIDR da sua sub-rede de tarefas.
Seus grupos de segurança também devem permitir o seguinte tráfego:
- Tráfego HTTPS de saída (porta 443) para gateways de Internet ou NAT para extrair imagens de contêiner.
- Tráfego de saída para os endpoints VPC que você usa.
- Tráfego de entrada do grupo de segurança do Application Load Balancer para configurações que usam um Application Load Balancer.
- Tráfego de entrada entre contêineres que precisam se comunicar.
Para verificar se a sub-rede do serviço Amazon ECS tem o endereço IP necessário, execute o seguinte comando describe-subnets:
aws ec2 describe-subnets \
--subnet-ids subnet-abcde \
--query 'Subnets[].{SubnetId:SubnetId,AvailableIPs:AvailableIpAddressCount,TotalIPs:CidrBlock}'
Observação: substitua subnet-abcde pelo seu ID de sub-rede.
Certifique-se de cumprir os requisitos do modo de rede da sua tarefa:
- Para o modo awsvpc, certifique-se de que cada tarefa tenha uma interface de rede elástica dedicada.
Observação: há uma cota máxima de interfaces de rede para cada tipo de instância. Certifique-se de que suas instâncias de contêiner tenham pontos de conexão de interface de rede disponíveis para novas tarefas.
- Para o modo bridge, certifique-se de que a ponte docker0 tenha endereços IP suficientes em seu grupo.
- Para o modo host, não há restrições específicas de recursos de rede. No entanto, conflitos de portas podem ocorrer quando várias tarefas usam a mesma porta de host.
Informações relacionadas
Solução de problemas do Amazon ECS
Service quotas do Amazon ECS
Escale automaticamente seu serviço do Amazon ECS
Arquitete sua solução para o Amazon ECS