

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.

# Drainage des instances de conteneur Amazon ECS
<a name="container-instance-draining"></a>

Il peut arriver que vous deviez supprimer une instance de conteneur de votre cluster, par exemple pour effectuer des mises à jour du système ou réduire verticalement la capacité du cluster. Amazon ECS offre la possibilité de transférer une instance de conteneur vers un état `DRAINING`. C'est ce que l'on appelle le *drainage des instances de conteneur*. Lorsqu'une instance de conteneur est définie sur `DRAINING`, Amazon ECS bloque la planification du placement des nouvelles tâches sur l'instance de conteneur. 

## Comportement de drainage pour les services
<a name="draining-service-behavior"></a>

Toutes les tâches faisant partie d'un service dans un état `PENDING` sont arrêtées immédiatement. S'il existe une capacité d'instance de conteneur disponible dans le cluster, le planificateur de service va démarrer les tâches de remplacement. S'il n'y a pas assez de capacité d'instance de conteneur, un message d'événement de service sera envoyé pour indiquer le problème.

Les tâches faisant partie d'un service sur l'instance de conteneur qui se trouvent à l'état `RUNNING` passent à l'état `STOPPED`. Le planificateur de service tente de remplacer les tâches en fonction du type de déploiement du service et des paramètres de configuration du déploiement, `minimumHealthyPercent` et `maximumPercent`. Pour plus d’informations, consultez [Services Amazon ECS](ecs_services.md) et [Paramètres de définition d’un service Amazon ECS](service_definition_parameters.md).
+ Si `minimumHealthyPercent` est inférieur à 100 %, le planificateur peut ignorer `desiredCount` temporairement pendant le remplacement de tâche. Par exemple, si le `desiredCount` est de quatre tâches, un minimum de 50 % permet au planificateur d'arrêter deux tâches existantes avant de commencer deux nouvelles tâches. Si le minimum est de 100 %, le planificateur de service ne peut pas supprimer les tâches existantes tant que les tâches de remplacement sont considérées comme saines. Si les tâches des services qui n'utilisent pas d'équilibreur de charge ont l'état `RUNNING`, elles sont considérées comme saines. Les tâches des services qui utilisent un équilibreur de charge sont considérées comme saines si elles se trouvent à l'état `RUNNING` et si l'instance de conteneur sur laquelle elles sont hébergées est signalée comme saine par l'équilibreur de charge.
**Important**  
Si vous utilisez des instances Spot et que la valeur `minimumHealthyPercent` est supérieure ou égale à 100 %, le service ne disposera pas de suffisamment de temps pour remplacer la tâche avant la fin de l'instance Spot.
+ Le paramètre `maximumPercent` représente une limite supérieure du nombre de tâches en cours d'exécution lors du remplacement des tâches, ce qui vous permet de définir la taille du lot de remplacement. Par exemple, si le `desiredCount` est de quatre tâches, un maximum de 200 % lance quatre nouvelles tâches avant d'arrêter les quatre tâches à drainer (à condition de disposer des ressources de cluster nécessaires). Si le maximum est de 100 %, les tâches de remplacement ne peuvent pas commencer tant que les tâches de drainage sont arrêtées.
**Important**  
Si `minimumHealthyPercent` et `maximumPercent` sont à 100 %, alors le service ne peut pas supprimer les tâches existantes et ne peut pas non plus démarrer les tâches de remplacement. Cela empêche le drainage des instances de conteneur ainsi que d'effectuer de nouveaux déploiements.

## Comportement de drainage pour les tâches autonomes
<a name="draining-standalone-behavior"></a>

Toutes les tâches autonomes à l'état `PENDING` ou `RUNNING` ne sont pas affectées. Vous devez attendre qu'elles s'arrêtent d'elles-mêmes ou les arrêter manuellement. L'instance de conteneur restera dans l'état `DRAINING`.

## Comportement du drainage pour les instances gérées Amazon ECS
<a name="managed-instances-draining-behavior"></a>

La résiliation des instances gérées Amazon ECS garantit des transitions de charge de travail harmonieuses tout en optimisant les coûts et en préservant l'intégrité du système. Le système de résiliation offre trois voies décisionnelles distinctes pour la résiliation d’instance, chacune présentant des caractéristiques différentes en termes de délais et d’impact sur le client.

