Saltar al contenido

Preguntas frecuentes: Tareas de Amazon ECS que bloqueadas en un estado de ciclo de vida

8 minutos de lectura
0

Quiero saber por qué mi tarea de Amazon Elastic Container Service (Amazon ECS) está bloqueada en un estado de ciclo de vida determinado.

P: ¿Por qué mi tarea de Amazon ECS está bloqueada en estado PROVISIONING?

Cuando el programador de ECS no puede encontrar una instancia de ECS adecuada en el tipo de lanzamiento de Amazon Elastic Compute Cloud (Amazon EC2), una tarea que utilice el tipo de lanzamiento puede permanecer en el estado PROVISIONING. Esto ocurre incluso si hay espacio disponible en las instancias de contenedor existentes para que se ejecute la tarea.

Las tareas en el estado PROVISIONING forman una cola. Amazon ECS añade tareas a la cola que no puede implementar debido a restricciones de recursos relacionadas con la memoria, los puertos, las interfaces de red elásticas, la GPU y las CPU. A medida que haya recursos adicionales disponibles, estas tareas pasan al estado RUNNING.

Si administras el escalamiento para el proveedor de capacidad, las tareas no fallan inmediatamente cuando no pueden obtener suficientes recursos en las instancias existentes. En su lugar, las tareas pasan al estado PROVISIONING. Si no administras el escalamiento, las tareas que no pueden encontrar capacidad fallan de inmediato.

Cuando se producen problemas y las tareas del modo awsvpc no pueden aprovisionar interfaces de red elásticas, es posible que permanezcan en el estado PROVISIONING. Las tareas de AWS Fargate también pueden permanecer en el estado PROVISIONING cuando se producen problemas y no pueden aprovisionar interfaces de red elásticas. 

P: ¿Por qué mis tareas de Amazon ECS pasan del estado PROVISIONING al estado STOPPED cuando utilizan un proveedor de capacidad?

Una tarea de ECS puede quedarse bloqueada en el estado PROVISIONING por los siguientes motivos:

  • Errores de configuración
  • Restricciones de recursos
  • Desalineación con las especificaciones del proveedor de capacidad

Para solucionar estos errores, haz lo siguiente:

  • Comprueba si el grupo de escalamiento automático asociado al proveedor de capacidad alcanzó su número máximo de instancias. Si se alcanza el límite, ECS no puede aprovisionar más tareas.

  • Si utilizas el tipo de lanzamiento de Amazon EC2 con una plantilla de lanzamiento asociada al grupo de escalamiento automático, comprueba los datos de usuario. Asegúrate de tener el nombre de clúster correcto en el siguiente formato:

    #!/bin/bash
    echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
  • Asegúrate de que la política ecsInstanceRole con la relación de confianza correcta esté adjunta a las instancias asociadas a tu grupo de escalamiento automático.

  • Consulta los eventos del servicio de Amazon ECS. Si aparece el siguiente error, significa que la instancia se lanza pero no está configurada para el equilibrador de carga adjunto:
    El destino se encuentra en una zona de disponibilidad que no está habilitada para el equilibrador de carga

  • Asegúrate de que las subredes designadas para la tarea y las instancias de contenedor que administra el proveedor de capacidad estén en la misma zona de disponibilidad. Deben estar en la misma zona de disponibilidad para las tareas que inicies con una estrategia de proveedor de capacidad en el modo de red aws-vpc.

  • Para las tareas que utilizan el modo de red awsvpc en instancias de Linux de EC2, las interfaces de red elásticas no se proporcionan con direcciones IP públicas. Para acceder a Internet, debes iniciar las tareas en una subred privada que esté configurada para usar una puerta de enlace de NAT. Las tareas que lanzas en subredes públicas no tienen acceso a Internet y es posible que estén bloqueadas en el estado PROVISIONING.

Para obtener más información, consulta Visualización de los mensajes de eventos del servicio de Amazon ECS.

Q. ¿Por qué mi tarea de Amazon ECS está bloqueada en estado PENDING?

Cuando Amazon ECS espera a que el agente contenedor tome medidas adicionales, la tarea pasa al estado PENDING. La tarea permanece en este estado hasta que los recursos estén disponibles para la tarea.

Para obtener más información, consulta ¿Por qué mi tarea de Amazon ECS está bloqueada en estado PENDING?

P: ¿Por qué mi tarea de Amazon ECS está bloqueada en estado ACTIVATING?

Cuando el proceso principal de los contenedores pasa al estado RUNNING y Amazon ECS realiza pasos adicionales, la tarea pasa al estado ACTIVATING. Por ejemplo, debes crear recursos de detección de servicios para las tareas que utilizan la detección de servicios.

Para las tareas que forman parte de un servicio que usa varios grupos objetivo de Elastic Load Balancing, el registro del grupo de destino se produce durante este estado. Cuando la tarea está en estado ACTIVATING, Amazon ECS espera a que se completen las acciones correspondientes en los recursos de registro o detección de servicios del grupo de destino.

