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

Lecture de 5 minute(s)
0

Mes instances de conteneur Amazon Elastic Container Service (Amazon ECS) sont déconnectées.

Brève description

Votre agent de conteneur Amazon ECS peut se connecter et se reconnecter plusieurs fois par heure. Ces événements de modification sont normaux et ne doivent pas vous inquiéter.

Toutefois, si l'agent de conteneur reste déconnecté, il est possible que l'instance de conteneur cesse de fonctionner dans le cadre de votre cluster ECS. L'agent est déconnecté lorsque agentConnected renvoie la valeur false. Le problème peut avoir les origines suivantes :

  • Des problèmes de mise en réseau empêchent la communication entre l'instance et Amazon ECS.
  • L'agent de conteneur n'a pas les autorisations AWS Identity and Access Management (IAM) nécessaires pour communiquer avec les points de terminaison Amazon ECS.
  • Il existe des problèmes liés à l'hôte ou au service Docker dans l'instance de conteneur.

Procédez comme suit pour identifier la cause de la déconnexion.

Résolution

Remarque : la résolution suivante s'applique aux AMI Amazon Linux 1 optimisées pour Amazon ECS. Pour obtenir une résolution qui s'applique aux AMI Amazon Linux 2 optimisées pour Amazon ECS, reportez-vous à Comment résoudre les problèmes liés à un agent Amazon ECS déconnecté ?

Vérifier que le service Docker est en cours d'exécution sur l'instance de conteneur

1.    Pour vérifier que le service Docker est en cours d'exécution sur l'instance de conteneur affectée, exécutez la commande suivante :

sudo service docker status

La sortie de commande ressemble à ce qui suit :

docker (pid 23013) is running...

Si le service Docker n'est pas en cours d'exécution ou qu'il est nécessaire de le redémarrer, exécutez la commande suivante :

sudo service docker restart

Remarque : ne saisissez pas cette commande lorsque le service est déjà en cours d'exécution. Tout d'abord, assurez-vous de définir l'instance de conteneur sur l'état Drainage. Ensuite, redémarrez le service Docker pour que les tâches existantes soient planifiées sur une autre instance de conteneur.

La sortie de la commande doit contenir les lignes suivantes :

Stopping docker: [  OK  ]
Starting docker: [  OK  ]

Remarque : pour vérifier que le service Docker est en cours d'exécution après la commande de redémarrage, exécutez la commande sudo service docker status.

2.    Pour démarrer l'agent ECS, exécutez la commande suivante :

sudo start ecs

Vérifier que l'agent de conteneur est en cours d'exécution sur l'instance de conteneur

Pour vérifier que l'agent de conteneur est en cours d'exécution sur l'instance de conteneur affectée, exécutez la commande suivante:

sudo status ecs

Si l'agent de conteneur n'est pas en cours d'exécution sur votre instance de conteneur, exécutez la commande suivante pour le démarrer :

sudo start ecs

La sortie de commande ressemble à ce qui suit :

ecs start/running, process 23403

Examiner les fichiers journaux de l'agent de conteneur et de Docker

Si vos instances de conteneur sont toujours déconnectées, consultez les fichiers journaux de l'hôte du conteneur pour l'agent de conteneur et Docker.

Pour générer 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

Remarque : pour collecter des informations de journal à partir de l'instance de conteneur, exécutez le collecteur de journaux Amazon ECS.

Vérifier que le profil d'instance IAM possède les autorisations nécessaires

Si l'agent de conteneur est toujours déconnecté, vérifiez que le profil d'instance IAM associé à l'instance de conteneur dispose des autorisations IAM nécessaires.

1.    Connectez-vous à l'instance en utilisant SSH.

2.    Pour afficher les métadonnées de l'instance dans le profil d'instance associé à l'instance, exécutez la commande suivante :

curl http://169.254.169.254/latest/meta-data/iam/info

La sortie de commande ressemble à ce qui suit :

{
  "Code" : "Success",
  "LastUpdated" : "2019-06-29T15:47:03Z",
  "InstanceProfileArn" : "arn:aws:iam::1122334455:instance-profile/ecsInstanceRole",
  "InstanceProfileId" : "AIPAJ5WF3LZVY7PLUHV72"
}

3.    Vérifiez que le rôle IAM contient les autorisations appropriées pour vos instances de conteneur.

4.    Pour vérifier des erreurs d'informations d'identification spécifiques avec l'agent de conteneur, exécutez la commande suivante pour vérifier le journal de l'agent de conteneur ECS pour obtenir une liste de journaux ECS :

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

Remarque : le journal de l'agent de conteneur change toutes les heures, et le suffixe change automatiquement pour refléter la date et l'heure actuelles. Mettez à jour la commande pour inclure la plage de dates et l'ID de journal pour lesquels le problème s'est produit.

Si l'agent de conteneur ne dispose pas des informations d'identification nécessaires, vous recevrez une erreur similaire à la suivante dans les journaux:

2019-06-29T16:10:09Z [ERROR] Unable to register as a container instance with ECS: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster
    status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f
2019-06-29T16:10:09Z [ERROR] Error re-registering: AccessDeniedException: User: arn:aws:sts::1122334455:assumed-role/ecsInstanceRole/i-0052b2e858b1891ef is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws:ecs:us-east-1:1122334455:cluster/exampleCluster
    status code: 400, request id: 0b73e260-5088-4688-a425-6f35f1ef440f

Aide supplémentaire

Si vous ne parvenez pas à identifier le problème lié à votre instance de conteneur ECS à partir de cette résolution, contactez le support Premium pour obtenir de l'aide. Tout d'abord, utilisez le collecteur de journaux Amazon ECS pour créer une archive des journaux de votre instance. Ensuite, joignez les journaux à un ticket d'assistance pour aider l'ingénieur du support à résoudre le problème.


Informations connexes

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

Agent de conteneur Amazon ECS

Rôle IAM de l'instance de conteneur Amazon ECS

Emplacements des fichiers journaux Amazon ECS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans