FAQ : Tâches Amazon ECS bloquées dans un état de cycle de vie

Lecture de 8 minute(s)
0

Je souhaite savoir pourquoi ma tâche Amazon Elastic Container Service (Amazon ECS) est bloquée dans un état de cycle de vie particulier.

Q : Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état PROVISIONING ?

Lorsque le planificateur ECS ne trouve pas d'instance ECS appropriée dans le type de lancement Amazon Elastic Compute Cloud (Amazon EC2), une tâche utilisant ce type de lancement peut rester à l'état PROVISIONING. Cela se produit même si de l'espace est disponible sur les instances de conteneur existantes pour l'exécution de la tâche.

Les tâches à l'état PROVISIONING forment une file d'attente. Amazon ECS ajoute à la file d'attente des tâches qu'il ne peut pas déployer en raison de contraintes de ressources liées à la mémoire, aux ports, aux interfaces réseau Elastic, au GPU et aux processeurs. À mesure que des ressources supplémentaires sont disponibles, ces tâches passent à l'état RUNNING.

Si vous gérez la mise à l'échelle pour le fournisseur de capacité, les tâches n'échouent pas immédiatement lorsqu'elles ne parviennent pas à obtenir des ressources suffisantes sur les instances existantes. À la place, les tâches passent à l'état PROVISIONING. Si vous ne gérez pas la mise à l'échelle, les tâches qui ne trouvent pas de capacité immédiatement échouent.

Lorsque des problèmes surviennent et que les tâches en mode awsvpc ne peuvent pas provisionner des interfaces réseau Elastic, elles peuvent rester à l'état PROVISIONING. Les tâches AWS Fargate peuvent également rester à l'état PROVISIONING lorsque des problèmes surviennent et qu'elles ne peuvent pas provisionner des interfaces réseau Elastic.

Q : Pourquoi mes tâches Amazon ECS passent-elles de l'état PROVISIONING à l'état STOPPED lorsqu'elles font appel à un fournisseur de capacité ?

Un ECS peut rester bloqué à l'état PROVISIONING pour les raisons suivantes :

  • Erreurs de configuration
  • Contraintes liées aux ressources
  • Défaut d’alignement avec les spécifications du fournisseur de capacité

Pour résoudre ces problèmes, prenez les mesures suivantes :

  • Vérifiez si le groupe Auto Scaling associé au fournisseur de capacité a atteint son nombre maximal d'instances. Si la limite est atteinte, ECS ne peut pas provisionner de tâches supplémentaires.

  • Si vous utilisez le type de lancement Amazon EC2 avec un modèle de lancement associé à votre groupe Auto Scaling, vérifiez les données utilisateur. Assurez-vous que le nom de cluster correct est au format suivant :

    #!/bin/bash
    echo "ECS_CLUSTER=MyCluster" >> /etc/ecs/ecs.config
  • Assurez-vous que la stratégie ecsInstanceRole avec la relation de confiance correcte est attachée aux instances associées à votre groupe Auto Scaling.

  • Consultez les événements du service Amazon ECS. Si l'erreur suivante s'affiche, cela signifie que l'instance est lancée mais pas configurée pour l'équilibreur de charge attaché  :
    La cible se trouve dans une zone de disponibilité qui n'est pas activée pour l'équilibreur de charge

  • Assurez-vous que les sous-réseaux désignés pour la tâche et les instances de conteneur gérées par le fournisseur de capacité se trouvent dans la même zone de disponibilité. Ils doivent se trouver dans la même zone de disponibilité pour les tâches que vous lancez avec une stratégie de fournisseur de capacité en mode réseau aws-vpc.

  • Pour les tâches qui utilisent le mode réseau awsvpc sur les instances Linux EC2, les interfaces réseau Elastic ne sont pas dotées d'adresses IP publiques. Pour accéder à Internet, vous devez lancer des tâches dans un sous-réseau privé configuré pour utiliser une passerelle NAT. Les tâches que vous lancez dans des sous-réseaux publics n'ont pas accès à Internet et sont peut-être bloquées à l'état PROVISIONING.

Pour plus d'informations, consultez la section Consulter les messages d'événements du service Amazon ECS.

Q. Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état PENDING ?

Lorsqu'Amazon ECS attend que l'agent de conteneur prenne d'autres mesures, votre tâche passe à l'état PENDING. La tâche reste dans cet état jusqu'à ce que des ressources soient mises à sa disposition.

Pour plus d'informations, consultez la section Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état PENDING ?

Q : Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état ACTIVATING ?

Lorsque le processus principal des conteneurs passe à l'état RUNNING et qu'Amazon ECS effectue des étapes supplémentaires, votre tâche passe à l'état ACTIVATING. Par exemple, vous devez créer des ressources de découverte de service pour les tâches qui utilisent la découverte de service.

Pour les tâches qui font partie d'un service utilisant plusieurs groupes cibles Elastic Load Balancing, l'enregistrement du groupe cible a lieu pendant cet état. Lorsque la tâche passe à l'état ACTIVATING, Amazon ECS attend que les actions correspondantes soient effectuées lors de l'enregistrement du groupe cible ou des ressources de découverte de service.

