Déterminer l'état des tâches Amazon ECS à l'aide de vérifications de l'état des conteneurs - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déterminer l'état des tâches Amazon ECS à l'aide de vérifications de l'état des conteneurs

Lorsque vous créez une définition de tâche, vous pouvez configurer une surveillance de l’état pour vos conteneurs. Les surveillances de l’état du conteneur sont des commandes qui s’exécutent localement sur un conteneur et valident l’état et la disponibilité des applications.

L'agent de conteneur Amazon ECS assure une surveillance et génère des rapports uniquement pour les vérifications d'état spécifiées dans la définition de la tâche. Amazon ECS n'assure pas la surveillance de l'état Docker qui est intégrée dans une image de conteneur, mais qui n'est pas spécifiée dans la définition du conteneur. Les paramètres de surveillance de l'état spécifiés dans une définition du conteneur remplacent toutes les surveillances de l'état Docker présentes dans l'image de conteneur.

Lorsqu’une surveillance de l’état est spécifiée dans une définition de tâche, le conteneur exécute le processus de surveillance à l’intérieur du conteneur, puis évalue le code de sortie afin de déterminer l’état de l’application.

La surveillance de l’état comprend les paramètres suivants :

  • Commande : commande que le conteneur exécute pour déterminer si celle-ci est saine. Le tableau de chaînes peut commencer par CMD pour exécuter directement les arguments de la commande, ou par CMD-SHELL pour exécuter la commande avec le shell par défaut du conteneur. Utilisez CMD-SHELL lorsque vous avez besoin de fonctionnalités du shell telles que les canaux, les redirections, le chaînage de commandes ou l’extension de variables d’environnement. Par exemple, CMD-SHELL vous permet d’utiliser des commandes telles que curl -f http://localhost/ || exit 1 où le shell interprète l’opérateur ||. Utilisez CMD pour les commandes simples qui ne nécessitent pas d’interprétation du shell.

  • Intervalle : durée (en secondes) entre chaque surveillance de l’état.

  • Délai d’expiration : durée (en secondes) pendant laquelle le système attend que la surveillance de l’état aboutisse avant de la considérer comme un échec.

  • Réessais : nombre de fois où une surveillance de l’état échoué doit être réessayée avant que le conteneur ne soit considéré comme défectueux.

  • Période de démarrage : période de grâce facultative accordée aux conteneurs pour leur permettre de démarrer avant que les échecs de la surveillance de l’état ne soient pris en compte dans le nombre maximal de tentatives.

    Si une vérification de l'état aboutit dans le délai défini par startPeriod, le conteneur est considéré comme sain et toutes les défaillances suivantes sont prises en compte dans le nombre maximal de nouvelles tentatives.

Pour plus d’informations sur la manière de spécifier une surveillance de l’état dans la définition d’une tâche, consultez la section Surveillance de l'état.

Voici une description des valeurs d’état possibles pour un conteneur :

  • HEALTHY : le conteneur a passé avec succès la surveillance de l'état.

  • UNHEALTHY : le conteneur a échoué à la surveillance de l'état.

  • UNKNOWN : la surveillance de l'état du conteneur est en cours d'évaluation, aucune surveillance de l'état du conteneur n'est définie ou Amazon ECS n'a pas l'état de santé du conteneur.

Les commandes de surveillance de l’état s’exécutent sur le conteneur. Vous devez donc inclure les commandes dans l’image du conteneur.

La surveillance de l’état se connecte à l’application via l’interface de bouclage du conteneur à localhost ou 127.0.0.1. Un code de sortie 0 indique la réussite et tout code de sortie autre que zéro indique qu’il s’agit d’un échec.

Tenez compte des éléments suivants lorsque vous utilisez la surveillance de l’état des conteneurs :

  • Les surveillances de l'état du conteneur requièrent la version 1.17.0 ou une version supérieure de l'agent de conteneur Amazon ECS.

  • Les surveillances de l’état du conteneur sont prises en charge pour les tâches Fargate si vous utilisez une version de plateforme Linux 1.1.0 ou ultérieure ou une version de plateforme Windows 1.1.0 ou ultérieure

Comment Amazon ECS détermine l’état des tâches

Seuls les conteneurs essentiels et disposant d’une commande de surveillance de l’état dans la définition de la tâche sont pris en compte pour déterminer l’état de la tâche.

Les règles suivantes sont évaluées dans l’ordre :

  1. Si le statut d’un conteneur essentiel est UNHEALTHY, le statut de la tâche est UNHEALTHY.

  2. Si le statut d’un conteneur essentiel est UNKNOWN, le statut de la tâche est UNKNOWN.

  3. Si le statut de tous les conteneurs essentiels est HEALTHY, le statut de la tâche est HEALTHY.

Prenons l’exemple d’état des tâches suivant avec deux conteneurs essentiels.

État du conteneur 1 État du conteneur 2 État de la tâche
UNHEALTHY UNKNOWN UNHEALTHY
UNHEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY

Prenons l’exemple d’état de la tâche suivant avec trois conteneurs essentiels.

État du conteneur 1 État du conteneur 2 État du conteneur 3 État de la tâche
UNHEALTHY UNKNOWN UNKNOWN UNHEALTHY
UNHEALTHY UNKNOWN HEALTHY UNHEALTHY
UNHEALTHY HEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN HEALTHY UNKNOWN
HEALTHY UNKNOWN UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY HEALTHY

Comment les déconnexions des agents affectent la surveillance de l’état

Si l’agent de conteneur Amazon ECS se déconnecte du service Amazon ECS, cela n’entraînera pas le passage du conteneur à l’état UNHEALTHY. Ce mécanisme a été conçu pour garantir que les conteneurs continuent de fonctionner pendant les redémarrages de l’agent ou en cas d’indisponibilité temporaire. Le statut de la surveillance de l’état correspond à la « dernière réponse reçue » de l’agent Amazon ECS. Ainsi, si le conteneur était considéré comme HEALTHY avant la déconnexion, ce statut restera inchangé jusqu’à ce que l’agent se reconnecte et qu’un autre contrôle d’intégrité soit effectué. Aucune hypothèse n'a été émise quant au statut des surveillances de l'état des conteneurs.