P: ¿Por qué mi tarea que usa la detección de servicios está bloqueada en el estado ACTIVATING?

Consulta el historial de eventos de AWS CloudTrail para ver las correspondientes llamadas a la API relacionadas con el servicio de detección de servicios, como las siguientes:

  • CreatePrivateDnsNamespace
  • CreateService
  • RegisterInstance
  • UpdateInstanceCustomHealthStatus

Las acciones de la API anteriores se definen en la política administrada de AWS AmazonECSServiceRolePolicy. Si se produce un error en la llamada a la API con un código de error, como ServiceNotFound o InternalFailure, asegúrate de seguir las consideraciones sobre la detección de servicios.

P: ¿Por qué una tarea que usa el grupo de destino de Elastic Load Balancing se queda bloqueada en el estado ACTIVATING?

Cuando Amazon ECS tarda mucho en determinar el estado del contenedor, es posible que la tarea se quede bloqueada en el estado ACTIVATING. Para calcular el tiempo total que lleva, multiplica los parámetros HealthCheckIntervalSeconds y HealthyThresholdCount. Para acelerar el proceso de comprobación del estado, reduce el número de comprobaciones y el intervalo entre las comprobaciones. Comprueba los eventos de CloudTrail para ver si se notifica algún error o fallo en las llamadas a la API RegisterTargets de Elastic Load Balancing correspondientes.

P: ¿Por qué mi tarea de Amazon ECS está bloqueada en el estado RUNNING cuando debería estar en el estado STOPPED?

Los problemas con la aplicación o una tarea mal configurada pueden hacer que la tarea permanezca en estado RUNNING. 

Para solucionar estos errores, haz lo siguiente:

  • Revisa los registros de la aplicación para ver si hay algún error o información sobre los motivos por los que el contenedor no sale. Una vez que el contenedor esencial sale, la tarea pasa al estado STOPPED.
  • Si la tarea forma parte de un servicio de Amazon ECS, comprueba que los parámetros de DeploymentConfiguration estén configurados correctamente.
  • Si la tarea forma parte de un servicio de Amazon ECS que usa un equilibrador de carga, comprueba que el parámetro de retraso de la anulación del registro esté configurado correctamente.
  • Comprueba si el valor ECS_CONTAINER_STOP_TIMEOUT está configurado correctamente.
  • Activa Amazon ECS exec para la tarea. A continuación, utiliza ECS exec para iniciar sesión en el contenedor y solucionar el problema en la aplicación.

Para obtener más información, consulta ¿Cómo soluciono el problema que provoca que las tareas de Amazon ECS tarden mucho en detenerse cuando la instancia del contenedor está configurada en VACIANDO?

P: ¿Por qué mi tarea de Amazon ECS está bloqueada en estado DEACTIVATING?

En el estado DEACTIVATING, Amazon ECS realiza pasos adicionales antes de detener la tarea. Por ejemplo, para las tareas que forman parte de un servicio que usa varios grupos objetivo de Elastic Load Balancing, la anulación del registro del grupo de destino se produce durante este estado.

Los siguientes motivos pueden hacer que la tarea permanezca en estado DEACTIVATING:

  • Se eliminan los recursos relacionados con los grupos de destino de Elastic Load Balancing antes de que la tarea pueda anular el registro de los grupos de destino.
  • El rol personalizado que se especifica como parámetro al crear el servicio de Amazon ECS no tiene los permisos de Elastic Load Balancing necesarios.
  • El rol personalizado se elimina cuando la tarea está activa.

Comprueba que existan el grupo de destino y el rol de AWS Identity and Access Management (IAM) que especificaste en la definición del servicio. Además, asegúrate de que la definición del servicio incluya la política de confianza y los permisos de Elastic Load Balancing necesarios.

Para optimizar el tiempo que tarda una tarea en pasar del estado DEACTIVATING, ajusta los parámetros deregistration_delay.timeout_seconds y deregistration_delay.timeout_seconds. Para obtener más información, consulta Drenaje de conexiones del equilibrador de carga.

P: ¿Por qué mi tarea de Amazon ECS está bloqueada en el estado DEPROVISIONING?

Amazon ECS realiza pasos adicionales después de que la tarea se detenga, pero antes de que la tarea pase al estado STOPPED. Por ejemplo, para las tareas que utilizan el modo de red awsvpc, Amazon ECS separa y elimina la interfaz de red elástica.

Los siguientes motivos pueden hacer que la tarea permanezca en el estado DEPROVISIONING:

  • Has eliminado los roles vinculados al servicio que están asociados al servicio antes de que finalice la tarea. El servicio predefine los roles vinculados al servicio e incluye todos los permisos que el servicio requiere para llamar a otros servicios de AWS en tu nombre. Ejecuta el siguiente comando para comprobar si hay un rol vinculado a un servicio asociado a tu servicio:

    $aws ecs describe-services --cluster CLUSTER-NAME --services SERVICE-NAME
  • Has eliminado el grupo de destino antes de que se anule el registro de las tareas en el grupo de destino.

OFICIAL DE AWSActualizada hace 2 años