¿Por qué la instancia de Amazon ECS o Amazon EC2 no se puede unir al clúster?

Actualización más reciente: 05-05-2022

No se puede registrar la instancia de Amazon Elastic Compute Cloud (Amazon EC2) en un clúster de Amazon Elastic Container Service (Amazon ECS).

Descripción corta

La instancia de Amazon EC2 no se puede registrar en un clúster de ECS o unirse a este debido a uno o varios de los siguientes motivos:

  • El punto de conexión de ECS no puede obtener acceso al nombre de alojamiento DNS de la instancia de forma pública.
  • Las configuraciones de subredes públicas son incorrectas.
  • Las configuraciones de subred privada son incorrectas.
  • Los puntos de conexión de VPC están configurados incorrectamente.
  • Sus grupos de seguridad no permiten el tráfico de red.
  • La instancia de EC2 no cuenta con los permisos necesarios de AWS Identity and Access Management (IAM). O bien, se deniega la llamada a la API ecs:RegisterContainerInstance.
  • Los datos del usuario de la instancia para el contenedor ECS no están configurados correctamente.
  • El agente de ECS está detenido o no se ejecuta en la instancia.
  • La configuración de lanzamiento del grupo de Auto Scaling no es correcta (si la instancia forma parte de un grupo de Auto Scaling).
  • La imagen de máquina de Amazon (AMI) utilizada para la instancia no cumple con los requisitos previos.

Resolución

Importante: Utilice el runbook AWSSupport-TroubleshootECSContainerInstance de AWS Systems Manager para solucionar los problemas comunes enumerados en la sección anterior. Si la salida del runbook no ofrece recomendaciones, utilice los enfoques de resolución de problemas manuales que se explican en las secciones siguientes.

Utilice el runbook de automatización de Systems Manager

Con el runbook AWSSupport-TroubleshootECSContainerInstance, puede solucionar el problema de la instancia EC2 que no se puede registrar en el clúster ECS. Esta automatización revisa lo siguiente:

  • ¿Los datos de usuario correspondientes a la instancia contienen la información correcta del clúster?
  • ¿El perfil de la instancia contiene los permisos necesarios?
  • ¿Existen problemas de configuración de la red?

Importante: Utilice el runbook AWSSupport-TroubleshootECSContainerInstance en la misma región de AWS en la que se encuentran el clúster de ECS y la instancia de EC2.

  1. Abra la consola de AWS Systems Manager.
  2. En el panel de navegación, en Administración de cambios, elija Automatización.
  3. Elija Ejecutar automatización.
  4. Elija la pestaña Propiedad de Amazon.
  5. En Documento de automatización, busque TroubleshootECSContainerInstance.
  6. Seleccione la tarjeta AWS Support-TroubleshootECSContainerInstance.
    Nota: Asegúrese de seleccionar el botón de opción y no el nombre de la automatización con hipervínculo.
  7. Elija Siguiente.
  8. Para el documento de automatización de la ejecución, asegúrese de que la opción Ejecución simple está seleccionada.
  9. En la sección Parámetros de entrada, para AutomationAssumeRole, ingrese el nombre de recurso de Amazon (ARN) del rol que permite que Systems Manager Automation realice acciones.
    Nota: Si no se especifica un rol de IAM, Systems Manager Automation utiliza los permisos del usuario o rol de IAM que ejecuta el runbook. Para obtener más información sobre la creación del rol de asunción para Systems Manager Automation, consulte la Tarea 1: Crear un rol de servicio para Automation.
    Importante: Asegúrese de que AutomationAssumeRole o el usuario o rol de IAM tengan permisos para las siguientes acciones: ec2:DescribeIamInstanceProfileAssociations, ec2:DescribeInstanceAttribute, ec2:DescribeInstances, ec2:DescribeNetworkAcls, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcs, ec2:DescribeVpcEndpoints, iam:GetInstanceProfile, iam:GetRole, iam:SimulateCustomPolicy y iam:SimulatePrincipalPolicy.
  10. Para ClusterName, ingrese el nombre del clúster en el que la instancia EC2 no se pudo registrar.
  11. Para InstanceId, ingrese el ID de instancia de EC2 que no se pudo registrar.
  12. Elija Ejecutar.

