¿Por qué mi instancia de Amazon EC2 no puede unirse al clúster de Amazon ECS?

7 minutos de lectura
0

No puedo usar un clúster de Amazon Elastic Container Service (Amazon ECS) para registrar mi instancia de Amazon Elastic Compute Cloud (Amazon EC2).

Resolución

En primer lugar, utilice el runbook de AWS Systems Manager AWSSupport-TroubleshootECSContainerInstance para comprobar automáticamente si hay posibles problemas. El runbook AWSSupport-TroubleshootECSContainerInstance soluciona automáticamente los motivos más habituales por los que una instancia de EC2 no puede registrarse o unirse a un clúster.

Nota: Asegúrese de utilizar el runbook AWSSupport-TroubleshootECSContainerInstance en la misma región de AWS en la que se encuentran el clúster de Amazon ECS y la instancia de EC2.

Si el resultado del runbook no proporciona recomendaciones, utilice las siguientes acciones para solucionar este problema de forma manual.

Requisitos previos:

  • La instancia EC2 debe tener un rol de AWS Identity and Access Management (IAM) asociado con los permisos necesarios para comunicarse con la configuración de Amazon ECS. El rol de IAM de la instancia también debe tener los permisos ecs:RegisterContainerInstance para que Amazon ECS pueda registrar la instancia del contenedor con el clúster. Si no necesita personalizar su rol de IAM, utilice AmazonEC2ContainerServiceforEC2Role.
  • Verifique que la configuración de red de la instancia del contenedor sea correcta. Para obtener más información, consulte La configuración de red de la instancia de contenedor de Amazon ECS es incorrecta en ¿Cómo puedo resolver el error "CannotPullContainerError" en la tarea de tipo de lanzamiento de Amazon ECS EC2?

Verificación del estado del agente de Amazon ECS en la instancia de Amazon Linux 2

Para comprobar si el agente de contenedor de Amazon ECS se está ejecutando en la instancia, ejecute el siguiente comando:

sudo systemctl status ecs

Si el agente de contenedor de Amazon ECS no se ejecuta en la instancia, ejecute el siguiente comando para iniciar el agente:

sudo systemctl start ecs

La salida del comando start tiene un aspecto similar al ejemplo siguiente:

Active: active (running)

Para comprobar si el servicio Docker se está ejecutando, ejecute el siguiente comando:

sudo systemctl status docker

Si el servicio Docker no está en ejecución, ejecute el siguiente comando para iniciar el servicio:

sudo systemctl start docker

La salida del comando start tiene un aspecto similar al ejemplo siguiente:

Active: active (running)

Comprobación de las configuraciones de lanzamiento

Si la instancia de lanzamiento forma parte de un grupo de escalamiento automático, confirme que la configuración de lanzamiento del grupo de escalamiento automático sea correcta. Para obtener más información, consulte la entrada 5. paso Creación de una nueva configuración de lanzamiento en Refreshing an Amazon ECS container instance cluster with a new Amazon Machine Image (AMI).

Comprobación de la AMI de la instancia de contenedor

Si la AMI de la instancia de contenedor es está copiada o se ha personalizado, asegúrese de que la instancia cumpla con los siguientes requisitos:

Los requisitos están preconfigurados en las AMI optimizadas para Amazon ECS. Se recomienda usar una AMI optimizada para Amazon ECS, a menos que la aplicación requiera una versión que aún no esté disponible en esa AMI. Para obtener más información, consulte Recuperación de metadatos de las AMI de Linux optimizadas para Amazon ECS.

Cómo comprobar si los datos de usuario de una instancia contienen la información de clúster correcta

Para comprobar si los datos de usuario de una instancia contienen la información de clúster correcta, ejecute el siguiente comando:

#!/bin/bash  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config

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

Comprobación de los archivos de registro

Si el problema persiste, utilice el recopilador de registros de Amazon ECS para recopilar los registros. A continuación, revise los registros para encontrar la causa. También puede comprobar los archivos de registro en el host de contenedor del agente de contenedor de Amazon ECS y Docker.

