Comment vérifier, mettre à l'échelle, supprimer ou drainer mes nœuds de travail dans Amazon EKS ?

Dernière mise à jour : 20/07/2021

J'ai lancé mes nœuds de travail Amazon Elastic Kubernetes Service (Amazon EKS) à l'aide d'eksctl ou de la console de gestion AWS. Je souhaite maintenant vérifier, mettre à l'échelle, drainer ou supprimer mes nœuds de travail.

Brève description

Suivez les étapes de la section appropriée en fonction de vos besoins :

  • Vérification de vos nœuds de travail
  • Mise à l'échelle de vos nœuds de travail
  • Drainage de vos nœuds de travail
  • Suppression de vos nœuds de travail

Résolution

Vérification de vos nœuds de travail

Pour répertorier les nœuds de travail enregistrés dans le plan de contrôle Amazon EKS, exécutez la commande suivante :

kubectl get nodes -o wide

Le résultat renvoie le nom, la version Kubernetes, le système d'exploitation et l'adresse IP des nœuds de travail.

Pour obtenir des informations supplémentaires sur un seul nœud de travail, exécutez la commande suivante :

kubectl describe node/node_name

Remarque : remplacez node_name par votre valeur. Par exemple : ip-XX-XX-XX-XX.us-east-1.compute.internal

Le résultat affiche plus d'informations sur le nœud de travail, notamment les étiquettes, les altérations, les informations système et l'état.

Mise à l'échelle de vos nœuds de travail

Remarque : Si vos groupes de nœuds apparaissent dans la console Amazon EKS, utilisez un groupe de nœuds gérés. Dans le cas contraire, utilisez un groupe de nœuds non gérés.

(Option 1) Pour mettre à l'échelle vos nœuds de travail gérés ou non gérés à l'aide d'eksctl, exécutez la commande suivante :

eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName

Remarque : remplacez clusterName, desiredCount et nodegroupName par vos valeurs.

- ou -

(Option 2) Pour mettre à l'échelle vos nœuds de travail gérés sans eksctl, suivez les étapes de la section « Modifier la configuration d'un groupe de nœuds » de Mise à jour d'un groupe de nœuds gérés.

- ou -

(Option 3) Pour mettre à l'échelle vos nœuds de travail non gérés à l'aide d'AWS CloudFormation, suivez les étapes suivantes :

1.    Utilisez un modèle AWS CloudFormation pour lancer vos nœuds de travail pour Windows ou Linux.

2.    Modifiez les paramètres NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize ou NodeAutoScalingGroupMaxSize dans votre pile AWS CloudFormation.

Drainage de vos nœuds de travail

Remarque : L'action de drainage isole le nœud de travail et indique à Kubernetes d'arrêter la planification de nouveaux pods sur le nœud. Les pods s'exécutant sur le nœud cible sont expulsés des nœuds de drainage, ce qui signifie que les pods seront arrêtés. Prenez en compte les conséquences que cela peut avoir sur votre environnement de production.

Vous pouvez drainer un groupe de nœuds entier ou un seul nœud de travail. Choisissez l'option appropriée.

(Option 1) Drainez l'ensemble du groupe de nœuds :

Si vous utilisez eksctl pour lancer vos nœuds de travail, exécutez la commande suivante :

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName

Remarque : remplacez clusterName et nodegroupName par vos valeurs.

Pour décorder le groupe de nœuds, exécutez la commande suivante :

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo

Remarque : remplacez clusterName et nodegroupName par vos valeurs.

Si vous n'utilisez pas eksctl pour lancer vos nœuds de travail, identifiez et drainez tous les nœuds d'une version particulière de Kubernetes. Par exemple :

#!/bin/bash
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Draining $node"
    kubectl drain $node --ignore-daemonsets --delete-local-data
done

Pour identifier et décorder tous les nœuds d'une version particulière de Kubernetes, utilisez le code suivant :

#!/bin/bash
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Uncordon $node"
    kubectl uncordon $node
done

Remarque : Pour obtenir la version de votre nœud de travail, exécutez la commande suivante :

$ kubectl get nodes
NAME                                      STATUS   ROLES    AGE     VERSION
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda

Remarque : Le numéro de version apparaît dans la colonne VERSION.

(Option 2) Drainez un seul nœud de travail :

Si vous n'utilisez pas eksctl pour lancer vos nœuds de travail ou si vous souhaitez drainer uniquement un nœud précis, exécutez la commande suivante pour isoler correctement votre nœud de travail :

kubectl drain node_name --ignore-daemonsets

Remarque : remplacez node_name par votre valeur.

Pour annuler l'isolation, exécutez les commandes suivantes :

kubectl uncordon node_name

Remarque : remplacez node_name par votre valeur.

Pour migrer vos applications existantes vers un nouveau groupe de nœuds de travail, consultez la section Migration vers un nouveau groupe de nœuds de travail.

Suppression de vos nœuds de travail

Remarque : La suppression est irréversible. Prenez en compte l'impact que cela peut avoir sur votre environnement de production.

Si vous utilisez eksctl, exécutez la commande suivante :

eksctl delete nodegroup --cluster=clusterName --name=nodegroupName

Si vous disposez d'un groupe de nœuds gérés, suivez les étapes de Suppression d'un groupe de nœuds gérés.

Si vous disposez d'un groupe de nœuds non gérés et que vous avez lancé vos nœuds de travail avec un modèle CloudFormation, supprimez la pile CloudFormation. Vous devez supprimer la pile que vous avez créée pour votre groupe de nœuds pour Windows ou Linux.

Si vous disposez d'un groupe de nœuds non gérés et que vous n'avez pas utilisé de modèle CloudFormation pour lancer vos nœuds de travail, supprimez le groupe Auto Scaling pour vos nœuds de travail. Vous pouvez également résilier l'instance directement si vous n'avez pas utilisé de groupe Auto Scaling.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?