Perché la mia istanza Amazon EC2 non può connettersi al cluster Amazon ECS?
Non riesco a usare il cluster Amazon Elastic Container Service (Amazon ECS) per registrare la mia istanza Amazon Elastic Compute Cloud (Amazon EC2).
Risoluzione
Innanzitutto, utilizza il runbook di AWS Systems Manager AWSSupport-TroubleshootecsContainerInstance per verificare automaticamente la presenza di potenziali problemi. Il runbook AWSSupport-TroubleshootecsContainerInstance risolve automaticamente i problemi comuni per cui l'istanza EC2 non può registrarsi o connettersi a un cluster.
Nota: assicurati di utilizzare il runbook AWSSupport-TroubleshootecsContainerInstance nella stessa regione AWS del cluster Amazon ECS e dell'istanza EC2.
Se l'output del runbook non fornisce consigli, intraprendi le seguenti azioni per risolvere manualmente il problema.
Prerequisiti:
- L'istanza EC2 deve avere un ruolo AWS Identity and Access Management (IAM) collegato con le autorizzazioni necessarie per comunicare con la tua configurazione di Amazon ECS. Il ruolo IAM per l'istanza deve inoltre disporre delle autorizzazioni ecs:RegisterContainerInstance in modo che Amazon ECS possa registrare l'istanza del container con il cluster. Se non hai bisogno di personalizzare il tuo ruolo IAM, utilizza AmazonEC2ContainerServiceForec2Role.
- Verifica che la configurazione di rete dell'istanza di container sia accurata. Per ulteriori informazioni, consulta La configurazione della rete dell’istanza di container Amazon ECS non è corretta in Come posso risolvere l'errore “CannotPullContainerError” nella mia attività con tipo di avvio EC2 in Amazon ECS?
Verifica lo stato dell'agente Amazon ECS sull'istanza Amazon Linux 2
Esegui il seguente comando 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 del comando di avvio sarà simile all'esempio seguente:
Active: active (running)
Per verificare se il servizio Docker è in esecuzione, esegui il seguente comando:
sudo systemctl status docker
Se il servizio Docker non è in esecuzione, esegui il seguente comando per avviare il servizio:
sudo systemctl start docker
L'output del comando di avvio sarà simile all'esempio seguente:
Active: active (running)
Controlla le configurazioni di avvio
Se l'istanza di avvio fa parte di un gruppo Auto Scaling, verifica che la configurazione di avvio del gruppo Auto Scaling sia corretta. Per ulteriori informazioni, consulta **5.**Crea una nuova fase di configurazione di avvio in Aggiornamento di un cluster di istanze di container Amazon ECS con una nuova Amazon Machine Image (AMI).
Controlla l'AMI della tua istanza di container
Se l'AMI dell'istanza di container è un'AMI copiata o personalizzata, assicurati che l'istanza soddisfi i seguenti requisiti:
- La distribuzione Linux esegue almeno la versione 3.10 del kernel Linux.
- Stai utilizzando la versione più recente dell'agente container Amazon ECS Linux.
- Il daemon Docker esegue almeno la versione 1.9.0 e tutte le dipendenze di runtime Docker. Per ulteriori informazioni, consulta Installa Docker Engine da binari sul sito Web Docker Docs. Per visualizzare la versione corrente di Docker, esegui il comando sudo docker version. Per ulteriori informazioni, consulta Installa Docker Engine sul sito Web Docker Docs.
Questi requisiti sono preconfigurati sulle AMI ottimizzate per Amazon ECS. È consigliabile utilizzare un'AMI ottimizzata per Amazon ECS a meno che l'applicazione non richieda una versione non disponibile in tale AMI. Per ulteriori informazioni, consulta Recupero di metadati di AMI Linux ottimizzate per Amazon ECS.
Verifica se i dati utente dell'istanza contengono le informazioni corrette sul cluster
Per verificare se i dati utente dell'istanza contengono le informazioni corrette sul cluster, esegui il comando seguente:
#!/bin/bash echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config
Nota: sostituisci a cluster name il nome del tuo cluster.
Verifica i file di log
Se il problema persiste, utilizza Amazon ECS logs collector per raccogliere i log. Quindi, esamina i log per individuare la causa. Puoi anche controllare i file di log sull'host del container per l'agente container Amazon ECS e Docker.
Per visualizzare i file di log per l'agente container Amazon ECS e Docker, esegui i seguenti comandi:
sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker
Nota: sostituisci ad AAAA-MM-GG la data per cui desideri controllare i file di log.
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.
Questo errore si verifica quando il tuo account AWS è bloccato e Amazon non lo riconosce. Per sbloccare il tuo account, invia un'email per richiedere ad AWS di sbloccare il tuo account ad aws-verification@amazon.com.
Errore: Nuova registrazione: ClientException: Container instance 12345678910abcdefghixzy is inactive.\n\tstatus code: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go
Questo errore si verifica quando l'agente container Amazon ECS non può utilizzare il cluster per registrare l'istanza di container EC2 perché l'istanza EC2 è inattiva. Questo errore è correlato all'applicazione che è in esecuzione sull'istanza. Per comprendere la causa dell'errore, controlla innanzitutto l'applicazione. Se l'errore persiste, controlla i log dell'agente container Amazon ECS.
Errore: Alcune istanze riescono a connettersi al cluster, ma con le stesse configurazioni, altre non sono in grado di connettersi
Questo errore si verifica quando una chiamata API specifica supera la quota di velocità e genera una ThrottlingException. Per ulteriori informazioni, consulta Limitazione delle richieste per l’API di Amazon ECS. Per risolvere questo errore, aumenta la quota tariffaria a livello di account. Utilizza AWS CloudTrail per verificare le chiamate API più comuni come ** ListTasks** e RegisterContainerInstance.
Errore: Dopo aver modificato il tipo di istanza, le nuove istanze non sono in grado di connettersi al cluster.
Questo errore si verifica quando l'agente container Amazon ECS è bloccato nello stato In sospeso e non è possibile modificare il tipo di istanza. Per modificare il tipo di istanza in Amazon ECS, completa i seguenti passaggi:
- Elimina l'istanza di container.
- Avvia una nuova istanza di container con il nuovo tipo di istanza.
Nota: è consigliabile utilizzare un'AMI di Amazon Linux 2 ottimizzata per Amazon ECS per avviare l’istanza per il tuo cluster.
Oppure crea una nuova configurazione di avvio e poi aggiorna la configurazione di avvio nel gruppo Auto Scaling .
Per ulteriori informazioni, consulta Come posso modificare il tipo della mia istanza di 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] Errore: Nuova registrazione: 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
Questi errori si verificano quando mancano le autorizzazioni IAM richieste. Per risolverli, crea un ruolo IAM dell’istanza di container. Quindi esegui il runbook AWSSupport-TroubleshootecsContainerInstance per identificare le autorizzazioni mancanti dal ruolo dell'istanza di container.
Informazioni correlate
Perché le mie istanze container Amazon ECS con le AMI di Amazon Linux 1 sono disconnesse?
- Argomenti
- End User ComputingContainers
- Lingua
- Italiano
