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

Date de la dernière mise à jour : 27/01/2020

Après avoir lancé mes nœuds de travail Amazon Elastic Kubernetes Service (Amazon EKS) à l'aide d'eksctl ou d'AWS Management Console, je souhaite 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

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 « To edit a node group configuration » (Modifier la configuration d'un groupe de nœuds) de Updating a Managed Node Group (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

Important : 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 l'impact 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 annuler l'action de drainage d'un groupe de nœuds, exécutez la commande suivante :

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

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

Si vous n'utilisez pas eksctl pour lancer vos nœuds de travail, utilisez le code suivant pour identifier et drainer tous les nœuds d'une version Kubernetes particulière (dans ce cas, 1.14.7-eks-1861c5) :

#!/bin/bash
K8S_VERSION=1.14.7-eks-1861c5
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 annuler l'action de drainage d'un groupe de nœuds, utilisez le code suivant pour identifier et drainer tous les nœuds d'une version Kubernetes particulière (dans ce cas, 1.14.7-eks-1861c5) avec l'extrait de code suivant :

#!/bin/bash
K8S_VERSION=1.14.7-eks-1861c5
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Undo draining $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.14.7-eks-1861c5
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.14.7-eks-1861c5

Remarque : le numéro de version s'affiche 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 spécifique, 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 name

Remarque : remplacez node_name par votre valeur.

Pour migrer vos applications existantes vers un nouveau groupe de nœuds de travail, consultez Migrating to a New Worker Node Group (Migration vers un nouveau groupe de nœuds de travail).

Suppression de vos nœuds de travail

Important : l'action de suppression est irrécupérable. 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 Deleting a Managed Node Group (Suppression d'un groupe de nœuds gérés).

Si vous avez un groupe de nœuds non gérés et que vous avez lancé vos nœuds de travail avec un modèle AWS CloudFormation, supprimez la pile AWS CloudFormation 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 AWS CloudFormation pour lancer vos nœuds de travail, supprimez le groupe Auto Scaling pour vos nœuds de travail. Vous pouvez également mettre fin à l'instance directement si vous n'avez pas utilisé de groupe Auto Scaling.


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

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?