web-dev-qa-db-fra.com

Pods bloqués au statut de fin

J'étais fatigué de supprimer un contrôleur de réplication avec 12 pods et je pouvais voir que certains des pods restaient bloqués à l'état de fin. Ma configuration Kubernetes consiste en un maître et trois minons installés dans Ubuntu VMS. Quelle pourrait être la raison de ce problème?

NAME        READY     STATUS        RESTARTS   AGE
pod-186o2   1/1       Terminating   0          2h
pod-4b6qc   1/1       Terminating   0          2h
pod-8xl86   1/1       Terminating   0          1h
pod-d6htc   1/1       Terminating   0          1h
pod-vlzov   1/1       Terminating   0          1h
124
Dimuthu

Vous pouvez utiliser la commande suivante pour supprimer le POD avec force.

kubectl delete pod NAME --grace-period = 0 --force
257
Nitin

Force la suppression du pod:

kubectl delete pod --grace-period=0 --force --namespace <NAMESPACE> <PODNAME>

L'indicateur --force est obligatoire.

43
Joan

Supprimez le bloc de finaliseurs de la ressource (pod, déploiement, ds etc ...)

"finalizers": [
  "foregroundDeletion"
]
17
Roee Rakovsky

Réponse pratique - vous pouvez toujours supprimer un pod de terminaison en lançant:

kubectl delete pod NAME --grace-period=0

Réponse historique - Il existait un problème dans la version 1.1 dans lequel les pods étaient parfois bloqués à l'état Terminating si leurs nœuds étaient supprimés du cluster de manière non propre.

10
Alex Robinson

J'ai trouvé cette commande plus simple:

for p in $(kubectl get pods | grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force;done

Il supprimera tous les pods en statut Terminating dans un espace de noms par défaut.

3
belabrinel

Dans mon cas, l'option --force n'a pas vraiment fonctionné. Je pouvais encore voir le pod! Il était bloqué en mode Terminating/Unknown. Donc après avoir couru

kubectl delete pods <pod> -n redis --grace-period=0 --force

Iran

kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}'
2
sh0umik

Je suis tombé sur cela récemment en supprimant l’espace de noms Rook Ceph - il est resté bloqué dans l’état Terminating.

La seule chose qui a aidé a été de supprimer le finalizer de kubernetes en appelant directement k8s api avec curl comme suggéré ici .

  • kubectl get namespace rook-ceph -o json > tmp.json
  • supprimer le finaliseur de kubernetes dans tmp.json (laisser le tableau vide "finalizers": [])
  • exécuter kubectl proxy dans un autre terminal à des fins d'authentification et exécuter la demande suivante de curl au port renvoyé
  • curl -k -H "Content-Type: application/json" -X PUT --data-binary @tmp.json 127.0.0.1:8001/k8s/clusters/c-mzplp/api/v1/namespaces/rook-ceph/finalize
  • l'espace de noms est parti

Démontage détaillé de la tour ceph ici .

1
zub0r

Si --grace-period=0 ne fonctionne pas, vous pouvez alors:

kubectl delete pods <pod> --grace-period=0 --force
1
Paul Ma

Je suis tombé sur cela récemment pour libérer des ressources dans mon cluster. voici la commande pour les supprimer tous. 

kubectl get pods --all-namespaces | grep Terminating | while read line; do 
pod_name=$(echo $line | awk '{print $2}' ) name_space=$(echo $line | awk 
'{print $1}' ); kubectl delete pods $pod_name -n $name_space --grace-period=0 --force; 
done

espérons que cela aide quelqu'un qui lit ceci

0
rrr

La question initiale est " Quelle peut être la raison de ce problème? " et la réponse est présentée à l'adresse https://github.com/kubernetes/kubernetes/issues/51835 & https://github.com/kubernetes/kubernetes/issues/65569 & see https://www.bountysource.com/ issues/33241128-impossibilité d'éliminer un conteneur ou une ressource occupée

Cela est dû au fait que le montage du menu fixe fuit dans un autre espace de noms.

Vous pouvez vous connecter à l'hôte pod pour enquêter.

minikube ssh
docker container ps | grep <id>
docker container stop <id> 
0
noelmcloughlin