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.