Agente del container Linux di Amazon ECS - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Agente del container Linux di Amazon ECS

L'agente Amazon ECS è un processo che viene eseguito su ogni istanza di container registrata nel cluster. Facilita la comunicazione tra le istanze del contenitore e Amazon ECS.

Ogni versione dell'agente del container di Amazon ECS supporta una serie di funzioni differenti e assicura le correzioni dei bug delle versioni precedenti. Quando possibile, consigliamo sempre di utilizzare la versione più recente dell'agente del container di Amazon ECS. Per passare all'ultima versione dell'agente del container, consulta Aggiornamento dell'agente del container Amazon ECS.

Per vedere le caratteristiche e i miglioramenti inclusi in ogni versione dell'agente, consulta https://github.com/aws/amazon-ecs-agent/releases.

Importante

La versione Docker minima per parametri affidabili è v20.10.13 e successive, inclusa nell'AMI 20220607 ottimizzata per Amazon ECS e versioni successive.

Le versioni dell'agente Amazon ECS 1.20.0 e successive non supportano più le versioni di Docker precedenti alla 1.9.0.

Ciclo di vita

Quando l'agente del container di Amazon ECS registra un'istanza Amazon EC2 nel cluster, l'istanza Amazon EC2 segnala il suo stato come ACTIVE e lo stato di connessione dell'agente come TRUE. Questa istanza di container può accettare richieste di esecuzione di attività.

Se interrompi un'istanza di container (senza terminarla), lo stato rimane ACTIVE, ma lo stato di connessione dell'agente passa a FALSE entro pochi minuti. Tutte le attività in esecuzione nell'istanza di container vengono interrotte. Se avvii di nuovo l'istanza di container, l'agente del container si riconnetterà al servizio Amazon ECS e potrai nuovamente eseguire attività nell'istanza.

Importante

Se interrompi e avvii un'istanza di container oppure riavvii l'istanza, alcune versioni precedenti dell'agente del container di Amazon ECS registreranno di nuovo l'istanza senza annullare la registrazione dell'ID dell'istanza di container originale. In questo caso, Amazon ECS elenca più istanze di container nel cluster rispetto a quelle effettivamente disponibili. (Se disponi di ID dell'istanza di container duplicati per lo stesso ID dell'istanza Amazon EC2, puoi annullare in modo sicuro la registrazione dei duplicati che sono elencati come ACTIVE con uno stato di connessione dell'agente FALSE). Questo problema è stato risolto nella versione corrente dell'agente del container di Amazon ECS. Per ulteriori informazioni sull'aggiornamento alla versione corrente, consulta Aggiornamento dell'agente del container Amazon ECS.

Se modifichi lo stato di un'istanza di container in DRAINING, le nuove attività non vengono posizionate nell'istanza di container. Qualsiasi attività di servizio in esecuzione nell'istanza di container viene rimossa, se possibile, in modo che possano essere eseguiti gli aggiornamenti di sistema. Per ulteriori informazioni, consulta Drenaggio delle istanze di container Amazon ECS.

Se annulli la registrazione di un'istanza di container o la termini, lo stato dell'istanza di container passa immediatamente a INACTIVE e l'istanza di container non viene più segnalata quando elenchi le istanze di container. Tuttavia, puoi ancora descrivere l'istanza di container per un'ora in seguito alla terminazione. Dopo un'ora, la descrizione dell'istanza non è più disponibile.

Importante

Puoi svuotare manualmente le istanze o creare un hook del ciclo di vita del gruppo Auto Scaling per impostare lo stato dell'istanza su DRAINING. Per ulteriori informazioni, consulta Hook del ciclo di vita di Amazon EC2 Auto Scaling.

AMI ottimizzate per Amazon ECS

Le varianti Linux dell'AMI ottimizzata per Amazon ECS utilizzano l'AMI Amazon Linux 2 come base. Il nome dell'AMI di origine di Amazon Linux 2 per ogni variante può essere recuperato interrogando l'API Archivio dei parametri Systems Manager. Per ulteriori informazioni, consulta Recupero di metadati AMI Linux ottimizzati per Amazon ECS. Quando avvii le istanze di container dall'AMI Amazon Linux 2 ottimizzata per Amazon ECS più recente, ricevi la versione dell'agente del container corrente. Per avviare un'istanza di container con l'AMI Amazon Linux 2 ottimizzata per Amazon ECS, consulta Avvio di un'istanza di container Linux di Amazon ECS.

Informazioni aggiuntive

Nelle pagine seguenti vengono fornite ulteriori informazioni sulle modifiche:

Parametri di configurazione del registro dell'agente container Amazon ECS

L'agente del container di Amazon ECS archivia i log nelle istanze del container.

Per l'agente del container versione 1.36.0 e successive, di default i log si trovano in /var/log/ecs/ecs-agent.log sulle istanze Linux e in C:\ProgramData\Amazon\ECS\log\ecs-agent.log sulle istanze Windows.

Per l'agente del container versione 1.35.0 e precedenti, di default i log si trovano in /var/log/ecs/ecs-agent.log.timestamp sulle istanze Linux e C:\ProgramData\Amazon\ECS\log\ecs-agent.log.timestamp sulle istanze Windows.

Di default, i log dell'agente vengono ruotati ogni ora per un massimo di 24 log archiviati.

Di seguito sono riportate le variabili di configurazione dell'agente del container che possono essere utilizzate per modificare il comportamento di registrazione dell'agente predefinito. Per ulteriori informazioni, consulta Configurazione dell'agente del container Amazon ECS.

ECS_LOGFILE

Valori di esempio: /ecs-agent.log

Valore predefinito in Linux: Null

Valore predefinito in Windows: Null

Determina la posizione in cui devono essere scritti i log degli agenti. Se stai eseguendo l'agente tramiteecs-init, che è il metodo predefinito quando si utilizza l'AMI ottimizzata per Amazon ECS, il percorso all'interno del contenitore è /log e lo ecs-init monta sull'host. /var/log/ecs/

ECS_LOGLEVEL

Valori id esempio: crit, error, warn, info, debug

Valore predefinito in Linux: info

Valore predefinito in Windows: info

Il livello di dettaglio da registrare.

ECS_LOGLEVEL_ON_INSTANCE

Valori di esempio: none, crit, error, warn, info, debug

Valore di default su Linux: none, se ECS_LOG_DRIVER viene impostato esplicitamente su un valore non vuoto; altrimenti lo stesso valore di ECS_LOGLEVEL

Valore di default su Windows: none, se ECS_LOG_DRIVER viene impostato esplicitamente su un valore non vuoto; altrimenti lo stesso valore di ECS_LOGLEVEL

Può essere usato per sovrascrivere ECS_LOGLEVEL e impostare un livello di dettaglio da registrare nel file di log nell'istanza, separato dal livello registrato nel driver di registrazione. Se un driver di registrazione è impostato in modo esplicito, i log in istanza sono disattivati per impostazione predefinita. Possono essere riattivati con questa variabile.

ECS_LOG_DRIVER

Valori di esempio: awslogs, fluentd, gelf, json-file, journald, logentries syslog, splunk

Valore predefinito in Linux: json-file

Valore predefinito in Windows: non applicabile

Determina il driver di registrazione utilizzato dal contenitore dell'agente.

ECS_LOG_ROLLOVER_TYPE

Valori di esempio: size e hourly

Valore predefinito in Linux: hourly

Valore predefinito in Windows: hourly

Determina se il file di registro dell'agente contenitore viene ruotato ogni ora o in base alle dimensioni. Di default, il file di log dell'agente viene ruotato ogni ora.

ECS_LOG_OUTPUT_FORMAT

Valori di esempio: logfmt e json

Valore predefinito in Linux: logfmt

Valore predefinito in Windows: logfmt

Determina il formato di output del log. Quando viene utilizzato il json formato, ogni riga del log è una mappa JSON strutturata.

ECS_LOG_MAX_FILE_SIZE_MB

Valori di esempio: 10

Valore predefinito in Linux: 10

Valore predefinito in Windows: 10

Quando la ECS_LOG_ROLLOVER_TYPE variabile è impostata susize, questa variabile determina la dimensione massima (in MB) del file di registro prima che venga ruotato. Se il tipo di rollover è impostato su hourly, questa variabile viene ignorata.

ECS_LOG_MAX_ROLL_COUNT

Valori di esempio: 24

Valore predefinito in Linux: 24

Valore predefinito in Windows: 24

Determina il numero di file di log ruotati da mantenere. I file di log più vecchi vengono eliminati una volta raggiunto questo limite.

Per l'agente del container versione 1.36.0 e successive, il seguente è un file di log di esempio quando viene utilizzato il formato logfmt.

level=info time=2019-12-12T23:43:29Z msg="Loading configuration" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-agent:latest" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Image excluded from cleanup: amazon/amazon-ecs-pause:0.1.0" module=parse.go level=info time=2019-12-12T23:43:29Z msg="Amazon ECS agent Version: 1.36.0, Commit: ca640387" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Creating root ecs cgroup: /ecs" module=init_linux.go level=info time=2019-12-12T23:43:29Z msg="Creating cgroup /ecs" module=cgroup_controller_linux.go level=info time=2019-12-12T23:43:29Z msg="Loading state!" module=statemanager.go level=info time=2019-12-12T23:43:29Z msg="Event stream ContainerChange start listening..." module=eventstream.go level=info time=2019-12-12T23:43:29Z msg="Restored cluster 'auto-robc'" module=agent.go level=info time=2019-12-12T23:43:29Z msg="Restored from checkpoint file. I am running as 'arn:aws:ecs:us-west-2:0123456789:container-instance/auto-robc/3330a8a91d15464ea30662d5840164cd' in cluster 'auto-robc'" module=agent.go

Di seguito è riportato un file di log di esempio quando viene utilizzato il formato JSON.

{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}

Per le versioni dell'agente del container 1.35.0 e precedenti, il seguente è il formato del file di log.

2016-08-15T15:54:41Z [INFO] Starting Agent: Amazon ECS Agent - v1.12.0 (895f3c1) 2016-08-15T15:54:41Z [INFO] Loading configuration 2016-08-15T15:54:41Z [WARN] Invalid value for task cleanup duration, will be overridden to 3h0m0s, parsed value 0, minimum threshold 1m0s 2016-08-15T15:54:41Z [INFO] Checkpointing is enabled. Attempting to load state 2016-08-15T15:54:41Z [INFO] Loading state! module="statemanager" 2016-08-15T15:54:41Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20 1.21 1.22] 2016-08-15T15:54:41Z [INFO] Registering Instance with ECS 2016-08-15T15:54:41Z [INFO] Registered! module="api client"