Perché la mia istanza Amazon ECS o Amazon EC2 non è in grado di entrare a far parte del cluster?

Ultimo aggiornamento: 18/08/2022

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 entrare a far parte di un cluster ECS per uno o più dei seguenti motivi:

  • L'endpoint ECS non può accedere pubblicamente al nome host DNS dell'istanza.
  • Le configurazioni della sottorete pubblica non sono corrette.
  • Le configurazioni della sottorete privata non sono corrette.
  • Gli endpoint VPC non sono configurati correttamente.
  • I gruppi di sicurezza non permettono il traffico di rete.
  • L'istanza EC2 non dispone delle autorizzazioni AWS Identity and Access Management (IAM) richieste. Oppure, la chiamata API ecs:RegisterContainerInstance è stata negata.
  • I dati utente dell'istanza per il container ECS non sono configurati correttamente.
  • L'agente ECS è stato arrestato o non è in esecuzione sull'istanza.
  • La configurazione di avvio del gruppo Auto Scaling non è corretta (se l'istanza fa parte di un gruppo Auto Scaling).
  • L'Amazon Machine Image (AMI) utilizzata per l'istanza non soddisfa i prerequisiti.

Risoluzione

Importante: utilizza il runbook AWS Systems Manager AWSSupport-TroubleshootECSContainerInstance per risolvere i problemi comuni riportati nella sezione precedente. Se l'output del runbook non offre suggerimenti, allora usa gli approcci manuali per la risoluzione dei problemi descritti nelle sezioni successive.

Utilizzo del runbook di Systems Manager Automation

Con il runbook AWSSupport-TroubleshootECSContainerInstance, è possibile risolvere i problemi relativi all'istanza EC2 che non riesce a registrarsi nel cluster ECS. Questa automazione esamina quanto segue:

  • I dati utente per l'istanza contengono le informazioni corrette sul cluster?
  • Il profilo dell'istanza contiene le autorizzazioni richieste?
  • Ci sono problemi di configurazione della rete?

Importante: utilizza il runbook AWSSupport-TroubleshootECSContainerInstance nella stessa regione AWS in cui si trovano il cluster ECS e l'istanza EC2.

  1. Apri la console di AWS Systems Manager.
  2. Nel pannello di navigazione, in Gestione modifiche, scegli Automazione.
  3. Scegli Esegui automazione.
  4. Seleziona la scheda Proprietà di Amazon.
  5. In Documento di automazione, cerca TroubleshootECSContainerInstance.
  6. Seleziona la scheda AWSSupport-TroubleshootECSContainerInstance.
    Nota: assicurati di selezionare il pulsante di opzione e non il nome dell'automazione con collegamento ipertestuale.
  7. Scegli Avanti.
  8. Per Documento di automazione dell'esecuzione, assicurati che sia selezionata l'opzione Esecuzione semplice.
  9. Nella sezione Parametri di input, per AutomationAssumeRole, specifica l'Amazon Resource Name (ARN) del ruolo che consente a Systems Manager Automation di completare le operazioni.
    Nota: se non specifichi un ruolo IAM, Systems Manager Automation utilizzerà 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 Processo 1: Creazione di un ruolo di servizio per l'automazione.
    Importante: verific che AutomationAssumeRole o l'utente/ruolo IAM dispongano delle autorizzazioni per le seguenti azioni: 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. Per ClusterName, immetti il nome del cluster per cui l'istanza EC2 non è riuscita a registrarsi.
  11. Per InstanceId, immetti l'ID dell'istanza EC2 che non è riuscita a registrarsi.
  12. Scegli Esegui.

L'output del runbook fornisce i passaggi per la risoluzione dei problemi e i suggerimenti per risolvere il problema che ha causato la mancata registrazione dell'istanza EC2 nel cluster.

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

Controlla se l’agente ECS sull'istanza è in esecuzione eseguendo il seguente comando:

sudo status ecs

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

sudo start ecs

L'output del comando deve essere simile al seguente:

ecs start/running, process 23403

Controllo delle configurazioni di avvio

Se l'istanza viene avviata come parte di un gruppo Auto Scaling, assicurati che la configurazione di avvio del gruppo Auto Scaling sia corretta. Per ulteriori informazioni, consulta il Passaggio 5 in Aggiornamento di un cluster di istanze di container Amazon ECS con una nuova AMI.

Controlla l'AMI dell'istanza

Se l'AMI utilizzata per l'istanza EC2 è copiata o personalizzata, assicurati che l'istanza abbia i seguenti componenti:

Le AMI ottimizzate per Amazon ECS sono preconfigurate con questi requisiti. Pertanto, come best practice, è consigliabile utilizzarle per le istanze di container, a meno che l'applicazione non richieda un sistema operativo specifico o una versione Docker non ancora disponibile in tale AMI.

Verifica dei registri

Se il problema persiste, raccogli i registri utilizzando il raccoglitore di registri ECS, quindi esaminali per individuare 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

Errori comuni

Errore: avvio di una nuova istanza EC2. Motivo dello stato: This account is currently blocked and not recognized as a valid account (Questo account è attualmente bloccato e non riconosciuto come account valido). Please contact aws-verification@amazon.com if you have questions (In caso di domande, contatta aws-verification@amazon.com). Avvio dell'istanza EC2 non riuscito.

Contatta aws-verification@amazon.com come indicato nel motivo dello stato e riferisci che devi sbloccare il tuo account.

Errore: nuova registrazione: ClientException: Istanza di container 12345678910xxxxxxxxxxxx inattiva.\n\tCodice stato: 400, ID richiesta: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

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

Errore: alcune istanze sono in grado di entrare a far parte del cluster, ma con le stesse configurazioni altre istanze non lo sono.

Questo errore potrebbe essere causato da un'eccezione ThrottlingException che si verifica quando viene superato il limite del tasso per una chiamata API specifica. Per risolvere questo errore, aumenta il limite del tasso a livello di account. Assicurati di controllare 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 in stato di attesa e non può modificare il tipo di istanza. A differenza di quanto accade con altre istanze EC2, non è possibile arrestare l'istanza ECS, modificare il tipo di istanza e quindi avviarla di nuovo. Per modificare il tipo di istanza in ECS, è necessario terminare l'istanza di container e quindi avviarne una nuova con le dimensioni desiderate utilizzando la più recente AMI Amazon Linux 2 ottimizzata per Amazon ECS per il cluster desiderato. È inoltre possibile creare una nuova configurazione di avvio e quindi aggiornare questa configurazione di avvio nel gruppo Auto Scaling.

Errore: Impossibile registrare come istanza di container con ECS: AccessDeniedException: L'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 . Codice stato: 400, ID richiesta: 0a123456-7899-10101-a987-6543210deff

2019-06-29T16:10:09Z [ERRORE] Errore di nuova registrazione: AccessDeniedException: L'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 Codice stato: 400, ID richiesta: 0a123456-7899-10101-a987-123456pqrs

Questi errori sono causati dalla mancanza di autorizzazioni IAM. Per risolvere questi errori, consulta le istruzioni in Verifica del ruolo IAM dell'istanza di container Amazon ECS.

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