Q : Pourquoi ma tâche qui utilise la découverte de service est-elle bloquée à l'état ACTIVATING ?

Consultez l'historique des événements AWS CloudTrail pour les appels d'API correspondants liés au service de découverte de service, tels que les suivants :

  • CreatePrivateDnsNamespace
  • CreateService
  • RegisterInstance
  • UpdateInstanceCustomHealthStatus

Les actions d'API précédentes sont définies dans la politique gérée par AWS AmazonECSServiceRolePolicy. Si l'appel d'API a échoué avec un code d'erreur, tel que ServiceNotFound ou InternalFailure, assurez-vous de suivre les considérations relatives à la découverte de service.

Q : Pourquoi une tâche qui utilise le groupe cible Elastic Load Balancing est-elle bloquée à l'état ACTIVATING ?

Lorsqu'Amazon ECS met du temps à déterminer l'état du conteneur, il se peut que la tâche soit bloquée à l'état ACTIVATING. Pour calculer le temps total nécessaire, multipliez les paramètres HealthCheckIntervalSeconds et HealthyThresholdCount. Pour accélérer le processus de vérification de l’état, réduisez le nombre de contrôles et l'intervalle entre les contrôles. Consultez les événements CloudTrail pour savoir si des erreurs ou des échecs sont signalés pour les appels d'API RegisterTargets Elastic Load Balancing correspondants.

Q : Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état RUNNING alors qu'elle est censée être à l'état STOPPED ?

Des problèmes liés à l'application ou une tâche incorrectement configurée peuvent entraîner le maintien de l'état RUNNING de votre tâche.

Pour résoudre ces problèmes, prenez les mesures suivantes :

  • Vérifiez les journaux d'application pour détecter d'éventuelles erreurs ou informations sur les raisons pour lesquelles le conteneur ne se ferme pas. Une fois le conteneur essentiel fermé, la tâche passe à l'état STOPPED.
  • Si la tâche fait partie d'un service Amazon ECS, vérifiez que vos paramètres DeploymentConfiguration sont correctement définis.
  • Si la tâche fait partie d'un service Amazon ECS qui utilise un équilibreur de charge, vérifiez que le paramètre deregistration delay est correctement défini.
  • Vérifiez si la valeur ECS_CONTAINER_STOP_TIMEOUT est correctement définie.
  • Activez Amazon ECS exec pour votre tâche. Puis, utilisez ECS exec pour vous connecter au conteneur afin de résoudre le problème sur l'application.

Pour plus d’informations, consultez la section Comment puis-je résoudre les problèmes liés aux tâches Amazon ECS qui mettent du temps à s’arrêter lorsque l’instance de conteneur est à l’état DRAINING ?

Q : Pourquoi ma tâche Amazon ECS est-elle bloquée à l’état DEACTIVATING ?

À l'état DEACTIVATING, Amazon ECS effectue des étapes supplémentaires avant l'arrêt de la tâche. Par exemple, pour les tâches qui font partie d'un service utilisant plusieurs groupes cibles Elastic Load Balancing, l’annulation de l’enregistrement du groupe cible a lieu pendant cet état.

Les raisons suivantes peuvent entraîner le maintien de l'état DEACTIVATING de votre tâche :

  • Vous supprimez les ressources associées aux groupes cibles Elastic Load Balancing avant que l’enregistrement de la tâche ne puisse être annulé dans les groupes cibles.
  • Le rôle personnalisé qui est spécifié en tant que paramètre lorsque vous créez le service Amazon ECS ne dispose pas des autorisations Elastic Load Balancing requises.
  • Vous supprimez le rôle personnalisé lorsque la tâche est active.

Vérifiez que le groupe cible et le rôle AWS Identity and Access Management (IAM) que vous avez spécifiés dans la définition de service existent. Assurez-vous également que la définition de service inclut la politique de confiance requise et les autorisations Elastic Load Balancing.

Pour optimiser le temps nécessaire pour qu'une tâche sorte de l'état DEACTIVATING, réglez les paramètres deregistration_delay.timeout_seconds et deregistration_delay.timeout_seconds. Pour plus d'informations, consultez la section Drainage de la connexion de l'équilibreur de charge.

Q : Pourquoi ma tâche Amazon ECS est-elle bloquée à l'état DEPROVISIONING ?

Amazon ECS effectue des étapes supplémentaires après l'arrêt de la tâche, mais avant que celle-ci ne passe à l'état STOPPED. Par exemple, pour les tâches qui utilisent le mode réseau awsvpc, Amazon ECS détache et supprime l'interface réseau Elastic.

Les raisons suivantes peuvent entraîner le maintien de l'état DEPROVISIONING de votre tâche :

  • Vous avez supprimé les rôles liés au service qui étaient associés au service avant l’arrêt de la tâche. Le service prédéfinit les rôles liés au service et inclut toutes les autorisations dont le service a besoin pour appeler d'autres services AWS en votre nom. Exécutez la commande suivante pour vérifier si un rôle lié à un service est associé à votre service :

    $aws ecs describe-services --cluster CLUSTER-NAME --services SERVICE-NAME
  • Vous avez supprimé le groupe cible avant que l’enregistrement des tâches ne soit annulé du groupe cible.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois