Estou tentando usar o novo recurso AWS Batch:https://aws.amazon.com/batch/
Não consigo executar nem mesmo o trabalho em lote mais simples (usando a demonstração que é "echo hello world"). O trabalho fica preso no estado executável.
Para tentar isolar o problema, estou usando todas as configurações padrão em uma conta AWS totalmente nova.
Meu entendimento é que eu não deveria ter que iniciar nenhuma instância do EC2 manualmente para usar esse recurso, que o AWS Batch deveria fazer isso por mim. No entanto, parece estar aguardando uma instância EC2 disponível para executar o trabalho. Não deveria apenas iniciar uma instância do EC2 para executar o trabalho sozinho?
Desde já, obrigado.
Responder1
Percebi que quando eu especificava uma definição de trabalho com 8.000 MiB, seria gerada uma instância com apenas 7.986 MB e meu trabalho ficaria preso no estado Executável.
8.000 MiB é igual a 8.388,608 MB, portanto, parece que a instância que está sendo ativada não tem memória suficiente disponível para executar o trabalho e, portanto, trava.
Se eu criar uma definição de trabalho com 7.000 MiB, meu trabalho não ficará mais preso no estado Executável, pois ainda usa a mesma instância com 7.986 MB de memória.
Responder2
Há um guia de solução de problemas na documentação do Lote para solucionar problemas de "Trabalhos travados no status RUNNABLE". https://docs.aws.amazon.com/batch/latest/userguide/troubleshooting.html#job_stuck_in_runnable
Se o seu ambiente de computação contiver recursos de computação, mas seus trabalhos não progredirem além do status RUNNABLE, então há algo que impede que os trabalhos sejam realmente colocados em um recurso de computação. Aqui estão algumas causas comuns para esse problema:
O driver de log awslogs não está configurado em seus recursos de computação
Os trabalhos do AWS Batch enviam suas informações de log para o CloudWatch Logs. Para habilitar isso, você deve configurar seus recursos de computação para usar o driver de log awslogs. Se você basear sua AMI de recursos de computação na AMI otimizada para Amazon ECS (ou Amazon Linux), esse driver será registrado por padrão com o pacote ecs-init. Se você usar uma AMI base diferente, deverá garantir que o driver de log awslogs seja especificado como um driver de log disponível com a variável de ambiente ECS_AVAILABLE_LOGGING_DRIVERS quando o agente de contêiner do Amazon ECS for iniciado. Para obter mais informações, consulte Especificação da AMI de recursos de computação e Criação de uma AMI de recursos de computação.
Recursos insuficientes
Se as definições de trabalho especificarem mais recursos de CPU ou memória do que os recursos de computação podem alocar, seus trabalhos nunca serão colocados. Por exemplo, se o seu trabalho especificar 4 GiB de memória e os seus recursos de computação tiverem menos do que isso, o trabalho não poderá ser colocado nesses recursos de computação. Nesse caso, você deverá reduzir a memória especificada em sua definição de tarefa ou incluir recursos de cálculo maiores em seu ambiente.
Limite de instâncias do Amazon EC2 atingido
O número de instâncias do Amazon EC2 que sua conta pode executar em uma região da AWS é determinado pelo limite de instâncias do EC2. Certos tipos de instância também têm um limite por tipo de instância. Para obter mais informações sobre os limites de instância do Amazon EC2 da sua conta (incluindo como solicitar um aumento de limite), consulte Limites de serviço do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux
Outros problemas muito comuns que vejo que causam isso seriam:
- Sem rota para a internet
- CPU/Memória na definição do trabalho é maior que as instâncias
- A instância não está registrada no cluster ECS
- O agente está desconectado -https://aws.amazon.com/premiumsupport/knowledge-center/ecs-agent-disconnected/
Etapas adicionais de solução de problemas que você pode seguir:
- Inicie a definição de tarefa associada do ECS manualmente em seu cluster
- SSH e tente docker executado de dentro da instância do contêiner
- Curl ECS e endpoints em lote de dentro da instância do contêiner
- Remover restrições de CPU/memória na definição de trabalho
- Revise /etc/ecs/ecs.config
- Obtenha registros do ECS -https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html
Responder3
Hoje tive o mesmo problema. Eu resolvi esse problema fazendo o seguinte:
Abra VPC
→ Subnets
→ <YOUR SUBNET>
→ Subnet Actions
→ Modify Auto-assign IP
Configuração .
Marque Enable auto-assign public IPV4 address
Recriar seu ambiente de computação do AWS Batch.
Porque a instância do contêiner precisa de acesso à Internet. Portanto, a instância do contêiner precisará de um IP público global.