Por que minha instância do Amazon ECS ou do Amazon EC2 não consegue ingressar no cluster?

8 minuto de leitura
0

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

Breve descrição

Sua instância do Amazon EC2 não pode se registrar ou ingressar em um cluster do Amazon ECS por um ou mais dos seguintes motivos:

  • O endpoint do ECS não pode acessar publicamente o nome do host do Sistema de Nomes de Domínio (DNS) da instância.
  • Suas configurações de sub-rede pública estão incorretas.
  • Suas configurações de sub-rede privada estão incorretas.
  • Seus endpoints da VPC estão configurados incorretamente.
  • Seus grupos de segurança não permitem tráfego de rede.
  • A instância do EC2 não tem as permissões necessárias do AWS Identity and Access Management (IAM). Ou a chamada da API ecs:RegisterContainerInstance foi negada.
  • Os dados do usuário da instância do seu contêiner do ECS estão configurados incorretamente.
  • O agente do ECS foi interrompido ou não está sendo executado na instância.
  • A configuração de execução do grupo do Auto Scaling não está correta (se sua instância fizer parte de um grupo do Auto Scaling).
  • A imagem de máquina da Amazon (AMI) que você usa para sua instância não atende aos pré-requisitos.

Resolução

Use o runbook AWSSupport-TroubleshootECSContainerInstance do AWS Systems Manager para solucionar os problemas comuns listados na seção Descrição resumida. Se a saída do runbook não fornecer recomendações, use as abordagens manuais de solução de problemas nas seções de Resolução a seguir.

Use o runbook do Systems Manager Automation

Use o runbook AWSSupport-TroubleshootECSContainerInstance para solucionar problemas da instância do EC2 que não consegue se registrar no cluster do ECS. Essa automação verifica possíveis problemas com os seguintes recursos:

  • Os dados do usuário da instância contêm as informações corretas do cluster.
  • O perfil da instância contém as permissões necessárias.
  • A rede está configurada corretamente

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

  1. Abra o console do AWS Systems Manager.
  2. No painel de navegação, em Gerenciamento de alterações, escolha Automação.
  3. Escolha Executar automação.
  4. Escolha a guia Propriedade da Amazon.
  5. Em Documento de automação, pesquise por TroubleshootECSContainerInstance.
  6. Selecione o cartão AWSSupport-TroubleshootECSContainerInstance.
    Observação: selecione o botão de rádio e não o nome da automação com hiperlink.
  7. Escolha Avançar.
  8. No Documento da automação de execução, escolha Execução simples.
  9. Na seção Parâmetros de entrada, em AutomationAssumeRole, insira o nome do recurso da Amazon (ARN) do perfil que permite ao Systems Manager Automation executar ações.
    Observação: se você não especificar um perfil do IAM, o Systems Manager Automation usará as permissões do usuário ou do perfil do IAM que executa o runbook. Para obter mais informações sobre como criar o perfil de obtenção para o Systems Manager Automation, consulte Método 2: Usar o IAM para configurar perfis para o Automation. Certifique-se de que o perfil AutomationAssumeRole ou o perfil do IAM tenham as seguintes permissões: ec2:DescribeIamInstanceProfileAssociations, ec2:DescribeInstanceAttribute, ec2:DescribeInstances, ec2:DescribeNetworkAcls, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcs, ec2:DescribeVpcEndpoints, iam:GetInstanceProfile, iam:GetRole, iam:SimulateCustomPolicy e iam:SimulatePrincipalPolicy.
  10. Em ClusterName, insira o nome do cluster em que a instância do EC2 não conseguiu se registrar.
  11. Em InstanceID, insira o ID da instância do EC2 que falhou no registro.
  12. Escolha Executar.

A saída do runbook informa etapas e recomendações de solução de problemas.

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

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

sudo systemctl status ecs

Se o agente de contêiner 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 da saída do comando deve ser semelhante à seguinte:

ecs start/running, process 23403

Verifique as configurações de execução

Se a instância que você está executando fizer parte de um grupo do Auto Scaling, confirme se a configuração de execução do grupo do Auto Scaling está correta. Para obter mais informações, consulte a Etapa 5 em Como atualizar um cluster de instância de contêiner do Amazon ECS com uma nova AMI.

Verifique a AMI da sua instância

Se a AMI que você usa para a instância do EC2 for uma AMI copiada ou personalizada, confirme se a instância tem os seguintes componentes:

  • Uma distribuição Linux moderna executando pelo menos a versão 3.10 do kernel Linux.
  • Versão mais recente do agente de contêiner do Linux do Amazon ECS.
  • Um daemon do Docker executando pelo menos a versão 1.9.0 e qualquer ](https://docs.docker.com/engine/install/binaries/)dependência do tempo de execução do Docker[ (no site do Docker). Para visualizar a versão atual do Docker, execute o comando sudo docker version. Para obter informações sobre como instalar a versão mais recente do Docker em sua distribuição Linux específica, consulte a documentação do Docker para Instalar o mecanismo do Docker no site do Docker.

As AMIs otimizadas do Amazon ECS são pré-configuradas com esses requisitos. É uma prática recomendada usar AMIs otimizadas do Amazon ECS, a menos que sua aplicação demande uma versão que ainda não esteja disponível nessa AMI.

Verificar os arquivos de log

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

Para visualizar 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

Solução de 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.

Entre em contato com aws-verification@amazon.com. Não se esqueça de mencionar que você deve desbloquear sua conta.

Error: re-registering: ClientException: Container instance 12345678910xxxxxxxxxxxx is inactive.\n\tstatus code: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Você recebe esse erro quando o agente do ECS não consegue registrar a instância de contêiner do EC2 no cluster do ECS porque a instância do EC2 está inativa agora. Esse erro está relacionado à aplicação que está sendo executada na instância. Para entender a causa do erro, verifique a aplicação. Se o erro persistir, verifique os logs do agente do 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 pode ocorrer devido a uma ThrottlingException que resulta quando uma chamada de API específica excede o limite de taxa. Para resolver esse erro, aumente o limite de taxa no nível da conta. Verifique as APIs, como RegisterTargets 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 do ECS está preso no estado Pendente e não consegue alterar o tipo de instância. Ao contrário de algumas instâncias do EC2, você não pode interromper a instância do ECS, alterar o tipo de instância e iniciá-la novamente. Para alterar o tipo de instância no Amazon ECS, conclua as seguintes etapas:

  1. Encerre a instância de contêiner.
  2. Execute uma nova instância de contêiner com o novo tamanho da instância. É 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 você pode criar uma nova configuração de execução. 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 devido à falta de permissões do IAM. Para resolver esses erros, revise as instruções no ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html#instance-iam-role-verify)perfil do IAM da instância de contêiner do Amazon ECS[.

Além disso, execute o runbook AWSSupport-TroubleshootECSContainerInstance para ver quais permissões estão faltando na função da instância de contêiner.

Informações relacionadas

Criar uma nuvem privada virtual

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

Como criar seus próprios runbooks