Résiliation initiée par le client  
Permet de contrôler directement la suppression des instances lorsque vous devez immédiatement retirer des instances de conteneur du service. Vous exécutez `deregister-container-instance` avec le paramètre de `force` requête défini sur true. Cela signifie qu'une résiliation immédiate est requise malgré les charges de travail en cours.

Résiliation initiée par le système en cas d’inactivité  
Amazon ECS Managed Instances surveille en permanence et optimise les coûts de manière proactive en mettant fin aux instances de conteneur Amazon ECS inactives qui n'exécutent aucune tâche. ECS utilise un délai heuristique pour donner aux instances de conteneur la possibilité d'acquérir des tâches nouvellement lancées avant d'être interrompues. Cela peut être personnalisé à l'aide du paramètre de configuration du fournisseur de capacité `scaleInAfter` Amazon ECS Managed Instances.

Résiliation provoquée par l’actualisation de l’infrastructure  
Amazon ECS Managed Instances gère et met à jour automatiquement le logiciel sur les instances de conteneur gérées afin de garantir la sécurité et la conformité tout en préservant la disponibilité de la charge de travail. Pour plus d'informations, consultez la section relative aux [correctifs dans les instances gérées Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-instances-patching.html).

Le système de résiliation met en œuvre une approche en deux phases qui équilibre la continuité de la charge de travail avec les exigences de gestion de l’infrastructure.

**Phase 1 : période d’achèvement progressif**  
Au cours de cette phase, le système met en œuvre des stratégies de drainage progressif qui privilégient la continuité de la charge de travail. Les tâches de service sont traitées de manière progressive par le biais des processus de planification habituels d’Amazon ECS. Les tâches autonomes continuent de s’exécuter, car elles peuvent se terminer naturellement. Le système veille à ce que toutes les tâches atteignent l’état d’arrêt grâce à des processus d’achèvement naturels.

**Phase 2 : application stricte des délais**  
Lorsque l’achèvement progressif ne permet pas d’atteindre les objectifs de résiliation dans des délais acceptables, le système met en œuvre une application stricte des délais. Le délai strict est généralement fixé à la date de début du drainage plus sept jours, ce qui laisse suffisamment de temps pour mener à bien l’opération tout en respectant les exigences opérationnelles. L’application comprend des procédures automatiques d’annulation de l’enregistrement forcée et l’arrêt immédiat de toutes les tâches restantes, quel que soit le statut d’achèvement.

Une instance de conteneur a terminé le drainage lorsque toutes les tâches qui s'exécutent sur l'instance passent à l'état `STOPPED`. L'instance de conteneur reste à l'état `DRAINING` jusqu'à ce qu'elle soit réactivée ou supprimée. Vous pouvez vérifier l'état des tâches sur l'instance de conteneur en utilisant l'[ListTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTasks.html)opération avec le `containerInstance` paramètre pour obtenir une liste des tâches de l'instance, suivie d'une [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)opération avec le nom de ressource Amazon (ARN) ou l'ID de chaque tâche pour vérifier l'état de la tâche.

Lorsque vous êtes prêt pour que l'instance de conteneur recommence à héberger des tâches, vous modifiez l'état de l'instance de conteneur de `DRAINING` en `ACTIVE`. Le planificateur de service Amazon ECS prend alors à nouveau en compte l’instance de conteneur pour le placement des tâches.

## Procédure
<a name="drain-instances"></a>

Les étapes suivantes peuvent être utilisées pour définir une instance de conteneur à drainer à l'aide de la nouvelle AWS Management Console.

Vous pouvez également utiliser l'action ou la [update-container-instances-state](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-container-instances-state.html)commande de l'[UpdateContainerInstancesState](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateContainerInstancesState.html)API pour modifier le statut d'une instance de conteneur en`DRAINING`.

**AWS Management Console**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez un cluster qui héberge vos instances.

1. Sur la *name* page **Cluster :**, choisissez l'onglet **Infrastructure**. Puis, sous **Container instances** (Instances de conteneur), cochez la case correspondant à chaque instance de conteneur que vous souhaitez drainer.

1. Choisissez **Actions**, **Drain** (Drainer).