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

Lecture de 7 minute(s)
0

Je n’arrive pas à utiliser un cluster Amazon Elastic Container Service (Amazon ECS) pour enregistrer mon instance Amazon Elastic Compute Cloud (Amazon EC2).

Résolution

Tout d'abord, utilisez le dossier d’exploitation AWS Systems Manager AWSSupport-TroubleshootECSContainerInstance pour vérifier automatiquement l’existence de problèmes potentiels. Le dossier d’exploitation AWSSupport-TroubleshootECSContainerInstance permet de résoudre automatiquement les problèmes courants qui empêchent votre instance Amazon EC2 de s’enregistrer ou de rejoindre un cluster.

Remarque : Veillez à utiliser le dossier d’exploitation AWSSupport-TroubleshootECSContainerInstance dans la même région AWS que celle où se trouvent votre cluster Amazon ECS et votre instance EC2.

Si la sortie du dossier d’exploitation ne fournit pas de recommandations, prenez les mesures suivantes pour résoudre manuellement ce problème.

Prérequis :

  • L'instance EC2 doit disposer d'un rôle AWS Identity and Access Management (IAM) associé aux autorisations nécessaires pour communiquer avec votre configuration Amazon ECS. Le rôle IAM de l'instance doit également disposer des autorisations ecs:RegisterContainerInstance afin qu'Amazon ECS puisse enregistrer l'instance de conteneur auprès du cluster. Si vous n'avez pas besoin de personnaliser votre rôle IAM, utilisez AmazonEC2ContainerServiceforEC2Role.
  • Vérifiez que la configuration réseau de l'instance de conteneur est correcte. Pour plus d'informations, consultez la section La configuration réseau de votre instance de conteneur Amazon ECS est incorrecte de la rubrique Comment puis-je résoudre l'erreur « CannotPullContainerError » dans ma tâche de type de lancement Amazon ECS EC2 ?

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

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

sudo systemctl status ecs

Si l’agent de conteneur Amazon ECS 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 commande start est similaire à l’exemple suivant :

Active: active (running)

Pour vérifier si le service Docker est en cours d'exécution, exécutez la commande suivante :

sudo systemctl status docker

Si le service Docker n'est pas en cours d'exécution, exécutez la commande suivante pour démarrer le service :

sudo systemctl start docker

La sortie de la commande start est similaire à l’exemple suivant :

Active: active (running)

Vérifier les configurations de lancement

Si l’instance de lancement 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 l’étape 5. Créer une nouvelle configuration de lancement de la section Actualisation d’un cluster de l’instance de conteneur Amazon ECS grâce à une nouvelle Amazon Machine Image (AMI).

Vérifier l'AMI de votre instance de conteneur

Si l'AMI de l'instance de conteneur est une AMI copiée ou personnalisée, assurez-vous que l'instance répond aux exigences suivantes :

Ces exigences sont préconfigurées sur les AMI optimisées pour Amazon ECS. Il est recommandé d’utiliser une AMI optimisée pour Amazon ECS, sauf si votre application requiert une version qui n’est pas disponible dans cette AMI. Pour plus d'informations, consultez la section Récupération des métadonnées AMI Linux optimisées pour Amazon ECS.

Vérifier si les données utilisateur de l’instance contiennent les bonnes informations sur le cluster

Pour vérifier si les données utilisateur de l’instance contiennent les bonnes informations sur le cluster, exécutez la commande suivante :

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

Remarque : Remplacez cluster-name par le nom de votre cluster.

Vérifier les fichiers journaux

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

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

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

Remarque : Remplacez YYYY-MM-DD par la date pour laquelle vous souhaitez vérifier les fichiers journaux.

Corriger 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. Launching EC2 instance failed.

Cette erreur se produit lorsque votre compte AWS est bloqué et qu’Amazon ne le reconnaît pas. Pour débloquer votre compte, envoyez un e-mail pour demander à AWS de débloquer votre compte à l’adresse aws-verification@amazon.com.

Erreur : re-registering: ClientException : Container instance 12345678910abcdefghixzy is inactive.\n\tstatus code: 400, request id: 012345678a-012345b-012ab-0a1-9f645f4s5c12" module=agent.go

Cette erreur se produit lorsque l’agent de conteneur Amazon ECS ne peut pas utiliser le cluster ECS pour enregistrer l’instance de conteneur EC2, car l’instance EC2 est inactive. Cette erreur est liée à l’application qui s’exécute sur l’instance. Pour comprendre la cause de l’erreur, consultez d’abord l’application. Si l'erreur persiste, consultez les journaux de l'agent de conteneur Amazon ECS.

Erreur : Few instances are able to join the cluster but with the same configurations, other instance are not able to join the cluster.

Cette erreur se produit lorsqu'un appel d'API spécifique dépasse le quota de débit et engendre une exception ThrottlingException. Pour plus d'informations, consultez la section Limitation des requêtes pour l'API Amazon ECS. Pour corriger cette erreur, augmentez le quota de débit au niveau du compte. Utilisez AWS CloudTrail pour vérifier les appels d'API courants tels que ListTasks et RegisterContainerInstance.

Erreur : After changing the instance type, new instances are unable to join the cluster.

Cette erreur se produit lorsque l’agent de conteneur Amazon ECS est bloqué à l’état En attente et que vous ne pouvez pas modifier le type d’instance. Pour modifier le type d’instance dans Amazon ECS, procédez comme suit :

  1. Supprimez l’instance de conteneur.
  2. Lancez une nouvelle instance de conteneur ayant le nouveau type d’instance.
    Remarque : Il est recommandé d’utiliser une AMI Amazon Linux 2 optimisée pour Amazon ECS pour lancer l’instance de votre cluster.

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

Pour plus d’informations, consultez la section Comment puis-je 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 lorsque vous ne disposez pas des autorisations IAM requises. Pour corriger ces erreurs, créez un rôle IAM d’instance de conteneur. Puis, exécutez le dossier d’exploitation AWSSupport-TroubleshootECSContainerInstance pour identifier les autorisations manquantes dans le rôle d’instance de conteneur.

Informations connexes

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

Résolution de problèmes liés à Amazon ECS