La salida del runbook proporciona los pasos de solución de problemas y las recomendaciones para resolver el problema que causó que la instancia de EC2 no se pudiera registrar en el clúster.

Verifique el estado del agente de Amazon ECS en la instancia de Amazon Linux 2

Compruebe si el agente de ECS de la instancia se está ejecutando mediante el uso del siguiente comando:

sudo status ecs

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

sudo start ecs
La salida del comando debe ser similar a la siguiente:
ecs start/running, process 23403

Comprobar configuraciones de lanzamiento

Si la instancia se lanza como parte de un grupo de Auto Scaling, asegúrese de que la configuración de lanzamiento del grupo de Auto Scaling sea correcta. Para obtener más información, consulte el Paso 5 de Actualización de un clúster de instancias de contenedor de Amazon ECS con una nueva AMI.

Comprobar la AMI de la instancia

Si la AMI utilizada para la instancia de EC2 es una AMI copiada o una AMI personalizada, asegúrese de que la instancia tenga los siguientes componentes:

Las AMI optimizadas para Amazon ECS están preconfiguradas con estos requisitos. Por lo tanto, se recomienda usarlos para las instancias de contenedores, a menos que la aplicación requiera un sistema operativo específico o una versión de Docker que aún no esté disponible en esa AMI.

Comprobar los registros

Si el problema persiste, recopile los registros con el recopilador de registros de ECS y, a continuación, revise los registros para encontrar la causa. También puede comprobar los archivos de registro en el alojamiento del contenedor para el agente de contenedores y Docker.

Para ver los archivos de registro del agente de contenedores y Docker, ejecute los siguientes comandos:

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

Errores comunes

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 preguntas, póngase en contacto con aws-verification@amazon.com. No se pudo iniciar la instancia de EC2.

Póngase en contacto con aws-verification@amazon.com cómo se indica en el motivo del estado y mencione que debe desbloquear la cuenta.

Error: volver a registrar: ClientException: La instancia de contenedor 12345678910xxxxxxxxxxxx no está activa.\n\tcódigo de estado: 400, id de solicitud: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

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

Error: Few instances are able to join the cluster but with the same configurations, other instance are not able to join the cluster (Error: algunas instancias pueden unirse al clúster, pero con las mismas configuraciones, otras instancias no pueden hacerlo).

Este error puede deberse a una ThrottlingException (excepción de limitación) que se produce cuando se supera el límite de velocidad para una llamada a la API específica. Para resolver este error, aumente el límite de tasa a nivel de cuenta. Asegúrese de comprobar las API, como RegisterTargets 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 ECS se bloquea en estado pendiente y no es posible cambiar el tipo de instancia. A diferencia de otras instancias de EC2, no puede detener la instancia de ECS, cambiar el tipo de instancia y, a continuación, volver a iniciarla. Para cambiar el tipo de instancia en ECS, debe terminar la instancia de contenedor y, a continuación, lanzar una nueva instancia de contenedor con el tamaño de instancia deseado mediante la AMI de Amazon Linux 2 optimizada para Amazon ECS más reciente para el clúster que desee. También puede crear una nueva configuración de lanzamiento y, a continuación, actualizar esta configuración de lanzamiento en el grupo de Auto Scaling.

Error: No se pudo registrar como una instancia de contenedor en ECS: AccessDeniedException: El usuario: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-00aa11bb22cc33def 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 solicitud: 0a123456-7899-10101-a987-6543210deff

2019-06-29T16:10:09Z [ERROR] Se produjo un error al volver a realizar el registro: AccessDeniedException: El usuario: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef no está autorizado para realizar: ecs:RegisterContainerInstance en el recurso: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster código de estado: 400, id de solicitud: 0a123456-7899-10101-a987-123456pqrs

Estos errores se deben a que faltan permisos de IAM. Para resolver estos errores, revisa las instrucciones de la sección Verificar el rol de IAM y las políticas asociadas a la instancia.