Para ver los archivos de registro del agente de contenedor de Amazon ECS y Docker, ejecute los siguientes comandos:

sudo cat /var/log/ecs/ecs-agent.log.YYYY-MM-DD-**sudo cat /var/log/docker

**Nota:**Sustituya YYYY-MM-DD por la fecha en la que desea comprobar los archivos de registro.

Solución de errores habituales

Error: lanzamiento de una nueva instancia de EC2. Motivo del estado: esta cuenta está bloqueada y no se reconoce como una cuenta válida. Si tiene alguna pregunta, póngase en contacto con aws-verification@amazon.com. No se pudo iniciar la instancia de EC2.

Este error se produce cuando su cuenta de AWS está bloqueada y Amazon no la reconoce. Para desbloquear la cuenta, envíe un correo electrónico a aws-verification@amazon.com para solicitar que AWS desbloquee su cuenta.

Error: repetición del registro: ClientException: La instancia de contenedor 12345678910abcdefghixzy está inactiva. \n\tcódigo de estado: 400, ID de la solicitud: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Este error se produce cuando el agente de contenedor de Amazon ECS no puede utilizar el clúster para registrar la instancia de contenedor de EC2 porque está inactiva en ese momento. Este error está relacionado con la aplicación que se ejecuta en la instancia. Para entender la causa del error, consulte primero la aplicación. Si el error persiste, compruebe los registros del agente de contenedor de Amazon ECS.

Error: Algunas instancias pueden unirse al clúster, pero otras no pueden hacerlo a pesar de tener las mismas configuraciones.

Este error se produce cuando una llamada a la API específica supera la cuota de tasa y genera un elemento ThrottlingException. Para obtener más información, consulte Limitación de solicitudes para la API de Amazon ECS. Para solucionar este error, aumente la cuota de tasa en el nivel de la cuenta. Utilice AWS CloudTrail para comprobar si hay llamadas a API comunes, como ListTasks y RegisterContainerInstance.

Error: Después de cambiar el tipo de instancia, las instancias nuevas no pueden unirse al clúster.

Este error se produce cuando el agente de contenedor de Amazon ECS se detiene en el estado Pendiente y no puede cambiar el tipo de instancia. Para cambiar el tipo de instancia en Amazon ECS, siga estos pasos:

  1. Elimine la instancia de contenedor.
  2. Lance una nueva instancia de contenedor que tenga el nuevo tipo de instancia.
    Nota: Se recomienda utilizar una AMI de Amazon Linux 2 optimizada para Amazon ECS para lanzar la instancia de su clúster.

O bien, cree una nueva configuración de lanzamiento y, a continuación, actualice la configuración de lanzamiento en el grupo de escalamiento automático.

Para obtener más información, consulte How do I change my container instance type in Amazon ECS?

Error: No se ha podido registrar como una instancia de contenedor en ECS: excepción de acceso denegado: el usuario arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def is no está autorizado a realizar ecs:RegisterContainerInstance en el recurso arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster. Código de estado: 400, ID de la solicitud: 0a123456-7899-10101-a987-6543210deff

-o-

Error: 2019-06-29T16:10:09Z [ERROR] Error al volver a registrarse: excepción de acceso denegado: el usuario: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef no está autorizado a realizar: ecs:registerContainerInstance en el recurso arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster. Código de estado: 400, ID de la solicitud: 0a123456-7899-10101-a987-123456pqrs

Estos errores se producen cuando no tiene los permisos necesarios de IAM. Para resolver estos errores, cree un rol de IAM de una instancia de contenedor. A continuación, ejecute el runbook AWSSupport-TroubleshootECSContainerInstance para determinar qué permisos faltan en el rol de la instancia de contenedor.

Información relacionada

¿Por qué mis instancias de contenedor de Amazon ECS están desconectadas de las AMI de Amazon Linux 1?

Solución de problemas de Amazon ECS