Saltar al contenido

¿Cómo soluciono los errores de mis despliegues de Amazon ECS?

7 minutos de lectura
0

Quiero solucionar los errores del despliegue de Amazon Elastic Container Service (Amazon ECS) .

Descripción breve

Al intentar desplegar una nueva aplicación, es posible que Amazon ECS se encuentre con un punto muerto en el proceso. Las tareas más antiguas siguen desplegándose, pero las nuevas no pueden alcanzar un estado estable. Sus despliegues de Amazon ECS pueden devolver errores debido a los siguientes problemas:

  • Restricciones de recursos
  • Problemas con la imagen del contenedor
  • Problemas de red
  • Problemas con la definición de tareas
  • Registros de Amazon CloudWatch
  • Configuración de la comprobación de estado

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Restricciones de recursos

El despliegue del servicio Amazon ECS puede devolver un error si no hay suficiente capacidad de CPU o memoria disponible en el lugar donde despliegue la tarea. Se produce una restricción de recursos cuando el error RESOURCE:* aparece en sus eventos de servicio y las tareas de Amazon ECS no pasan al estado En ejecución.

Para solucionar este problema, tome las siguientes medidas:

  • Utilice las métricas de Amazon CloudWatch para supervisar la capacidad de recursos del clúster de Amazon ECS.
  • Configure Información de contenedores para obtener métricas detalladas sobre el uso de recursos según la tarea y el contenedor.
  • Asegúrese de que la configuración del grupo de escalamiento automático esté alineada con los requisitos de carga de trabajo para sus clústeres de tipo de lanzamiento de Amazon Elastic Compute Cloud (Amazon EC2). Supervise la capacidad de las instancias y configure las políticas de escalado en función del uso de la CPU, el uso de la memoria o las métricas personalizadas.
  • Revise la capacidad de su interfaz de red elástica para la tarea de Amazon ECS para su modo de red awsvpc. Use tipos de instancia con límites de interfaz de red elásticos más altos para realizar despliegues más densos. Cada tarea requiere su propia interfaz de red elástica. Utilice la planificación de CIDR y supervise su interfaz de red elástica para asegurarse de que haya suficientes direcciones IP disponibles cuando lance la tarea de Amazon ECS.

Para comprobar los recursos disponibles en las instancias de contenedor, ejecute el comando list-container-instances de la AWS CLI:

aws ecs list-container-instances --cluster your-cluster-name

Nota: Sustituya your-cluster-name por el nombre de su clúster.

A continuación, ejecute el comando describe-container-instances:

aws ecs describe-container-instances --cluster your-cluster-name --container-instances container-instance-id

Nota: Sustituya your-cluster-name por el nombre de su clúster y container-instance-id por su id. de instancia de contenedor.

Problemas con la imagen del contenedor

Cuando Amazon ECS no puede extraer imágenes de un repositorio de recursos, las tareas devuelven un error CannotPullContainerError en los eventos de servicio. Es posible que vea las tareas relacionadas en los registros de agentes de la instancia de contenedor.

Para resolver este error, confirme las siguientes configuraciones de definición de tareas para su tarea de Amazon ECS y la configuración de red del servicio:

  • Configure el URI de la imagen de contenedor.
    En Amazon Elastic Container Registry (Amazon ECR), confirme que la imagen coincide con el siguiente formato de nomenclatura de archivos:

    account-id.dkr.ecr.region.amazonaws.com/repository-name:tag

    Nota: Sustituya ** account-id ** por su id. de cuenta, region por su región de AWS y repository-name por el nombre de su repositorio.

    En el caso de Docker Hub, confirme que la imagen coincide con el siguiente formato de nomenclatura de archivos:

    repository/image:tag

    Nota: Sustituya repository por el nombre de su repositorio.

  • Compruebe que la función de IAM de la ejecución de tareas de Amazon ECS tenga adjunto el permiso AmazonECSTaskExecutionRolePolicy.

  • Confirme que no haya marcadores de posición de entorno incorrectos en la definición de la tarea y asegúrese de que no falte ninguno.

  • Cuando implemente el servicio Amazon ECS en una subred privada, asocie los puntos de enlace de VPC a la misma subred y grupo de seguridad.
    Para los puntos de enlace de la interfaz:
    Para Amazon ECS, utilice com.amazonaws.region.ecs.
    Para los registros de CloudWatch, utilice com.amazonaws.us-east-1.logs.
    Para Amazon ECR (Docker), utilice com.amazonaws.us-east-1.ecr.dkr.
    Para la API de Amazon ECR, utilice com.amazonaws.us-east-1.ecr.api.
    Para los puntos de enlace de puerta de enlace:
    Para Amazon S3, utilice com.amazonaws.us-east-1.s3.

Problemas de red

Los problemas de red se producen cuando los contenedores no se pueden comunicar con servicios externos, cuando se produce un error en la detección de servicios o si las tareas no pueden llegar a los puntos de enlace necesarios. Es posible que vea errores de tiempo de espera en los registros de la aplicación o errores de resolución de DNS, o que tenga problemas de conectividad entre los contenedores y otros servicios de AWS. Para solucionar este problema, tome las siguientes medidas.

Registros de CloudWatch

Para revisar los registros de CloudWatch a fin de solucionar un error en una tarea de Amazon ECS, siga estos pasos:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, seleccione Clústeres.
  3. Seleccione su clúster.
  4. Seleccione la pestaña Tareas.
  5. Seleccione el id. de tarea de la tarea que ha devuelto el error.
  6. Compruebe el estado de parada para determinar por qué falló el contenedor.
    Nota: Los registros de la tarea detenida solo están disponibles durante una hora después de que se haya detenido la tarea de ECS.
  7. Solucione el error de su contenedor.

Configuración de la comprobación de estado

Revise la siguiente configuración de comprobación de estado en el equilibrador de carga de aplicación o en el equilibrador de carga de red:

  • Confirme que la configuración de HealthCheckTimeoutSeconds sea lo suficientemente larga como para que su contenedor funcione correctamente. Si la tarea de ECS no pasa la comprobación de estado del equilibrador de carga en un breve período de tiempo, modifique este valor.
  • Asegúrese de que la configuración de HealthCheckGracePeriodSeconds sea lo suficientemente larga como para que se inicie el contenedor.
  • Compruebe que el contenedor de la aplicación responda con el código de estado 200 en la ruta HealthCheckPath configurada en el equilibrador de carga. Para obtener más información, consulte la configuración de HealthCheckPath en las comprobaciones de estado de los grupos objetivo del equilibrador de carga de aplicación.

Para encontrar las comprobaciones de estado con error, siga estos pasos:

  1. Abra la consola de Amazon EC2.
  2. En el panel de navegación, amplíe Equilibrio de carga y, a continuación, seleccione Grupos de destino.
  3. Seleccione su nombre de grupo objetivo.
  4. Revise los detalles de su grupo objetivo para ver si hay casos correctos o con error.

Para solucionar los problemas de las instancias con errores, consulte Solucionar problemas con los equilibradores de carga de aplicación.

Información relacionada

AWS::ECS::Service

OFICIAL DE AWSActualizada hace 7 meses