Supprimer en toute sécurité les Pods d’un nœud de Kubernetes

Lors de l’administration d’un cluster Kubernetes, il est parfois nécessaire de retirer les pods d’un des noeuds du cluster Kubernetes. Ceci peut se produire lorsque l’on souhaite retirer un noeud du cluster pour en réduire la taille ou encore pour assurer une opération de maintenance.

Retirer les pods d’un noeud n’est pas très compliqué, mais afin de minimiser les perturbations sur les applications qui sont hébergées sur le cluster Kubernetes, il est nécessaire de prendre quelques précautions.

La procédure ci-dessous est bien adaptée aux cas où il n’y a pas d’états stockés dans les pods.

Récupérer les noeuds du cluster Kubernetes

kubectl get nodes

Vérifier l’état des pods

Avant de lancer l’opération d’arrêt des Pods, il est nécessaire de vérifier leur état

kubectl get pods -o wide | grep <node_name>

Expulser les pods

La commande drain permet d’expulser tous les pods du nœud. Les pods seront ‘déplacés’ sur d’autres nœuds par leur contrôleur.

drain est une commande bloquante. Elle rendra la main lorsque les pods auront été retirés.

kubectl drain <node_name>

Vérifier que le noeud est bien vide

Une fois que drain a rendu la main, vérifier que le noeud est bien vide.

kubectl get pods -o wide | grep <nodename>

Il est possible que certains pods soient encore présents. Pour en forcer l’arrêt utiliser la commande

kubectl drain <node_name> --ignore-daemonsets --force --delete-local-data

Supprimer le noeud du cluster Kubernetes

Le noeud est maintenant libre de tout workload, il est donc maintenant possible de le supprimer. Il est possible de le faire en passant par kubectl.

kubectl delete node <node_name>

Si le cluster est hébergé chez un cloud provider il est aussi possible de supprimer le noeud en passant par la console ou l’outil ligne de commande associée.

Liens intéressants

Liens externes