Perché la mia attività Amazon ECS si è interrotta?

Ultimo aggiornamento: 29-03-2022

La mia attività Amazon Elastic Container Service (Amazon ECS) si è interrotta. Come posso risolvere i problemi di interruzione della mia attività Amazon ECS?

Breve descrizione

Le attività di Amazon ECS potrebbero interrompersi per una serie di motivi. I motivi più comuni sono:

  • Container essenziale chiuso
  • Controlli dell'integrità del bilanciamento del carico elastico non riusciti
  • Controlli dell’integrità dei container non riusciti
  • Istanza container non integra
  • Manutenzione dell'infrastruttura sottostante
  • Evento di dimensionamento del servizio attivato
  • ResourceInitializationError
  • CannotPullContainerError
  • Attività interrotta dall'utente

Comprendere la correlazione tra un'attività interrotta e il motivo dell'interruzione può ridurre gli sforzi necessari per la risoluzione dei problemi.

Risoluzione

È possibile visualizzare i dettagli di un'attività interrotta utilizzando l'API DescribeTasks. Tuttavia, i dettagli dell'attività interrotta sono visualizzabili nei risultati restituiti solo per un'ora. Se vuoi visualizzare più a lungo i dettagli delle attività interrotte, puoi utilizzare questo modello di AWS CloudFormation per archiviare Amazon CloudWatch Logs di un evento EventBridge che viene attivato quando un'attività si interrompe.

Motivi dell’interruzione

Il container essenziale nell'attività si è chiuso

Tutte le attività devono avere almeno un container essenziale. Se il parametro essenziale di un container è contrassegnato come vero e quel container dà errore o si arresta per qualsiasi motivo, tutti gli altri contenitori che fanno parte di tale attività verranno arrestati. Per capire perché un'attività è terminata in questo modo, identifica il codice di uscita utilizzando l'API DescribeTasks e vai alla sezione Codici di uscita comuni di questo articolo.

Controllo dell'integrità ELB non riuscita

Quando un'attività non si apre a causa di controlli di integrità ELB, verifica che il gruppo di sicurezza del container consenta il traffico proveniente da ELB. Tieni presenti le seguenti best practice:

  • Definisci un periodo di tolleranza minimo per il controllo dell'integrità. In questo modo il pianificatore del servizio riceve l'istruzione di ignorare i controlli dell'integrità ELB per un periodo di tempo predefinito dopo la creazione dell'istanza di un'attività.
  • Per impostazione predefinita, un target inizia a ricevere la sua quota completa di richieste non appena viene registrato in un gruppo target e supera un controllo d'integrità iniziale. L'utilizzo della modalità di avvio lento consente ai target di riscaldarsi prima che il bilanciamento del carico invii loro una quota completa di richieste.
  • Monitora le metriche della CPU e della memoria del servizio. Ad esempio, una CPU elevata può far sì che l'applicazione non risponda e provocare un errore 502.
  • Controlla i registri delle applicazioni per individuare eventuali errori nell'applicazione.
  • Verifica che la porta ping e il percorso di controllo dell’integrità siano configurati correttamente.
  • Copia come cURL il percorso di controllo dell'integrità da Amazon Elastic Compute Cloud (Amazon EC2) e conferma il codice di risposta.

Controlli dell’integrità dei container non riusciti

I controlli dell’integrità possono essere definiti nell'API TaskDefinition o nel Dockerfile.

È possibile visualizzare lo stato di integrità dei singoli container e dell'attività con l'operazione API DescribeTasks.

Assicurati che lo stato di uscita del comando di controllo dello stato indichi che il container è integro. Verifica che non siano presenti errori di applicazione nei registri del container utilizzando le impostazioni del driver di registro specificate nella definizione dell'attività. Di seguito sono riportati i valori possibili:

  • 0: success - Il container è sano e pronto all'uso.
  • 1: unhealthy - il container non funziona correttamente.
  • 2: reserved - Non utilizzare questo codice di uscita.

(istanza i-xx) (porta x) non è integra in (motivo per cui i controlli dell’integrità non sono riusciti)

Ciò indica che lo stato del container non è integro. Per risolvere questo problema:

  • Verifica che il gruppo di sicurezza collegato all'istanza del container consenta il traffico.
  • Conferma che c'è una risposta positiva dal back-end senza ritardo.
  • Imposta correttamente il valore del tempo di risposta.
  • Controlla i log degli accessi del tuo sistema di bilanciamento del carico per ulteriori informazioni.

