J'ai essayé de supprimer un ReplicationController
avec 12 pods et j'ai pu voir que certains pods étaient bloqués Terminating
.
Mon cluster Kubernetes se compose d'un nœud de plan de contrôle et de trois nœuds de travail installés sur les machines virtuelles Ubuntu.
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
kubernetes
Dimuthu
la source
la source
Réponses:
Vous pouvez utiliser la commande suivante pour supprimer le POD avec force.
la source
--force
obtenir la terminaison des pods.Forcer la suppression du pod:
Le
--force
drapeau est obligatoire.la source
kube-system
espace de noms.ktl get pods -o custom-columns=:metadata.name | xargs kubectl delete pod --force --grace-period=0
Supprimez le bloc des finaliseurs de la ressource (pod, déploiement, ds etc ...) yaml:
la source
delete -grace-period=0 --force
n'était pas le cas. J'apprécierais également quelques précisions sur ce que cela fait exactement, cependant.Réponse pratique - vous pouvez toujours supprimer un module de terminaison en exécutant:
Réponse historique - Il y avait un problème dans la version 1.1 où parfois les pods étaient bloqués dans l'état Terminating si leurs nœuds étaient mal nettoyés du cluster.
la source
kubectl delete pod NAME --grace-period=0
kubectl delete ...
uneSIG_TERM
demande sera envoyée au conteneur. Mais que se passe-t-il si après la période de grâce, le conteneur fonctionne toujours? J'ai un tas de pods coincésTerminating
, certains écrits en go, certains en nodejs. Le replicationController a été supprimé et le conteneur est toujours en cours d'exécutionkubectl delete pod PODNAME --grace-period=0
travaillé pour moi comme suggéré par Clayton.J'ai trouvé cette commande plus simple:
Il supprimera tous les pods en état de terminaison dans l'espace de noms par défaut.
la source
kube-system
use:for p in $(kubectl get pods -n kube-system| grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force -n kube-system;done
Dans mon cas, l'
--force
option n'a pas vraiment fonctionné. Je pouvais toujours voir le pod! Il était bloqué en mode Terminaison / Inconnu. Donc, après avoir couruL'Iran
la source
Si cela
--grace-period=0
ne fonctionne pas, vous pouvez faire:la source
Je suis tombé sur cela récemment lors de la suppression de l'espace de noms Rook Ceph - il est resté bloqué dans l'état Terminating.
La seule chose qui a aidé était de supprimer le finaliseur kubernetes en appelant directement l'api k8s avec curl comme suggéré ici .
kubectl get namespace rook-ceph -o json > tmp.json
tmp.json
(laisser un tableau vide"finalizers": []
)kubectl proxy
dans un autre terminal à des fins d'authentification et s'exécuter après la demande de boucle vers le 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
Détection détaillée de la tour de ceph ici .
la source
La question d'origine est « Quelle pourrait être la raison de ce problème? » Et la réponse est discutée sur https://github.com/kubernetes/kubernetes/issues/51835 & https://github.com/kubernetes/kubernetes/issues / 65569 & voir https://www.bountysource.com/issues/33241128-unable-to-remove-a-stopped-container-device-or-resource-busy
Son causé par le montage de docker qui fuit dans un autre espace de noms.
Vous pouvez vous connecter à l'hôte pod pour enquêter.
la source
Je suis tombé dessus récemment pour libérer des ressources dans mon cluster. voici la commande pour les supprimer tous.
j'espère que cela aide quelqu'un qui a lu ceci
la source