Por que minhas instâncias de contêiner do Amazon ECS com AMIs do Amazon Linux 1 estão desconectadas?
Minhas instâncias de contêiner do Amazon Elastic Container Service (Amazon ECS) estão desconectadas.
Breve descrição
Seu agente de contêiner do Amazon ECS pode se conectar e se reconectar várias vezes por hora. Esses eventos de mudança são normais e não são motivo de preocupação.
No entanto, se seu agente de contêiner permanecer em um estado desconectado, a instância de contêiner não poderá operar como parte do seu cluster do ECS. Seu agente está desconectado quando agentConnected retorna false. O problema pode ser causado pelo seguinte:
- Problemas de rede impedem a comunicação entre a instância e o Amazon ECS.
- O agente de contêiner não tem as permissões necessárias do AWS Identity and Access Management (IAM) para se comunicar com os endpoints do Amazon ECS.
- Há problemas com o host ou o serviço Docker dentro da instância de contêiner.
Para identificar a causa da desconexão, conclua as etapas a seguir.
Resolução
Observação: A resolução a seguir se aplica às AMIs do Amazon Linux 1 otimizadas para o Amazon ECS. Para obter uma resolução que se aplica às AMIs do Amazon Linux 2 otimizadas para o Amazon ECS, consulte Como soluciono problemas de um agente desconectado do Amazon ECS?
Verificar se o serviço Docker está sendo executado na instância de contêiner
1. Para verificar se o serviço Docker está sendo executado na instância de contêiner afetada, execute o seguinte comando:
sudo service docker status
A saída do comando é semelhante à seguinte:
docker (pid 23013) is running...
Se o serviço Docker não estiver em execução ou se você precisar reiniciá-lo, execute o seguinte comando:
sudo service docker restart
Observação: Não insira esse comando enquanto o serviço já estiver em execução. Primeiro, certifique-se de configurar a instância de contêiner para o estado draining. Em seguida, reinicie o serviço Docker para que as tarefas existentes sejam agendadas em outra instância de contêiner.
A saída do comando deve incluir as seguintes linhas:
Stopping docker: [ OK ] Starting docker: [ OK ]
Observação: Para verificar se o serviço Docker está sendo executado após o comando de reinicialização, execute o comando sudo service docker status.
2. Para iniciar o agente do ECS, execute o seguinte comando:
sudo start ecs
Verifique se o agente de contêiner está sendo executado na instância de contêiner
Para verificar se o agente de contêiner está sendo executado na instância de contêiner afetada, execute o seguinte comando:
sudo status ecs
Se o agente de contêiner não estiver em execução em sua instância de contêiner, execute o seguinte comando para iniciar o agente:
sudo start ecs
A saída do comando é semelhante à seguinte:
ecs start/running, process 23403
Revisar os arquivos de log do agente de contêiner e do Docker
Se suas instâncias de contêiner ainda estiverem desconectadas, revise os arquivos de log no host do contêiner para o agente de contêiner e o Docker.
Para gerar os arquivos de log do agente de contêiner e do Docker, execute os seguintes comandos:
sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-** sudo cat /var/log/docker
Observação: Para coletar informações de log da instância de contêiner, execute o coletor de logs do Amazon ECS.
Verificar se o perfil de instância do IAM tem as permissões necessárias
Se o agente de contêiner ainda estiver desconectado, verifique se o perfil de instância do IAM associado à instância de contêiner tem as permissões do IAM necessárias.
1. Conecte-se à instância usando SSH.
2. Para visualizar os metadados da instância no perfil de instância associado à instância, execute o seguinte comando:
curl http://169.254.169.254/latest/meta-data/iam/info
A saída do comando é semelhante à seguinte:
{ "Code" : "Success", "LastUpdated" : "2019-06-29T15:47:03Z", "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole", "InstanceProfileId" : "AIPAJ5WF3LZVY7PLUHV72" }
3. Verifique se o perfil do IAM contém as permissões corretas para suas instâncias de contêiner.
4. Para verificar erros de credenciais específicos com o agente de contêiner, execute o seguinte comando para verificar o log do agente de contêiner para obter uma lista de logs do ECS:
cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**
Observação: O log do agente de contêiner é rotacionado a cada hora, e o sufixo muda automaticamente para refletir a data e a hora atuais. Atualize o comando para incluir o intervalo de datas e o ID de log de quando o problema ocorreu.
Se o agente de contêiner não tiver as credenciais necessárias, você receberá um erro semelhante ao seguinte nos logs:
2019-06-29T16:10:09Z [ERROR] Unable to register as a container instance with ECS: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f 2019-06-29T16:10:09Z [ERROR] Error re-registering: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f
Ajuda adicional
Se você não conseguir identificar o problema com sua instância de contêiner do ECS a partir dessa resolução, entre em contato com o Suporte premium para obter ajuda. Primeiro, use o coletor de logs do Amazon ECS para criar um arquivo dos logs da sua instância. Em seguida, anexe os logs a um tíquete de suporte para ajudar o engenheiro a solucionar o problema.
Informações relacionadas
Solução de problemas do Amazon ECS
Agente de contêiner do Amazon ECS
Conteúdo relevante
- feita há 13 diaslg...
- Resposta aceitafeita há 11 diaslg...
- feita há um mêslg...
- feita há 13 diaslg...
- AWS OFICIALAtualizada há 4 anos
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há um mês