Lorsque vous travaillez sur l'environnement de cluster Kubernetes, vous rencontrerez parfois une situation dans laquelle vous devrez supprimer des pods de l'un de vos nœuds de travail.
Vous devrez peut-être déboguer des problèmes avec le nœud lui-même, mettre à niveau le nœud ou simplement réduire votre cluster.
L'action de supprimer un pod Kubernetes est très simple avec le kubectl delete pod
commande :
kubectl delete pod pod-name
Cependant, vous devez suivre certaines étapes spécifiques pour minimiser les perturbations de votre application. Je vais l'expliquer en détail dans cet article.
Supprimer gracieusement les pods Kubernetes
Tout d'abord, répertoriez tous les pods :
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
pod-delete-demo 1/1 Running 0 4s 172.16.213.196 kworker-rj2 <none> <none>
Supposons maintenant que vous souhaitiez supprimer le pod nommé "pod-delete-demo", exécutez la commande suivante :
[email protected]:~# kubectl delete pod pod-delete-demo
pod "pod-delete-demo" deleted
Confirmez que le pod en question est supprimé en listant tous les pods :
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
Vous pouvez voir qu'aucun pod pod-delete-demo n'est en cours d'exécution.
Forcer la suppression des pods Kubernetes
Pourquoi avez-vous besoin de forcer la suppression du pod ? ?
Parfois, le pod reste bloqué en terminaison/inconnu état sur un nœud inaccessible après un délai d'attente.
Les pods peuvent également entrer dans ces états lorsque l'utilisateur tente de supprimer correctement un pod sur un nœud inaccessible.
Dans ces scénarios, vous pouvez supprimer le pod de force.
Si vous souhaitez supprimer un pod de force à l'aide de la version kubectl >= 1.5, procédez comme suit :
kubectl delete pods pod_name --grace-period=0 --force
Si vous utilisez une version de kubectl <=1.4, vous devez omettre le --force
option et utilisation :
kubectl delete pods pod_name --grace-period=0
Supprimons maintenant le pod "pod-delete-demo" en utilisant la méthode ci-dessus :
[email protected]:~# kubectl delete pod pod-delete-demo --force --grace-period=0 --namespace=default
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod-delete-demo" force delete
REMARQUE : Forcer les suppressions de pod ne le fait pas attendez la confirmation du kubelet que le pod a été résilié.
Si même après ces commandes le pod est bloqué en Unknown
state, utilisez la commande suivante pour supprimer le pod du cluster :
kubectl patch pod pod-delete-demo -p '{"metadata":{"finalizers":null}}'
Confirmez que le pod a bien été supprimé :
[email protected]:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-dep-557548758d-d2pmd 1/1 Running 0 2d23h 172.16.213.194 kworker-rj2 <none> <none>
my-dep-557548758d-gprnr 1/1 Running 0 2d23h 172.16.213.49 kworker-rj1 <none> <none>
J'espère que vous trouverez cette astuce Kubernetes utile. Restez abonné pour plus de conseils et de tutoriels DevOps .
Rakesh Jain
DevOps Professionnel | RHCA | Jenkins | Gite | Docker | Kubernetes | Ansible | Prométhée | Grafane | Nuage AWS