Servizio ABCService: ECS sta eseguendo la manutenzione sull'infrastruttura sottostante che ospita l'attività

Ciò indica che l'attività è stata interrotta a causa di un problema di manutenzione dell'attività. Per ulteriori informazioni, consulta Manutenzione delle attività di AWS Fargate.

Un servizio assicura che la strategia di pianificazione specificata sia seguita e che le attività vengano riprogrammate quando sono interrotte o non riescono ad aprirsi. Se l'istanza container fa parte di un gruppo Auto Scaling. È necessario avviare una nuova istanza del container e posizionare le attività. Per ulteriori informazioni, consulta Verifica di un'attività di ridimensionamento per un gruppo Auto Scaling.

Evento di dimensionamento del servizio ECS attivato

Questo è un messaggio di servizio standard. Amazon ECS utilizza il servizio Application Auto Scaling per fornire questa funzionalità. Il servizio ECS ha la capacità di aumentare o diminuire automaticamente il numero di attività desiderato. Tieni presenti le seguenti best practice:

ResourceInitializationError: impossibile estrarre i segreti o l'autenticazione del registro: recupero delle risorse di esecuzione non riuscito

Come posso risolvere l'errore "impossibile estrarre i segreti o l'autenticazione del registro" in Amazon ECS?

    CannotPullContainerError

    Questo errore indica che il ruolo di esecuzione dell'attività utilizzato non dispone dell'autorizzazione per comunicare con Amazon ECS. Per risolvere questo problema:

    • Verifica che il ruolo di esecuzione dell'attività disponga delle autorizzazioni necessarie. Amazon ECS fornisce la policy gestita denominata AmazonECSTaskExecutionRolePolicy che contiene le autorizzazioni per la maggior parte dei casi d'uso.
    • Verifica che l'endpoint del servizio ECR sia accessibile a: ecr.region.amazonaws.com e dkr.ecr.region.amazonaws.com
    • Per le immagini private che richiedono l'autenticazione, assicurarsi che i parametri repositoryCredentials e credentialsParameter siano definiti con le informazioni corrette. Per ulteriori informazioni, vedi Autenticazione del registro privato per le attività.

    Attività interrotta dall'utente

    Questo indica che l'attività ha ricevuto uno StopTask. Puoi identificare chi ha avviato la chiamata visualizzando StopTask in CloudTrail per ottenere informazioni su userIdentity.

    Codici di uscita comuni

    • 0 - Punto di ingresso, successo o CMD sta completando la sua esecuzione e quindi il container viene arrestato.
    • 1 - Si riferisce all'errore dell'applicazione. Per ulteriori informazioni, consulta i registri delle applicazioni.
    • 137 - Si verifica quando il Task è stato terminato forzatamente (SIGKILL) per il container:
      Mancata risposta a un SIGTERM entro un periodo predefinito di 30 secondi dopo il quale viene inviato il valore SIGKILL e i contenitori vengono arrestati forzatamente. Il periodo predefinito di 30 secondi può essere configurato sull'agente container ECS con il parametro ECS_CONTAINER_STOP_TIMEOUT.
      Ciò potrebbe verificarsi anche in una situazione di esaurimento della memoria (Out-of-Memory, OOM). Controlla i parametri di CloudWatch per verificare se si è verificato un OOM.
    • 139 - Si verifica quando si presenta un errore di segmentazione. Probabilmente, l'applicazione ha tentato di accedere a una regione di memoria che non è disponibile, o c'è una variabile di ambiente non impostata o non valida.
    • 255 - Si verifica quando il comando PUNTO DI INGRESSO CMD nel container non si apre a causa di un errore. Controlla i log di CloudWatch per confermare.

    Messaggi di errore comuni

    Non sono state trovate istanze di container nel cluster

    Esamina la sezione delle istanze del container per il tuo cluster. Se necessario, puoi avviare un'istanza container.

    InvalidParameterException

    Assicurati che tutti i parametri definiti in TaskDefinition siano presenti e che l'ARN sia corretto. Verifica che il ruolo attività di esecuzione dell'attività disponga di autorizzazioni sufficienti.

    Hai raggiunto il limite del numero di attività che puoi eseguire contemporaneamente

    Per ulteriori informazioni sui limiti, consulta le ECS Service Quotas.

    Per tutte le altre richieste di aumento della quota, crea un caso nella console di AWS Support, quindi scegli Aumento limite di servizio.


    Questo articolo è stato utile?


    Hai bisogno di supporto tecnico o per la fatturazione?