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

8 minutos de lectura
0

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

Descripción corta

Su instancia de Amazon EC2 no puede registrarse en un clúster de Amazon ECS ni unirse a él por uno o varios de los motivos siguientes:

  • El punto de conexión de ECS no puede acceder públicamente al nombre de host del sistema de nombres de dominio (DNS) de la instancia.
  • Las configuraciones de la subred pública son incorrectas.
  • Las configuraciones de la subred privada son incorrectas.
  • Los puntos de conexión de VPC no están bien configurados.
  • Sus grupos de seguridad no permiten el tráfico de red.
  • La instancia de EC2 no tiene los permisos de AWS Identity and Access Management (IAM) requeridos o se deniega la llamada a la API ECS:RegisterContainerInstance.
  • Los datos de usuario de la instancia de su contenedor de ECS no están bien configurados.
  • El agente de ECS está detenido o no se ejecuta en la instancia.
  • La configuración de lanzamiento del grupo de escalamiento automático no es correcta (si su instancia forma parte de un grupo de escalamiento automático).
  • La imagen de máquina de Amazon (AMI) que usa para la instancia no cumple los requisitos previos.

Resolución

Utilice el runbook AWSSupport-TroubleshootECSContainerInstance de AWS Systems Manager para solucionar los problemas habituales que se enumeran en la sección Descripción corta. Si el resultado del runbook no ofrece recomendaciones, utilice los enfoques de resolución manual de problemas que se explican en secciones posteriores de Resolución.

Utilización del runbook de Automatización de Systems Manager

Utilice el runbook AWSSupport-TroubleshootECSContainerInstance para solucionar los problemas de la instancia de EC2 que no se registra en el clúster de ECS. Esta automatización comprueba si hay problemas con los siguientes recursos:

  • 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.
  • La red está configurada correctamente.

Nota: 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, seleccione 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 AWSSupport-TroubleshootECSContainerInstance.
    Nota: Seleccione el botón de opción y no el nombre de la automatización con hipervínculo.
  7. Elija Siguiente.
  8. En Ejecutar documento de automatización, elija Ejecución simple.
  9. En la sección Parámetros de entrada para AutomationAssumeRole, introduzca el nombre de recurso de Amazon (ARN) del rol que permite que Automatización de Systems Manager realice acciones.
    Nota: Si no se especifica un rol de IAM, Automatización de Systems Manager utiliza los permisos del usuario o rol de IAM que ejecute el runbook. Para obtener más información acerca de cómo crear el rol de asunción para Automatización de Systems Manager, consulte Método 2: Utilización de IAM para configurar roles para la automatización. Asegúrese de que AutomationAssumeRole o el 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. En ClusterName, introduzca el nombre del clúster en el que no se ha podido registrar la instancia de EC2.
  11. En InstanceId, introduzca el ID de la instancia de EC2 que no se ha podido registrar.
  12. Elija Ejecutar.

El resultado del runbook proporciona recomendaciones y pasos para solucionar los problemas.

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

Ejecute el siguiente comando para comprobar si el agente de contenedor de Amazon ECS se está ejecutando en la instancia:

sudo systemctl status ecs

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

sudo systemctl start ecs

El resultado del comando debe ser parecido a este:

ecs start/running, process 23403

Comprobación de las configuraciones de lanzamiento

Si la instancia que está lanzando forma parte de un grupo de escalamiento automático, asegúrese de que la configuración de lanzamiento del grupo de escalamiento automático sea correcta. Para obtener más información, consulte el Paso 5 en Actualización de un clúster de instancias de contenedor de Amazon ECS con una AMI nueva.

Comprobación de 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. Se recomienda usarlas a menos que la aplicación requiera una versión que aún no esté disponible en esa AMI.

Comprobación de los archivos de registro

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

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

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

Solución de problemas 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 ha podido iniciar la instancia de EC2.

Póngase en contacto con aws-verification@amazon.com. y no olvide mencionar que debe desbloquear su cuenta.

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

Este error aparece cuando el agente de ECS no puede registrar la instancia de contenedor de EC2 en el clúster de ECS 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 la aplicación. Si el error persiste, compruebe los registros del agente de ECS.

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

Este error puede deberse a una excepción de limitación cuando se supera el límite de tasa de una llamada a la API en concreto. Para solucionar este error, aumente el límite de tasa en el nivel de la cuenta. Compruebe si hay alguna API, como RegisterTargets o 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 se puede 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 Amazon ECS, siga estos pasos:

  1. Termine la instancia de contenedor.
  2. Lance una nueva instancia de contenedor con el nuevo tamaño de instancia. Se recomienda lanzar la instancia con la AMI de Amazon Linux 2 optimizada para Amazon ECS 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 escalamiento automático.

Para obtener más información, consulte ¿Cómo puedo cambiar el tipo de instancia de contenedor en 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 bien
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 deben a que faltan permisos de IAM. Para resolverlos, consulte las instrucciones en Rol de IAM de instancia de contenedor de Amazon ECS.

Además, ejecute el runbook AWSSupport-TroubleshootECSContainerInstance para ver qué permisos faltan en el rol de la instancia de contenedor.

Información relacionada

Creación de una nube virtual privada

¿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

Creación de runbooks propios