Perché la mia istanza Amazon ECS o Amazon EC2 non è in grado di unirsi al cluster?

7 minuti di lettura
0

Non riesco a registrare la mia istanza Amazon Elastic Compute Cloud (Amazon EC2) con un cluster Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

La tua istanza Amazon EC2 non può registrarsi o aderire a un cluster Amazon ECS per uno o più dei seguenti motivi:

  • L'endpoint ECS non può accedere pubblicamente al Sistema dei nomi di dominio (DNS) dell'istanza.
  • Le configurazioni della tua sottorete pubblica non sono corrette.
  • Le configurazioni della tua sottorete privata non sono corrette.
  • Gli endpoint VPC non sono configurati correttamente.
  • I tuoi gruppi di sicurezza non consentono il traffico di rete.
  • L'istanza EC2 non dispone delle autorizzazioni AWS Identity and Access Management (IAM) richieste. In alternativa, la chiamata all'API ecs:RegisterContainerInstance viene negata.
  • I dati utente dell'istanza per il container ECS non sono configurati correttamente.
  • L'agente ECS è fermato o non è in esecuzione sull'istanza.
  • La configurazione di avvio del gruppo con dimensionamento automatico non è corretta (se l'istanza fa parte di un gruppo con dimensionamento automatico).
  • L'Amazon Machine Image (AMI) che usi per la tua istanza non soddisfa i prerequisiti.

Risoluzione

Usa il runbook AWS Support-TroubleshootecsContainerInstance AWS Systems Manager per risolvere i problemi più comuni elencati nella sezione Breve descrizione. Se l'output del runbook non fornisce consigli, utilizza la risoluzione manuale per la risoluzione dei problemi descritta nelle seguenti sezioni relative alla Risoluzione.

Usa il runbook di Systems Manager Automation

Usa il runbook AWSSupport-TroubleshootECSContainerInstance per risolvere i problemi dell'istanza EC2 che non riesce a registrarsi nel cluster ECS. Questa automazione verifica la presenza di potenziali problemi con le seguenti risorse:

  • I dati utente dell'istanza contengono le informazioni corrette sul cluster.
  • Il profilo dell'istanza contiene le autorizzazioni richieste.
  • La rete è configurata correttamente

Nota: assicurati di utilizzare il runbook AWS Support-TroubleshootECSContainerInstance nella stessa Regione AWS in cui si trovano il cluster ECS e l'istanza EC2.

  1. Apri la console AWS Systems Manager.
  2. Nel riquadro di navigazione, in Gestione delle modifiche, scegli Automazione.
  3. Scegli Esegui automazione.
  4. Scegli la scheda Owned by Amazon.
  5. Nel documento Automation, cerca TroubleshootecsContainerInstance.
  6. Seleziona la scheda AWSSupport-TroubleshootecsContainerInstance.
    Nota: Seleziona il pulsante di opzione e non il nome dell'automazione con collegamento ipertestuale.
  7. Scegli Avanti.
  8. Per Esegui documento di automazione, scegli Esecuzione semplice.
  9. Nella sezione Parametri di input, per AutomationAssumeRole, inserisci il nome della risorsa Amazon (ARN) del ruolo che consente a Systems Manager Automation di eseguire azioni.
    Nota: Se non specifichi un ruolo IAM, Systems Manager Automation utilizza le autorizzazioni dell'utente o del ruolo IAM che esegue il runbook. Per ulteriori informazioni sulla creazione del ruolo di assunzione per Systems Manager Automation, consulta Metodo 2: Usa IAM per configurare i ruoli per l'automazione. Assicurati che AutomationAssumeRole o il ruolo IAM disponga delle seguenti autorizzazioni: ec2:DescribeIamInstanceProfileAssociations, ec2:DescribeInstanceAttribute, ec2:DescribeInstances, ec2:DescribeNetworkAcls, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcs, ec2:DescribeVpcEndpoints, iam:GetInstanceProfile, iam:GetRole, iam:SimulateCustomPolicy, and iam:SimulatePrincipalPolicy.
  10. Per ClusterName, inserisci il nome del cluster in cui l'istanza EC2 non è stata registrata.
  11. Per InstanceID, inserisci l'ID dell'istanza EC2 che non è stata registrata.
  12. Scegli Esegui.

L'output del runbook fornisce passaggi e consigli per la risoluzione dei problemi.

Verifica lo stato dell'agente Amazon ECS sull'istanza Amazon Linux 2

Esegui il comando seguente per verificare se l'agente container Amazon ECS sull'istanza è in esecuzione:

sudo systemctl status ecs

Se l'agente container non è in esecuzione sulla tua istanza, esegui il seguente comando per avviare l'agente:

sudo systemctl start ecs

L'output dell'output del comando deve essere simile al seguente:

ecs start/running, process 23403

Controlla le configurazioni di avvio

Se l'istanza che stai lanciando fa parte di un gruppo con dimensionamento automatico, conferma che la configurazione di avvio del gruppo con dimensionamento automatico sia corretta. Per ulteriori informazioni, consulta la Fase 5 di Aggiornamento di un cluster di istanze container Amazon ECS con una nuova AMI.

Controlla l'AMI della tua istanza

Se l'AMI che usi per l'istanza EC2 è un'AMI copiata o personalizzata, conferma che l'istanza abbia i seguenti componenti:

  • Una moderna distribuzione Linux che esegue almeno la versione 3.10 del kernel Linux.
  • Versione più recente dell'agente container Amazon ECS Linux.
  • Un daemon Docker che esegue almeno la versione 1.9.0 e tutte le dipendenze di runtime Docker (dal sito Web Docker). Per visualizzare la versione corrente di Docker, esegui il comando sudo docker version. Per informazioni sull'installazione della versione più recente di Docker sulla tua particolare distribuzione Linux, consulta la documentazione Docker per Install Docker engine sul sito Web di Docker.

Le AMI ottimizzate per Amazon ECS sono preconfigurate con questi requisiti. È consigliabile utilizzare le AMI ottimizzate per Amazon ECS, a meno che l'applicazione non richieda una versione non ancora disponibile in tale AMI.

Verifica i file di log

Se il problema persiste, utilizza Amazon ECS logs collector per raccogliere i log, quindi esaminali per individuarne la causa. Puoi anche controllare i file di log sull'host del container per l'agente container e Docker.

Per visualizzare i file di log per l'agente container e Docker, esegui i seguenti comandi:

sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**
sudo cat /var/log/docker

Risoluzione degli errori più comuni

Errore: Lancio di una nuova istanza EC2. Motivo dello stato: Questo account è attualmente bloccato e non è riconosciuto come account valido. In caso di domande, contatta aws-verification@amazon.com. Avvio dell'istanza EC2 non riuscito.

Contatta aws-verification@amazon.com. Ricorda che devi sbloccare il tuo account.

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

Questo errore viene visualizzato quando l'agente ECS non riesce a registrare l'istanza del container EC2 con il cluster ECS perché l'istanza EC2 è ora inattiva. Questo errore è correlato all'applicazione in esecuzione sull'istanza. Per comprendere la causa dell'errore, controlla l'applicazione. Se l'errore persiste, controlla i log dell'agente ECS.

Errore: Poche istanze sono in grado di unirsi al cluster, ma con le stesse configurazioni, altre istanze non sono in grado di unirsi al cluster.

Questo errore può verificarsi a causa di una ThrottlingException che si verifica quando una chiamata API specifica supera il limite di velocità. Per risolvere questo errore, aumenta il limite tariffario a livello di account. Controlla le API, come RegisterTargets e RegisterContainerInstance.

Errore: Dopo aver modificato il tipo di istanza, le nuove istanze non sono in grado di unirsi al cluster.

Questo errore si verifica quando l'agente ECS è bloccato nello stato Pending e non può modificare il tipo di istanza. A differenza di alcune istanze EC2, non è possibile arrestare l'istanza ECS, modificare il tipo di istanza e quindi riavviarla. Per modificare il tipo di istanza in Amazon ECS, completa i seguenti passaggi:

  1. Termina l'istanza del container.
  2. Avvia una nuova istanza di container con la nuova dimensione dell'istanza. È consigliabile avviare l'istanza con l'AMI Amazon Linux 2 ottimizzata per Amazon ECS per il tuo cluster.

In alternativa, puoi creare una nuova configurazione di avvio. Quindi, aggiorna la configurazione di avvio nel gruppo con dimensionamento automatico.

Per ulteriori informazioni, consulta Come posso modificare il tipo di istanza del mio container in Amazon ECS?

Errore: Impossibile registrarsi come istanza di container con ECS: AccessDeniedException: Utente: arn:aws:sts: :1122334455:assumed-role/ecsInstanceRole/I-00aa11bb22cc33def non è autorizzato a eseguire: ecs:RegisterContainerInstance sulla risorsa: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster . status code: 400, request id: 0a123456-7899-10101-a987-6543210deff

-oppure-
Errore: 2019-06-29T16:10:09Z [ERROR] Error re-registering: AccessDeniedException: Utente: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/I-0052b2e858b1891ef non è autorizzato a eseguire: ecs:registerContainerInstance sulla risorsa: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster status code: 400, request id: 0a123456-7899-10101-a987-123456pqrs

Questi errori si verificano a causa della mancanza delle autorizzazioni IAM. Per risolvere questi errori, consulta le istruzioni nel ruolo IAM dell'istanza di container Amazon ECS.

Inoltre, esegui il runbook AWSSupport-TroubleshootecsContainerInstance per vedere quali autorizzazioni mancano nel ruolo dell'istanza del container.

Informazioni correlate

Crea un cloud privato virtuale

Perché le mie istanze container Amazon ECS con le AMI di Amazon Linux 1 sono disconnesse?

Risoluzione dei problemi di Amazon ECS

Crea i tuoi runbook