Passer au contenu

Comment résoudre les problèmes liés à l'échec de mes déploiements Amazon ECS ?

Lecture de 6 minute(s)
0

Je souhaite résoudre les problèmes liés à l’échec du déploiement d’Amazon Elastic Container Service (Amazon ECS).

Brève description

Lorsque vous tentez de déployer une nouvelle application, Amazon ECS peut rencontrer un blocage de déploiement. Les anciennes tâches continuent à être déployées, mais les nouvelles tâches ne peuvent pas atteindre un état stable. Vos déploiements Amazon ECS peuvent échouer pour les raisons suivantes :

  • Contraintes liées aux ressources
  • Problèmes liés à l'image de conteneur
  • Problèmes liés au réseau
  • Problèmes liés à la définition de tâche
  • Amazon CloudWatch Logs
  • Configuration de la surveillance de l’état

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.

Contraintes liées aux ressources

Le déploiement de votre service Amazon ECS peut échouer si la capacité du processeur ou de la mémoire disponible à l'endroit où vous déployez votre tâche est insuffisante. Une contrainte de ressources se produit lorsque l'erreur RESOURCE:* apparaît dans vos événements de service et que les tâches Amazon ECS ne passent pas à l’état En cours d’exécution.

Pour résoudre ce problème, prenez les mesures suivantes :

  • Utilisez les métriques Amazon CloudWatch pour surveiller la capacité des ressources de votre cluster Amazon ECS.
  • Configurez Container Insights pour des métriques d'utilisation détaillées des ressources au niveau des tâches et des conteneurs.
  • Assurez-vous que les paramètres de votre groupe Auto Scaling correspondent à vos exigences en matière de charge de travail pour vos clusters de type de lancement Amazon Elastic Compute Cloud (Amazon EC2). Surveillez la capacité d’instance et configurez des politiques de mise à l’échelle en fonction de l'utilisation du processeur, de l'utilisation de la mémoire ou de métriques personnalisées.
  • Vérifiez la capacité de votre interface réseau Elastic pour votre tâche Amazon ECS pour votre mode réseau awsvpc. Utilisez des types d'instance avec des limites d'interface réseau Elastic plus élevées pour les déploiements denses. Chaque tâche nécessite sa propre interface réseau Elastic. Utilisez la planification CIDR et surveillez votre interface réseau Elastic pour vous assurer qu’un nombre suffisant d'adresses IP sont disponibles lorsque vous lancez votre tâche Amazon ECS.

Pour vérifier les ressources disponibles sur les instances de conteneur, exécutez la commande list-container-instances de l'interface de ligne de commande AWS :

aws ecs list-container-instances --cluster your-cluster-name

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

Puis, exécutez la commande describe-container-instances :

aws ecs describe-container-instances --cluster your-cluster-name --container-instances container-instance-id

Remarque : Remplacez your-cluster-name par le nom de votre cluster et container-instance-id par l'ID d'instance de votre conteneur.

Problèmes liés à l'image de conteneur

Lorsqu'Amazon ECS ne parvient pas à extraire des images d'un référentiel de ressources, les tâches échouent et une erreur CannotPullContainerError apparaît dans vos événements de service. Les tâches associées peuvent apparaître dans les journaux d’agents de votre instance de conteneur.

Pour résoudre cette erreur, confirmez les configurations de définition de tâches suivantes pour votre tâche Amazon ECS et la configuration réseau du service :

  • Configurez l'URI de l'image de conteneur.
    Pour Amazon Elastic Container Registry (Amazon ECR), vérifiez que l'image correspond au format de dénomination de fichier suivant :

    account-id.dkr.ecr.region.amazonaws.com/repository-name:tag

    Remarque : Remplacez account-id par votre identifiant de compte, region par votre région AWS et repository-name par le nom de votre référentiel.

    Pour Docker Hub, vérifiez que l'image correspond au format de dénomination de fichier suivant :

    repository/image:tag

    Remarque : Remplacez repository par le nom de votre référentiel.

  • Vérifiez que le rôle IAM d'exécution des tâches Amazon ECS est associé à l'autorisation AmazonECSTaskExecutionRolePolicy.

  • Vérifiez qu'aucun espace réservé à l'environnement n'est manquant ou incorrect dans votre définition de tâche.

  • Lorsque vous déployez le service Amazon ECS dans un sous-réseau privé, associez les points de terminaison de VPC au sein du même sous-réseau et du même groupe de sécurité.
    Pour les points de terminaison d'interface :
    Pour Amazon ECS, utilisez com.amazonaws.region.ecs.
    Pour CloudWatch Logs, utilisez com.amazonaws.us-east-1.logs.
    Pour Amazon ECR (Docker), utilisez com.amazonaws.us-east-1.ecr.dkr.
    Pour l'API Amazon ECR, utilisez com.amazonaws.us-east-1.ecr.api.
    Pour les points de terminaison de passerelle :
    Pour Amazon S3, utilisez com.amazonaws.us-east-1.s3.

Problèmes liés au réseau

Des problèmes de réseau surviennent lorsque les conteneurs ne peuvent pas communiquer avec des services externes, lorsque la découverte de service échoue ou que les tâches ne parviennent pas à atteindre les points de terminaison requis. Vous pouvez recevoir des erreurs de délai d’attente dans les journaux d’application, des échecs de résolution DNS ou des problèmes de connectivité entre les conteneurs et les autres services AWS. Pour résoudre ce problème, prenez les mesures suivantes.

CloudWatch Logs

Pour consulter les journaux CloudWatch afin de résoudre les problèmes liés à l'échec d'une tâche Amazon ECS, procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, choisissez Clusters.
  3. Sélectionnez votre cluster.
  4. Choisissez l'onglet Tâches.
  5. Sélectionnez l'ID de tâche correspondant à la tâche qui a échoué.
  6. Vérifiez le statut Arrêté pour déterminer la raison pour laquelle le conteneur a échoué.
    Remarque : Les journaux de la tâche arrêtée ne sont disponibles que pendant une heure après l'arrêt de la tâche ECS.
  7. Résolvez la panne de votre conteneur.

Configuration de la surveillance de l’état

Vérifiez les paramètres de vérification d’état suivants dans votre Application Load Balancer ou Network Load Balancer :

  • Vérifiez que le paramètre HealthCheckTimeoutSeconds est suffisamment long pour que votre conteneur réussisse. Si la tâche ECS échoue à la vérification de l’état de l'équilibreur de charge dans un court laps de temps, modifiez cette valeur.
  • Assurez-vous que le paramètre HealthCheckGracePeriodSeconds est suffisamment long pour que votre conteneur puisse démarrer.
  • Vérifiez que le conteneur d'application répond avec le code d'état 200 au niveau du HealthCheckPath configuré dans l'équilibreur de charge. Pour plus d'informations, consultez le paramètre HealthCheckPath dans Vérifications de l’état des groupes cibles de l’Application Load Balancer.

Pour identifier les vérifications d’état qui ont échoué, procédez comme suit :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, développez Équilibrage de charge, puis choisissez Groupes cibles.
  3. Sélectionnez le nom de votre groupe cible.
  4. Consultez les détails de votre groupe cible pour détecter les instances saines ou non saines.

Pour résoudre les problèmes liés à vos instances défectueuses, consultez la section Résoudre les problèmes liés à vos Application Load Balancers.

Informations connexes

AWS::ECS::Service

AWS OFFICIELA mis à jour il y a un an