Instâncias de contêineres do EC2 para Amazon ECS
O agente do Amazon ECS é um processo executado em cada instância de contêiner registrada em seu cluster. Ele facilita a comunicação entre as instâncias de contêiner e o Amazon ECS.
nota
Em instâncias de contêiner Linux, o contêiner do agente monta diretórios de nível superior, como /lib
, /lib64
e /proc
. Isso é necessário para recursos e funcionalidades do ECS, como volumes do Amazon EBS, modo de rede awsvpc
, Amazon ECS Service Connect e FireLens para Amazon ECS.
Cada agente de contêiner do Amazon ECS oferece suporte a um conjunto diferente de recursos e fornece correções de erros de versões anteriores. Quando possível, sempre recomendamos usar a versão mais recente do agente de contêiner do Amazon ECS. Para atualizar o agente de contêiner para a versão mais recente, consulte Atualizar o agente de contêiner do Amazon ECS.
O agente de contêiner do Amazon ECS contém a imagem amazon-ecs-pause
. O Amazon ECS usa essa imagem em tarefas que usam o modo de rede awsvpc
.
Para ver quais recursos e aprimoramentos estão incluídos em cada versão de agente, consulte https://github.com/aws/amazon-ecs-agent/releases
Importante
A versão mínima do Docker para métricas confiáveis é a versão Docker v20.10.13
e posteriores, que está incluída na AMI otimizada para o Amazon ECS 20220607
e posteriores.
As versões 1.20.0
e posteriores do agente do Amazon ECS descontinuaram o suporte para as versões do Docker anteriores à 18.01.0
.
Ciclo de vida
Quando o agente de contêiner do Amazon ECS registra uma instância do Amazon EC2 no cluster, a instância do Amazon EC2 relata seu status como ACTIVE
e o status de conexão do agente como TRUE
. Essa instância de contêiner pode aceitar solicitações de tarefas de processamento.
Se você interrompe (sem concluir) uma instância de contêiner, o status permanece como ACTIVE
, mas o status de conexão do agente muda para FALSE
em instantes. As tarefas que estavam sendo executadas na instância de contêiner são interrompidas. Se você reiniciar a instância de contêiner, o agente de contêiner se reconectará com o serviço do Amazon ECS e será possível, novamente, executar tarefas na instância.
Importante
Se você interromper e iniciar uma instância de contêiner ou se reinicializar esta instância, algumas versões mais antigas do agente de contêiner do Amazon ECS registrarão a instância novamente, sem cancelar o registro do ID da instância de contêiner original. Nesse caso, o Amazon ECS listará mais instâncias de contêiner no cluster do que você realmente possui. (Se você tiver IDs de instância de contêiner duplicados para o mesmo ID de instância do Amazon EC2, poderá, com segurança, cancelar o registro das duplicatas listadas como ACTIVE
com status da conexão do agente de FALSE
.) Esse problema foi corrigido na versão atual do agente de contêiner do Amazon ECS. Para obter mais informações sobre como atualizar a versão atual, consulte Atualizar o agente de contêiner do Amazon ECS.
Se você alterar o status de uma instância de contêiner para DRAINING
, as novas tarefas não serão posicionadas na instância de contêiner. Todas as tarefas de serviço em execução na instância de contêiner são removidas, se possível, de modo que você possa realizar atualizações de sistema. Para obter mais informações, consulte Drenagem de instâncias de contêiner do Amazon ECS.
Se você cancela o registro ou encerra uma instância de contêiner, seu status muda para INACTIVE
imediatamente, e ela não é mais referida não quando você lista suas instâncias de contêiner. No entanto, você ainda pode descrever a instância de contêiner por uma hora depois do encerramento. Depois desse período, a descrição de instância não estará mais disponível.
Importante
É possível drenar as instâncias manualmente ou criar um hook do ciclo de vida do grupo do Auto Scaling para definir o status da instância como DRAINING
. Para obter mais informações sobre hooks do ciclo de vida do Auto Scaling, consulte Hooks do ciclo de vida do Amazon EC2 Auto Scaling.
Compatibilidade com o Docker
O Amazon ECS é compatível com as duas últimas versões principais do Docker publicadas no Amazon Linux. Atualmente, isso inclui o Docker 20.10.x e o Docker 25.x.
A versão mínima exigida do Docker para o Amazon ECS pode ser encontrada no arquivo de especificação do agente do Amazon ECS
Ao usar a AMI otimizada para Amazon ECS, o Docker é pré-instalado e configurado para funcionar com o agente de contêiner do Amazon ECS. A AMI inclui uma versão do Docker que é testada e compatível com o Amazon ECS.
nota
Embora o Amazon ECS seja compatível com várias versões do Docker, recomendamos usar a versão do Docker que vem com a AMI otimizada para Amazon ECS para obter a melhor compatibilidade e suporte.
AMIs otimizadas para Amazon ECS
As variantes do Linux da AMI otimizada para Amazon ECS usam a AMI do Amazon Linux 2 como base. O nome da AMI de origem do Amazon Linux 2 para cada variante pode ser recuperado consultando a API da Systems Manager Parameter Store. Para obter mais informações, consulte Recuperação de metadados da AMI do Linux otimizada para o Amazon ECS. Quando você inicia nossas instâncias de contêiner a partir da AMI do Amazon Linux 2 mais recente otimizada para o Amazon ECS você recebe a versão atual do agente de contêiner. Para iniciar uma instância de contêiner com a AMI do Amazon Linux 2 mais recente otimizada pelo Amazon ECS, consulte Iniciar uma instância de contêiner do Linux do Amazon ECS.
Mais informações
As páginas a seguir fornecem informações adicionais sobre as alterações:
-
O código-fonte da aplicação
ecs-init
, os scripts e a configuração para empacotar o agente agora fazem parte do repositório do agente. Para versões mais antigas deecs-init
e pacotes, consulte Log de alterações do Amazon ecs-initno GitHub -
Notas de lançamento do Docker Engine
na documentação do Docker -
Documentação do driver NVIDIA
na documentação da NVIDIA
Parâmetros de configuração do log do agente de contêiner do Amazon ECS
O agente de contêiner do Amazon ECS armazena logs nas instâncias de contêiner.
Para o agente de contêiner versão 1.36.0 e posteriores, por padrão, os logs estão localizados em /var/log/ecs/ecs-agent.log
nas instâncias do Linux e em C:\ProgramData\Amazon\ECS\log\ecs-agent.log
nas instâncias do Windows.
Para o agente de contêiner versão 1.35.0 e posteriores, por padrão, os logs estão localizados em /var/log/ecs/ecs-agent.log.
nas instâncias do Linux e em timestamp
C:\ProgramData\Amazon\ECS\log\ecs-agent.log.
nas instâncias do Windows.timestamp
Por padrão, os logs do agente são rotacionados de hora em hora com o máximo de 24 logs armazenados.
Veja a seguir as variáveis de configuração do agente de contêiner que podem ser usadas para alterar o comportamento padrão de log do agente. Para obter informações detalhadas sobre todos os parâmetros de configuração disponíveis, consulte Configuração do agente de contêiner do Amazon ECS o README do agente do Amazon ECS
Para o agente de contêiner versão 1.36.0 e posteriores, veja a seguir um arquivo de log de exemplo quando o formato logfmt
é usado.
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
Veja a seguir um arquivo de log de exemplo quando o formato JSON é usado.
{"time": "2019-11-07T22:52:02Z", "level": "info", "msg": "Starting Amazon Elastic Container Service Agent", "module": "engine.go"}
Para agentes de contêiner versões 1.35.0 e anteriores, veja a seguir o formato do arquivo de 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"