Pourquoi mon instance Amazon ECS ou Amazon EC2 ne parvient-elle pas à rejoindre le cluster ?

Lecture de 8 minute(s)
0

Je n’arrive pas à enregistrer mon instance Amazon Elastic Compute Cloud (Amazon EC2) auprès d’un cluster Amazon Elastic Container Service (Amazon ECS).

Brève description

Votre instance Amazon EC2 ne peut pas s’enregistrer ou rejoindre un cluster Amazon ECS pour l’une ou plusieurs des raisons suivantes :

  • Le point de terminaison ECS ne peut pas accéder publiquement au nom d’hôte du système de noms de domaine (DNS) de l’instance.
  • Les configurations de vos sous-réseaux publics sont incorrectes.
  • Les configurations de votre sous-réseau privé sont incorrectes.
  • Les points de terminaison de votre VPC ne sont pas correctement configurés.
  • Vos groupes de sécurité n’autorisent pas le trafic réseau.
  • L’instance EC2 ne dispose pas des autorisations AWS Identity and Access Management (IAM) requises. Ou bien, l’appel d’API ecs:RegisterContainerInstance est refusé.
  • Les données utilisateur de l’instance pour votre conteneur ECS ne sont pas correctement configurées.
  • L’agent ECS est arrêté ou ne s’exécute pas sur l’instance.
  • La configuration de lancement du groupe Auto Scaling n’est pas correcte (si votre instance fait partie d’un groupe Auto Scaling).
  • L’Amazon Machine Image (AMI) que vous utilisez pour votre instance ne répond pas aux prérequis.

Résolution

Utilisez le runbook AWSSupport-TroubleshootECSContainerInstance AWS Systems Manager pour résoudre les problèmes courants répertoriés dans la section Short description (Brève description). Si la sortie du runbook ne fournit pas de recommandations, utilisez les approches de dépannage manuel décrites dans les sections de Resolution (Résolution) suivantes.

Utiliser le runbook d’automatisation de Systems Manager

Utilisez le runbook AWSSupport-TroubleshootECSContainerInstance pour dépanner l’instance EC2 qui ne parvient pas à s’enregistrer auprès du cluster ECS. Cette automatisation vérifie les problèmes potentiels à l’aide des ressources suivantes :

  • Les données utilisateur de l’instance contiennent les informations de cluster correctes.
  • Le profil d’instance contient les autorisations requises.
  • Le réseau est correctement configuré

Remarque : Veillez à utiliser le runbook AWSSupport-TroubleshootECSContainerInstance dans la même région AWS où se trouvent votre cluster ECS et votre instance EC2.

  1. Ouvrez la console AWS Systems Manager.
  2. Dans le volet de navigation, sous Change Management (Gestion des modifications), choisissez Automation (Automatisation).
  3. Choisissez Execute automation (Exécuter l’automatisation).
  4. Choisissez l’onglet Owned by Amazon (Propriété d’Amazon).
  5. Dans le Automation document (Document d’automatisation), recherchez TroubleshootECSContainerInstance.
  6. Sélectionnez la carte AWSSupport-TroubleshootECSContainerInstance.
    Remarque : Sélectionnez le bouton radio et non le nom de l’automatisation en lien hypertexte.
  7. Choisissez Next (Suivant).
  8. Pour Execution automation document (Exécuter le document d’automatisation), choisissez Simple execution (Exécution simple).
  9. Dans la section Input parameters (Paramètres d’entrée), pour AutomationAssumeRole, entrez l’Amazon Resource Name (ARN) du rôle qui permet à Systems Manager Automation d’effectuer des actions.
    Remarque : Si vous ne spécifiez pas de rôle IAM, Systems Manager Automation utilise les autorisations de l’utilisateur ou du rôle IAM qui exécute le runbook. Pour plus d’informations sur la création du rôle d’utilisateur pour Systems Manager Automation, consultez Méthode 2 : Utiliser IAM pour configurer des rôles pour l’automatisation. Assurez-vous que le rôle AutomationAssumeRole ou IAM possède les autorisations suivantes : ec2:DescribeIamInstanceProfileAssociations, ec2:DescribeInstanceAttribute, ec2:DescribeInstances, ec2:DescribeNetworkAcls, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcs, ec2:DescribeVpcEndpoints, iam:GetInstanceProfile, iam:GetRole, iam:SimulateCustomPolicy, et iam:SimulatePrincipalPolicy.
  10. Pour ClusterName, entrez le nom du cluster pour lequel l’instance EC2 n’a pas pu s’enregistrer.
  11. Pour InstanceId (ID d’instance), entrez l’ID de l’instance EC2 qui n’a pas pu être enregistrée.
  12. Choisissez Execute (Exécuter).

La sortie du runbook fournit des étapes de dépannage et des recommandations.

Vérifiez l’état de l’agent Amazon ECS sur l’instance Amazon Linux 2

Exécutez la commande suivante pour vérifier si l’agent de conteneur Amazon ECS sur l’instance est en cours d’exécution :

sudo systemctl status ecs

Si l’agent de conteneur ne s’exécute pas sur votre instance, exécutez la commande suivante pour démarrer l’agent :

sudo systemctl start ecs

La sortie de la sortie de commande doit ressembler à ce qui suit :

ecs start/running, process 23403

