Por que minha instância do Amazon EC2 não pode se juntar ao cluster do Amazon ECS?

7 minuto de leitura
0

Não consigo usar um cluster do Amazon Elastic Container Service (Amazon ECS) para registrar minha instância do Amazon Elastic Compute Cloud (Amazon EC2).

Resolução

Primeiro, use o runbook AWSSupport-TroubleshootECSContainerInstance do AWS Systems Manager para verificar automaticamente possíveis problemas. O runbook AWSSupport-TroubleshootECSContainerInstance soluciona automaticamente os motivos comuns pelos quais sua instância do EC2 não consegue se registrar ou ingressar em um cluster.

Observação: certifique-se de usar o runbook AWSSupport-TroubleshootECSContainerInstance na mesma região da AWS do seu cluster do Amazon ECS e instância do EC2.

Se a saída do runbook não fornecer recomendações, tome as medidas a seguir para solucionar o problema manualmente.

Pré-requisitos:

  • A instância do EC2 deve ter um perfil do AWS Identity and Access Management (IAM) anexado com as permissões necessárias para se comunicar com sua configuração do Amazon ECS. O perfil do IAM para a instância também deve ter as permissões ecs:RegisterContainerInstance para que o Amazon ECS possa registrar a instância do contêiner no cluster. Se você não precisar personalizar seu perfil do IAM, use AmazonEC2ContainerServiceForEC2Role.
  • Verifique se a configuração da rede da instância do contêiner está correta. Para obter mais informações, consulte A configuração de rede da sua instância de contêiner do Amazon ECS está incorreta em Como posso resolver o erro “CannotPullContainerError” na minha tarefa de tipo de execução do EC2 no Amazon ECS?

Verifique o status do agente do Amazon ECS na instância do Amazon Linux 2

Para verificar se o agente de contêiner do Amazon ECS na instância está em execução, execute o comando a seguir:

sudo systemctl status ecs

Se o agente de contêiner do Amazon ECS não estiver em execução na sua instância, execute o seguinte comando para iniciar o agente:

sudo systemctl start ecs

A saída do comando de inicialização é semelhante ao seguinte exemplo:

Active: active (running)

Para verificar se o serviço do Docker está em execução, execute o seguinte comando:

sudo systemctl status docker

Se o serviço do Docker não estiver em um estado de execução, execute o seguinte comando para iniciar o serviço:

sudo systemctl start docker

A saída do comando de inicialização é semelhante ao seguinte exemplo:

Active: active (running)

Verifique as configurações de execução

Se a instância que você está executando fizer parte de um grupo do Auto Scaling, verifique se a configuração de execução do grupo do Auto Scaling está correta. Para mais informações, consulte a etapa 5. Criar uma nova configuração de execução em Atualizar um cluster de instância de contêiner do Amazon ECS com uma nova Amazon Machine Image (AMI).

Verifique a AMI da sua instância de contêiner

Se a AMI da instância do contêiner for uma AMI copiada ou personalizada, certifique-se de que a instância atenda aos seguintes requisitos:

Esses requisitos são pré-configurados nas AMIs otimizadas do Amazon ECS. É uma prática recomendada usar uma AMI otimizada para Amazon ECS, a menos que sua aplicação exija uma versão que não esteja disponível nessa AMI. Para obter mais informações, consulte Recuperação de metadados de AMI Linux otimizados para Amazon ECS.

Verifique se os dados do usuário da instância contêm as informações corretas do cluster

Para verificar se os dados do usuário da instância contêm as informações corretas do cluster, execute o seguinte comando:

#!/bin/bash  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config

Observação: substitua cluster-name pelo nome do seu cluster.

Verificar os arquivos de log

Se o problema persistir, use o coletor de logs do Amazon ECS para coletar os logs. Em seguida, revise os logs para descobrir a causa. Você também pode verificar os arquivos de log no host do contêiner do agente de contêiner do Amazon ECS e do Docker.

Para visualizar os arquivos de log do agente de contêiner do Amazon ECS 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: Substitua AAAA-MM-DD pela data em que você deseja verificar os arquivos de log.

Solucione erros comuns

Erro: executando uma nova instância do EC2. Motivo do status: Essa conta está bloqueada no momento e não é reconhecida como uma conta válida. Entre em contato com aws-verification@amazon.com se tiver dúvidas. Falha ao executar a instância do EC2.

Esse erro ocorre quando sua conta da AWS está bloqueada e a Amazon não reconhece a conta. Para desbloquear sua conta, envie um e-mail solicitando que a AWS desbloqueie sua conta para aws-verification@amazon.com.

Error: re-registering: ClientException: A instância do contêiner 12345678910abcdefghixzy está inativa.\n\tCódigo de status: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Esse erro ocorre quando o agente de contêiner do Amazon ECS não consegue usar o cluster para registrar a instância de contêiner do EC2 porque a instância do EC2 está inativa. Esse erro está relacionado à aplicação que está sendo executada na instância. Para entender a causa do erro, verifique primeiro a aplicação. Se o erro persistir, verifique os logs do agente de contêiner do Amazon ECS.

Erro: Poucas instâncias conseguem ingressar no cluster, mas com as mesmas configurações, outras instâncias não conseguem ingressar no cluster.

Esse erro ocorre quando uma chamada de API específica excede a cota de taxa e resulta em uma ThrottlingException. Para obter mais informações, consulte Solicitar controle de utilização para a API do Amazon ECS. Para resolver esse erro, aumente a cota de taxa no nível da conta. Use o AWS CloudTrail para verificar chamadas de API comuns, como ListTasks e RegisterContainerInstance.

Erro: depois de alterar o tipo de instância, as novas instâncias não podem ingressar no cluster.

Esse erro ocorre quando o agente de contêiner do Amazon ECS está preso no estado Pendente e não consegue alterar o tipo de instância. Para alterar o tipo de instância no Amazon ECS, conclua as seguintes etapas:

  1. Exclua a instância do contêiner.
  2. Execute uma nova instância de contêiner com o novo tipo de instância.
    Observação: É uma prática recomendada executar a instância com a AMI do Amazon Linux 2 otimizada para o Amazon ECS para o seu cluster.

Ou crie uma nova configuração de execução e, em seguida, atualize a configuração de execução no grupo do Auto Scaling.

Para obter mais informações, consulte Como alterar meu tipo de instância de contêiner no Amazon ECS?

Erro: não é possível se registrar como uma instância de contêiner com o ECS: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster . status code: 400, request id: 0a123456-7899-10101-a987-6543210deff

-ou-

Erro: 29/06/2019 T 16:10:09 Z\ [ERROR] Erro ao se registrar novamente: 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: 0a123456-7899-10101-a987-123456pqrs

Esses erros ocorrem quando você não tem as permissões do IAM necessárias. Para resolver esses erros, crie um perfil do IAM de instância de contêiner. Além disso, execute o runbook AWSSupport-TroubleshootECSContainerInstance para identificar as permissões que estão faltando no perfil da instância de contêiner.

Informações relacionadas

Por que minhas instâncias de contêiner do Amazon ECS com AMIs do Amazon Linux 1 estão desconectadas?

Solução de problemas do Amazon ECS