10 votes

Le service AWS ECS ne démarre aucune tâche

J'ai configuré un cluster, un conteneur, une tâche et un service sur ECS.

Après avoir créé le service, il semble fonctionner avec "3 tâches souhaitées", mais aucune tâche n'est créée comme étant en attente ou en cours d'exécution. En fait, il semble ne rien faire.

Ma définition de tâche (excluant les nuls et les tableaux vides) est la suivante

{
  "containerDefinitions": [
    {
      "portMappings": [
        {
          "hostPort": 5000,
          "protocol": "tcp",
          "containerPort": 25565
        },
        {
          "hostPort": 5000,
          "protocol": "udp",
          "containerPort": 25565
        }
      ],
      "cpu": 0,
      "memoryReservation": 1024,
      "image": "itzg/bungeecord",
      "essential": true,
      "name": "BungeeCord"
    }
  ],
  "compatibilities": [
    "EC2"
  ],
  "taskDefinitionArn": "arn:aws:ecs:us-west-1:949960343466:task-definition/BungeeCordTask:3",
  "family": "BungeeCordTask",
  "requiresAttributes": [
    {
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
    }
  ],
  "requiresCompatibilities": [
    "EC2"
  ],
  "revision": 3,
  "status": "ACTIVE",
}

Mon cluster comporte 3 instances ECS, qui sont toutes en fonctionnement et n'ont rien sur elles : Mon groupe

Mon service est ici : Mon service

Je n'ai pas mis en place d'auto-scaling, d'équilibrage de charge ou autre. Mais j'ai des services de découverte par défaut.

Quelqu'un a-t-il une idée de la raison pour laquelle aucune tâche ne démarre ?

Edit :

  • J'ai jeté un coup d'oeil à la liste des "tâches arrêtées" et elle est en fait vide.
  • Je me suis également connecté en SSH à chacune de mes instances ec2, et j'ai jeté un coup d'oeil sur les éléments suivants /var/log : J'ai trouvé un dossier /var/log/ecs avec quelques fichiers journaux, mais mais il n'y a pas d'erreur ou quoi que ce soit qui concerne spécifiquement ma tâche. Il semble interroger avec succès un endpoint web amazon pour les mises à jour.
  • J'ai également lancé curl google.com pour vérifier qu'ils ont un accès externe.

0 votes

Que dit CloudTrail ?

3 votes

Je me demande juste si vous avez trouvé une solution à ce problème, je suis confronté au même problème.

6voto

davegallant Points 130

Je vérifierais votre onglet Événements dans le service ECS. Dans certains cas, il vous indiquera qu'il n'y a pas assez de mémoire pour démarrer le conteneur. C'est un peu difficile à trouver sans le savoir, car il est enterré dans un onglet du service. Je pense que certains événements ont dû se produire.

3voto

Dans le Clusters onglet, choisissez le cluster. Dans le Service ouvrir le Onglet Tâches et basculez la vue sur "Tâches arrêtées".

Vous devriez voir une liste des tâches qui n'ont pas réussi à démarrer et une raison pour laquelle elles ont échoué.

Vérifiez également /var/log/amazon/{something about ecr}/* pour d'autres erreurs possibles.

Il se peut que les instances ne puissent pas atteindre le registre docker (problème de configuration réseau) ou qu'elles ne puissent pas se connecter si c'est ECR (rôle IAM) ou s'il faut un nom d'utilisateur et un mot de passe.

J'espère que cela vous aidera :)

0 votes

Bonjour, merci pour votre réponse :) Veuillez vérifier mes modifications à la question.

1voto

ShibbyUK Points 101

Une réponse qui peut aider certains. De même, dans mon cas, le service ne tentait pas de lancer de tâches - aucune tâche arrêtée, aucun événement, rien n'apparaissant dans CloudTrail.

Il s'est avéré que l'un des sous-réseaux de la définition du service n'existait plus. Le service a silencieusement échoué à lancer des tâches sans qu'aucune preuve de ces tentatives ne soit enregistrée. Donc, en cas de doute, essayez de recréer le service pour vous assurer que toutes les ressources que vous essayez d'utiliser existent toujours.

0voto

Il se peut que les instances ne soient pas enregistrées auprès de l'ECS. Veillez à créer des instances uniquement en utilisant CloudFormation. Mettez à jour les services uniquement lorsque toutes les instances sont en état de fonctionnement. Si vous mettez à jour CloudFormation à l'aide de la ligne de commande, assurez-vous que vous mettez en place l'option sleep et permettez à vos instances EC2 de démarrer d'abord, puis mettez à jour le service ECS.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X