Vérifiez les configurations de lancement

Si l’instance que vous lancez fait partie d’un groupe Auto Scaling, vérifiez que la configuration de lancement du groupe Auto Scaling est correcte. Pour plus d’informations, consultez Step 5 (Étape 5) de la section Actualisation d’un cluster d’instances de conteneur Amazon ECS avec une nouvelle AMI.

Vérifiez l’AMI de votre instance

Si l’AMI que vous utilisez pour l’instance EC2 est une AMI copiée ou personnalisée, vérifiez que l’instance comporte les composants suivants :

Les AMI optimisées pour Amazon ECS sont préconfigurées selon ces exigences. Il est recommandé d’utiliser des AMI optimisées pour Amazon ECS, sauf si votre application requiert une version qui n’est pas encore disponible dans cette AMI.

Vérifiez les fichiers journaux

Si le problème persiste, utilisez le collecteur de journaux Amazon ECS pour collecter les journaux, puis examinez-les pour en déterminer la cause. Vous pouvez également consulter les fichiers journaux sur l’hôte du conteneur pour l’agent de conteneur et Docker.

Pour consulter les fichiers journaux de l’agent de conteneur et de Docker, exécutez les commandes suivantes :

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

Résolution des erreurs courantes

Erreur : Lancement d’une nouvelle instance EC2. Raison du statut : Ce compte est actuellement bloqué et n’est pas reconnu comme un compte valide. Veuillez contacter aws-verification@amazon.com si vous avez des questions. Le lancement de l’instance EC2 a échoué.

Contactez aws-verification@amazon.com. N’oubliez pas de mentionner que vous devez débloquer votre compte.

Erreur lors de la réinscription : ClientException (Exception du client) : L’instance de conteneur 12345678910xxxxxxxxxxxx est inactive.\n\tstatus code : 400, numéro de demande : 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Cette erreur s’affiche lorsque l’agent ECS ne parvient pas à enregistrer l’instance de conteneur EC2 auprès du cluster ECS, car l’instance EC2 est actuellement inactive. Cette erreur est liée à l’application qui s’exécute sur l’instance. Pour comprendre la cause de l’erreur, consultez l’application. Si l’erreur persiste, consultez les journaux de l’agent ECS.

Erreur : Peu d’instances sont en mesure de rejoindre le cluster, mais avec les mêmes configurations, d’autres instances ne peuvent pas rejoindre le cluster.

Cette erreur peut se produire en raison d’une ThrottlingException qui se produit lorsqu’un appel d’API spécifique dépasse la limite de débit. Pour résoudre cette erreur, augmentez la limite de taux au niveau du compte. Vérifiez les API, telles que RegisterTargets et RegisterContainerInstance.

Erreur : Après avoir modifié le type d’instance, les nouvelles instances ne peuvent pas rejoindre le cluster.

Cette erreur se produit lorsque l’agent ECS est bloqué dans l’état Pending (En attente) et ne peut pas modifier le type d’instance. Contrairement à certaines instances EC2, vous ne pouvez pas arrêter l’instance ECS, modifier le type d’instance, puis la redémarrer. Pour modifier le type d’instance dans Amazon ECS, procédez comme suit :

  1. Mettez fin à l’instance de conteneur.
  2. Lancez une nouvelle instance de conteneur avec la nouvelle taille d’instance. Il est recommandé de lancer l’instance avec l’AMI Amazon Linux 2 optimisée par Amazon ECS pour votre cluster.

Vous pouvez également créer une nouvelle configuration de lancement. Ensuite, mettez à jour la configuration de lancement dans le groupe Auto Scaling.

Pour plus d’informations, consultez Comment modifier mon type d’instance de conteneur dans Amazon ECS ?

Erreur : Impossible de s’enregistrer en tant qu’instance de conteneur auprès d’ECS : AccessDeniedException (Exception d’accès refusé) : L’utilisateur : arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/I-00aa11bb22cc33def n’est pas autorisé à exécuter : ecs:RegisterContainerInstance sur la ressource : arn:aws:ecs:us-east- 1:1122334455:cluster/exampleCluster. Code d’état : 400, numéro de demande : 0a123456-7899-10101-a987-6543210deff

-ou-
Erreur : 2019-06-29T16:10:09Z [ERROR] Erreur lors de la réinscription : AccessDeniedException (Exception d’accès refusé) : L’utilisateur : arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/I-0052b2e858b1891ef n’est pas autorisé à exécuter : ecs:RegisterContainerInstance sur la ressource : arn:aws:ecs:us-east- 1:1122334455:Cluster/exampleCluster code d’état : 400, numéro de demande : 0a123456-7899-10101-a987-123456pqrs

Ces erreurs se produisent en raison d’autorisations IAM manquantes. Pour résoudre ces erreurs, consultez les instructions du rôle ](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html#instance-iam-role-verify)IAM de l’instance de conteneur Amazon ECS[.

Exécutez également le runbook AWSSupport-TroubleshootECSContainerInstance pour voir quelles autorisations sont manquantes pour le rôle d’instance de conteneur.

Informations connexes

Création d’un cloud privé virtuel

Pourquoi mes instances de conteneur Amazon ECS avec des AMI Amazon Linux 1 sont-elles déconnectées ?

Résolution des problèmes avec Amazon ECS

Création de vos propres runbooks