Actualización manual del agente de contenedor de Amazon ECS (para AMI no optimizadas para Amazon ECS) - Amazon Elastic Container Service

Actualización manual del agente de contenedor de Amazon ECS (para AMI no optimizadas para Amazon ECS)

Ocasionalmente, es posible que tenga que actualizar el agente de contenedor de Amazon ECS para obtener correcciones de errores y nuevas características. La actualización del agente de contenedor de Amazon ECS no interrumpe las tareas ni los servicios en ejecución en la instancia de contenedor.

nota

Las actualizaciones del agente no se aplican a instancias de contenedor de Windows. Le recomendamos que lance nuevas instancias de contenedor para actualizar la versión del agente en sus clústeres Windows.

  1. Inicie sesión en su instancia de contenedor mediante SSH.

  2. Compruebe si su agente utiliza la variable de entorno ECS_DATADIR para guardar su estado.

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

    Salida:

    "ECS_DATADIR=/data",
    importante

    Si el comando anterior no devuelve la variable de entorno ECS_DATADIR, debe detener las tareas en ejecución en esta instancia de contenedor antes de actualizar el agente. Los agentes más recientes con la variable de entorno ECS_DATADIR guardan su estado y usted puede actualizarlos mientras que las tareas se ejecuten sin problemas.

  3. Detenga el agente de contenedor de Amazon ECS.

    ubuntu:~$ docker stop ecs-agent
  4. Elimine el contenedor de agente.

    ubuntu:~$ docker rm ecs-agent
  5. Asegúrese de que el directorio /etc/ecs y el archivo de configuración del agente de contenedor de Amazon ECS existan en /etc/ecs/ecs.config.

    ubuntu:~$ sudo mkdir -p /etc/ecs && sudo touch /etc/ecs/ecs.config
  6. Edite el archivo /etc/ecs/ecs.config y asegúrese de que contenga al menos las siguientes declaraciones de variables. Si no desea que su instancias de contenedor se registre en el clúster predeterminado, especifique el nombre del clúster como el 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 obtener más información acerca de estas y otras opciones de tiempo de ejecución de agente, consulte Configuración del agente de contenedor de Amazon ECS.

    nota

    Si lo desea, puede almacenar las variables de entorno del agente en Amazon S3 (se pueden descargar en las instancias de contenedor en el momento del lanzamiento utilizando datos de usuario de Amazon EC2). Se recomienda su uso para información confidencial como las credenciales de autenticación para repositorios privados. Para obtener más información, consulte Almacenamiento de la configuración de instancia de contenedor de Amazon ECS en Amazon S3 y Uso de imágenes de contenedor que no sean de AWS en Amazon ECS.

  7. Extraiga la imagen más reciente del agente de contenedor de Amazon ECS de Amazon Elastic Container Registry Public.

    ubuntu:~$ docker pull public.ecr.aws/ecs/amazon-ecs-agent:latest

    Salida:

    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. Ejecute el agente de contenedor de Amazon ECS más reciente en la instancia de contenedor.

    nota

    Utilice las políticas de reinicio de Docker o un administrador de procesos (como upstart o systemd) para tratar al agente de contenedor como un servicio o un daemon y asegurarse de que se reinicie después de finalizar su ejecución. Para eso, la AMI optimizada para Amazon ECS utiliza el RPM ecs-init, y puede consultar el código fuente para este RPM en GitHub.

    En el siguiente ejemplo, el comando de ejecución del agente está dividido en líneas separadas para mostrar cada opción. Para obtener más información acerca de estas y otras opciones de tiempo de ejecución de agente, consulte Configuración del agente de contenedor de Amazon ECS.

    importante

    Los sistemas operativos con SELinux habilitado requieren la opción --privileged en el comando docker run. Además, para las instancias de contenedor con SELinux habilitado, recomendamos añadir la opción :Z a los montajes de volúmenes /log y /data. No obstante, los montajes de hosts para estos volúmenes deben existir antes de que ejecute el comando; de lo contrario, recibirá un error no such file or directory. Realice la siguiente acción si tiene dificultades para ejecutar el agente de Amazon ECS en una instancia de contenedor con SELinux habilitado:

    • Cree los puntos de montaje de volumen del host en su instancia de contenedor.

      ubuntu:~$ sudo mkdir -p /var/log/ecs /var/lib/ecs/data
    • Añada la opción --privileged al siguiente comando docker run.

    • Añada la opción :Z a los montajes del volumen de contenedor /log y /data (por ejemplo, --volume=/var/log/ecs/:/log:Z) para el siguiente comando docker run.

    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 \ --volume=/etc/ecs:/etc/ecs/pki \ --net=host \ --env-file=/etc/ecs/ecs.config \ amazon/amazon-ecs-agent:latest
    nota

    Si recibe el mensaje Error response from daemon: Cannot start container, puede eliminar el contenedor con errores con el comando sudo docker rm ecs-agent e intentar volver a ejecutar el agente.