Mes tâches Amazon Elastic Container Service (Amazon ECS) sont bloquées dans l'état PROVISIONNEMENT.
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.
Pour résoudre ce problème, examinez les événements de votre service Amazon ECS pour le service concerné afin de vérifier les activités de déploiement et les échecs récents. Utilisez les modèles d'événements et les messages d'erreur pour déterminer si le problème est lié à des problèmes de capacité, de réseau ou de configuration. Pour plus de détails sur les échecs de lancement des tâches, vérifiez les messages d'erreur relatifs aux tâches interrompues pour détecter les erreurs TaskFailedToStart.
Vérifier la configuration de votre fournisseur de capacité
Pour vérifier si le groupe Amazon EC2 Auto Scaling du fournisseur de capacité atteint sa capacité maximale pendant le provisionnement des tâches, exécutez la commande describe-auto-scaling-groups suivante de l’interface de ligne de commande AWS :
aws autoscaling describe-auto-scaling-groups \
--auto-scaling-group-names your-asg-name \
--query 'AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MaxSize:MaxSize,RunningInstances:Instances[?LifecycleState==InService].InstanceId|length}'
Remarque : Remplacez your-asg-name par le nom de votre groupe EC2 Auto Scaling.
Pour afficher toutes les instances de conteneur et leur statut, exécutez la commande list-container-instances suivante :
aws ecs list-container-instances \
--cluster your-cluster-name \
--status ACTIVE \
--query 'containerInstanceArns[]'
Pour augmenter la capacité de votre groupe Auto Scaling, exécutez la commande update-auto-scaling-group suivante :
aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name your-asg-name \
--max-size new-max-size
Remarque : Remplacez your-asg-name par le nom de votre groupe EC2 Auto Scaling et remplacez new-max-size par la taille de groupe EC2 Auto Scaling mise à jour.
Aussi, assurez-vous que l'agent Amazon ECS fonctionne et qu’il est sain sur les instances de conteneur.
Pour résoudre plus en détail les erreurs liées au fournisseur de capacité, consultez la section Comment résoudre les problèmes lorsque j'essaie de configurer un nouveau fournisseur de capacité ou de mettre à jour un fournisseur de capacité existant pour mon cluster Amazon ECS ?
Vérifier la configuration de votre service et la mise à l’échelle des tâches
Assurez-vous que le nombre souhaité par le service correspond à la capacité d'infrastructure disponible en termes de processeur et de mémoire sur les instances de conteneur. Pour afficher le nombre souhaité et le nombre d'exécutions du service, exécutez la commande describe-services suivante :
aws ecs describe-services \
--cluster your-cluster-name \
--services your-service-name \
--query 'services[].{desiredCount:desiredCount,runningCount:runningCount,pendingCount:pendingCount}'
Remarque : Remplacez your-cluster-name par le nom de votre service et your-service-name par le nom de votre cluster.
Pour mettre à jour le nombre souhaité du service, exécutez la commande update-service suivante :
aws ecs update-service \
--cluster your-cluster-name \
--service your-service-name \
--desired-count new-count
--force-new-deployment
Remarque : Remplacez your-cluster-name par le nom de votre cluster, your-service-name par le nom de votre service et new-count par le nombre de tâches souhaité. L'option --force-new-deployment force la mise à jour du service.
Vérifier vos quotas de service
Si vous dépassez vos quotas de service Amazon ECS, vous risquez de rencontrer des problèmes de tâche. Pour résoudre les problèmes de quota de service, consultez la section Comment résoudre les problèmes de quota de service Amazon ECS ?
Vérifier votre configuration réseau
Vérifiez les règles de votre groupe de sécurité des tâches et assurez-vous que le sous-réseau dispose d'adresses IP disponibles. Pour les sous-réseaux privés sans passerelle NAT, configurez les points de terminaison de VPC requis pour votre configuration. Les groupes de sécurité de point de terminaison de VPC doivent autoriser le trafic entrant provenant de l'adresse CIDR de votre sous-réseau de tâches.
Vos groupes de sécurité doivent également autoriser le trafic suivant :
- Trafic HTTPS sortant (port 443) vers Internet ou des passerelles NAT pour extraire des images de conteneur.
- Trafic sortant vers les points de terminaison de VPC que vous utilisez.
- Trafic entrant provenant du groupe de sécurité Application Load Balancer pour les configurations qui utilisent un Application Load Balancer.
- Trafic entrant entre des conteneurs qui doivent communiquer.
Pour vérifier si le sous-réseau du service Amazon ECS possède l'adresse IP requise, exécutez la commande describe-subnets suivante :
aws ec2 describe-subnets \
--subnet-ids subnet-abcde \
--query 'Subnets[].{SubnetId:SubnetId,AvailableIPs:AvailableIpAddressCount,TotalIPs:CidrBlock}'
Remarque : Remplacez subnet-abcde par votre ID de sous-réseau.
Assurez-vous de respecter les exigences du mode réseau de votre tâche :
- Pour le mode awsvpc, assurez-vous que chaque tâche dispose d’une interface réseau élastique dédiée.
Remarque : Il existe un quota maximum d'interfaces réseau pour chaque type d'instance. Assurez-vous que vos instances de conteneur disposent de points d'attache d'interface réseau disponibles pour les nouvelles tâches.
- Pour le mode pont, assurez-vous que le pont docker0 compte suffisamment d'adresses IP dans son pool.
- Pour le mode hôte, il n'existe pas de contraintes de ressources réseau spécifiques. Toutefois, des conflits de ports peuvent survenir lorsque plusieurs tâches utilisent le même port hôte.
Informations connexes
Résolution de problèmes liés à Amazon ECS
Quotas de service Amazon ECS
Mettre automatiquement à l’échelle votre service Amazon ECS
Concevoir votre solution pour Amazon ECS