Come posso risolvere gli errori di controllo dell'integrità dei container per le attività Amazon ECS?

Ultimo aggiornamento: 11/03/2022

La mia attività Amazon Elastic Container Service (Amazon ECS) non supera il controllo dell'integrità del container. Come posso risolvere questo problema?

Breve descrizione

Se ricevi il seguente errore, i container Amazon ECS nella tua attività utilizzano controlli dell'integrità che il servizio non può superare:

(service AWS-Service) (task ff3e71a4-d7e5-428b-9232-2345657889) failed container health checks

Nota: se riscontri problemi con il controllo dell'integrità di Elastic Load Balancing (ELB), consulta Come posso eseguire le mie attività Amazon ECS per superare il controllo dell'integrità di Application Load Balancer in Amazon ECS?

Risoluzione

Per risolvere i problemi relativi al controllo dell'integrità dei container di Amazon ECS, prendi in considerazione i seguenti suggerimenti:

  • Testa il container localmente per assicurarti che superi i controlli di integrità del container prima di effettuare il provisioning su Amazon ECS.
  • Verifica che il comando che stai passando al container sia corretto e che tu stia utilizzando la sintassi corretta per le tue attività Amazon ECS.
  • Assicurati che il tuo container abbia tempo sufficiente per creare un'istanza.
  • Se l'attività Amazon ECS è in esecuzione da un po' di tempo, controlla i registri delle applicazioni e i registri di Amazon CloudWatch.

Testa il container localmente per assicurarti che superi il controllo dell'integrità del container

Prima di effettuare il provisioning del container in Amazon ECS, assicurati che il container funzioni come previsto e che superi il controllo dell'integrità del container specificato. È possibile testare il container con la configurazione Dockerfile HEALTHCHECK sul sito Web Docker. Dopo che il container ha superato il controllo dell'integrità definito in Dockerfile, è possibile specificare la configurazione del controllo dell'integrità nella definizione dell'attività. La specifica della configurazione del controllo dell'integrità consente all'agente del container di Amazon ECS di monitorare e segnalare il controllo dell'integrità specificato.

Nota: Amazon ECS non monitora i controlli di integrità Docker incorporati in un'immagine del container e non specificati nella definizione del container. I parametri del controllo dell'integrità specificati in una definizione del container sostituiscono i controlli di integrità Docker presenti nell'immagine del container.

Verifica di utilizzare la sintassi corretta per le tue attività Amazon ECS

Assicurati di utilizzare i comandi e la sintassi corretti per le tue attività Amazon ECS.

Ad esempio, se utilizzi il pannello JSON della Console di gestione AWS, l'AWS Command Line Interface (AWS CLI) o le API, racchiudi l'elenco dei comandi tra parentesi, in questo modo:

["CMD-SHELL", "curl -f http://localhost/ || exit 1"]

Se utilizzi la Console di gestione AWS per modificare l'attività ECS, non è necessario includere le parentesi:

"CMD-SHELL", "curl -f http://localhost/ || exit 1"

Inoltre, assicurati di non separare il comando di controllo dell'integrità con virgolette doppie, ad esempio ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"]. Utilizza invece la seguente sintassi del comando:

["CMD-SHELL", "healthcheck.sh || exit 1"]

Assicurati che il tuo container abbia tempo sufficiente per creare un'istanza

Se il tuo container impiega un po' di tempo per avviarsi, allora potrebbe non superare il controllo dell'integrità del container. Prova a impostare startPeriod nel parametro di definizione avanzata del container. In questo modo il tuo container Amazon ECS ha tempo sufficiente per eseguire il bootstrap prima che eventuali controlli dell'integrità non riusciti vengano inclusi nel numero massimo di tentativi.

Controlla i registri delle applicazioni e i registri di Amazon CloudWatch se l'attività è in esecuzione da un po' di tempo

Se il tuo container Amazon ECS è in esecuzione da un po' di tempo e non supera il controllo dell'integrità del container, controlla i registri delle applicazioni. Se l'attività Amazon ECS utilizza il driver di registro awslogs, controlla i registri delle applicazioni in Amazon CloudWatch.

Nota: AWS Fargate è un servizio gestito. Pertanto, non è possibile accedere all'infrastruttura sottostante. Per risolvere i problemi, avvia le tue attività Amazon ECS in Amazon Elastic Compute Cloud (Amazon EC2). Quindi, connettiti alle tue istanze Amazon EC2 tramite SSH. Puoi anche provare a utilizzare Amazon ECS Exec per interagire direttamente con i tuoi container ECS.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?