Como atualizar manualmente oAmazon ECSAgente do contêinerAmazon ECS-Optimized AMIs) - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como atualizar manualmente oAmazon ECSAgente do contêinerAmazon ECS-Optimized AMIs)

Para atualizar manualmente o agente de contêiner do Amazon ECS (para não Amazon ECS-optimized AMIs)

nota

As atualizações de agente não se aplicam a instâncias de contêiner do Windows. É recomendável executar novas instâncias de contêiner para atualizar a versão do agente nos clusters do Windows.

  1. Faça login em sua instância de contêiner via SSH.

  2. Verifique se o seu agente usa a variável de ambiente ECS_DATADIR para salvar seu estado.

    ubuntu:~$ docker inspect ecs-agent | grep ECS_DATADIR

    Resultado:

    "ECS_DATADIR=/data",
    Importante

    Se o comando anterior não retornar a variável de ambiente ECS_DATADIR, você deverá interromper todas as tarefas em execução nessa instância de contêiner antes de atualizar seu agente. Agentes mais novos com a variável de ambiente ECS_DATADIR salvam seu estado, e você pode atualizá-los enquanto as tarefas são executadas sem problemas.

  3. Pare o agente de contêiner do Amazon ECS.

    ubuntu:~$ docker stop ecs-agent
  4. Exclua o contêiner de agente.

    ubuntu:~$ docker rm ecs-agent
  5. Verifique se o diretório /etc/ecs e o arquivo de configuração do agente de contêiner do Amazon ECS existem em /etc/ecs/ecs.config.

    ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
  6. Edite o arquivo /etc/ecs/ecs.config e verifique se ele contém pelo menos as seguintes instruções de variável. Se você não quiser que sua instância de contêiner seja registrada no cluster padrão, especifique seu nome de cluster como o valor para ECS_CLUSTER.

    ECS_DATADIR=/data ECS_ENABLE_TASK_IAM_ROLE=true ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true ECS_LOGFILE=/log/ecs-agent.log ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] ECS_LOGLEVEL=info ECS_CLUSTER=default

    Para obter mais informações sobre essas e outras opções de tempo de execução de agente, consulte Amazon ECSConfiguração do agente de contê.

    nota

    Você também pode armazenar suas variáveis de ambiente do agente no Amazon S3 (que podem ser baixadas para suas instâncias de contêiner no momento da inicialização usando os dados de usuário do Amazon EC2). Isso é recomendado para informações confidenciais, como credenciais de autenticação para repositórios privados. Para obter mais informações, consulte Como armazenar a configuração da instância de contêiner no Amazon S3 e Autenticação de registro privado para.

  7. Extraia a imagem de agente de contêiner do Amazon ECS mais recente do Docker Hub.

    ubuntu:~$ docker pull amazon/amazon-ecs-agent:latest

    Resultado:

    Pulling repository amazon/amazon-ecs-agent a5a56a5e13dc: Download complete 511136ea3c5a: Download complete 9950b5d678a1: Download complete c48ddcf21b63: Download complete Status: Image is up to date for amazon/amazon-ecs-agent:latest
  8. Execute o agente de contêiner do Amazon ECS mais recente em sua instância de contêiner.

    nota

    Use políticas de reinicialização do Docker ou um gerenciador de processos (como upstart ou systemd) para tratar o agente de contêiner como um serviço ou um daemon e garantir que ele seja reiniciado após sair. Para obter mais informações, consulte Iniciar contêineres automaticamente e Reiniciar políticas na documentação do Docker. OAmazon ECS-optimized AMIO usa oecs-initRPM para essa finalidade, e você pode visualizar ocódigo-fonte para este RPMno GitHub

    O comando de execução de agente do exemplo a seguir é dividido em linhas separadas para mostrar cada opção. Para obter mais informações sobre essas e outras opções de tempo de execução de agente, consulte Amazon ECSConfiguração do agente de contê.

    Importante

    Os sistemas operacionais com o SELinux habilitado requerem a opção --privileged em seu comando docker run. Além disso, para instâncias de contêiner habilitadas para SELinux, recomendamos que você adicione a opção :Z às montagens de volume /log e /data. No entanto, as montagens de host para esses volumes devem existir para que você execute o comando; caso contrário, você receberá um erro no such file or directory. Execute a seguinte ação se você tiver dificuldade para executar o agente do Amazon ECS em uma instância de contêiner habilitada para o SELinux:

    • Crie os pontos de montagem de volume de host na instância de contêiner.

      ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
    • Adicione a opção --privileged ao comando docker run abaixo.

    • Anexe a opção :Z às montagens de volume de contêiner /log e /data (por exemplo, --volume=/var/log/ecs/:/log:Z) ao comando docker run abaixo.

    ubuntu:~$ sudo docker run --name ecs-agent \ --detach=true \ --restart=on-failure:10 \ --volume=/var/run:/var/run \ --volume=/var/log/ecs/:/log \ --volume=/var/lib/ecs/data:/data \ --volume=/etc/ecs:/etc/ecs \ --net=host \ --env-file=/etc/ecs/ecs.config \ amazon/amazon-ecs-agent:latest
    nota

    Se você receber uma mensagem Error response from daemon: Cannot start container, poderá excluir o contêiner com falha com o comando sudo docker rm ecs-agent e tentar executar o comando novamente.