282 votes

Les pods Kubernetes sont recréés lorsqu'ils sont supprimés.

J'ai démarré les pods avec la commande

$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1

Quelque chose s'est mal passé, et maintenant je ne peux pas supprimer ça. Pod .

J'ai essayé d'utiliser les méthodes décrites ci-dessous mais le Pod ne cesse d'être recréé.

$ kubectl delete pods  busybox-na3tm
pod "busybox-na3tm" deleted
$ kubectl get pods
NAME                                     READY     STATUS              RESTARTS   AGE
busybox-vlzh3                            0/1       ContainerCreating   0          14s

$ kubectl delete pod busybox-vlzh3 --grace-period=0

$ kubectl delete pods --all
pod "busybox-131cq" deleted
pod "busybox-136x9" deleted
pod "busybox-13f8a" deleted
pod "busybox-13svg" deleted
pod "busybox-1465m" deleted
pod "busybox-14uz1" deleted
pod "busybox-15raj" deleted
pod "busybox-160to" deleted
pod "busybox-16191" deleted

$ kubectl get pods --all-namespaces
NAMESPACE   NAME            READY     STATUS              RESTARTS   AGE
default     busybox-c9rnx   0/1       RunContainerError   0          23s

3 votes

Avez-vous réussi à créer un contrôleur de réplication en passant de mauvais arguments. Qu'obtenez-vous pour kubectl get all -o name ?

0 votes

Non, je n'avais pas créé de contrôleur de réplication jusqu'à aujourd'hui et j'ai pu le supprimer sans problème. C'est juste le pod par lui-même que j'ai créé il y a deux jours. Oh wow j'ai 2599 pod/busybox # kubectl get all -o namepod/busybox-zzt7p ... # kubectl get all -o name | wc -l 2599

1 votes

Pouvez-vous vérifier kubectl get events pour voir ce qui crée ces objets ?

510voto

nomad Points 1274

Vous devez supprimer le déploiement, ce qui devrait à son tour supprimer les pods et les ensembles de répliques. https://github.com/kubernetes/kubernetes/issues/24137

Pour lister tous les déploiements :

kubectl get deployments --all-namespaces

Ensuite, pour supprimer le déploiement :

kubectl delete -n NAMESPACE deployment DEPLOYMENT

Où NAMESPACE est l'espace de noms dans lequel il se trouve, et DEPLOYMENT est le nom du déploiement. Si NAMESPACE est default Laissez tomber le -n l'option la plus simple.

Dans certains cas, il peut également être exécuté en raison d'un travail ou d'un jeu de démons. Vérifiez les éléments suivants et exécutez la commande de suppression appropriée.

kubectl get jobs

kubectl get daemonsets.app --all-namespaces

kubectl get daemonsets.extensions --all-namespaces

1 votes

Comment ramène-t-on le déploiement après coup ?

2 votes

@Jamey, vous le créez à nouveau avec l'option kubectl create commandement.

1 votes

Il ne s'agit pas forcément d'un déploiement, mais d'un emploi. assurez-vous de vérifier également kubectl get jobs

28voto

Hieu Vo Points 378

Si votre pod a un nom comme name-xxx-yyy il pourrait être contrôlé par un replicasets.apps nommé name-xxx vous devez d'abord supprimer ce jeu de répliques avant de supprimer le pod.

kubectl delete replicasets.apps name-xxx

1 votes

Merci ! Dans mon cas, c'était un travail spécifique qui le recréait. Donc : kubectl delete --all jobs -n <namespace>

0 votes

Trouvez le jeu de répliques avec kubectl get replicasets.apps -n <namespace> (ou --all-namespaces)

15voto

M A Points 11

Attention également aux ensembles avec état

kubectl get sts --all-namespaces

pour supprimer tous les ensembles d'états dans un espace de noms

kubectl --namespace <yournamespace> delete sts --all

pour les supprimer un par un

kubectl --namespace ag1 delete sts mssql1 
kubectl --namespace ag1 delete sts mssql2
kubectl --namespace ag1 delete sts mssql3

4voto

emirhosseini Points 125

Dans certains cas, les pods ne disparaissent pas, même en supprimant le déploiement. Dans ce cas, pour les supprimer de force, vous pouvez exécuter la commande suivante.

kubectl delete pods podname --grace-period=0 --force

2 votes

Cela ne résoudra pas le problème lorsque le pod créé par le déploiement, les travaux ou tout autre type de contrôleurs si le type de stratégie est défini sur Recreate .

4voto

babs84 Points 40

Si le pod se recrée automatiquement, même après sa suppression manuelle, c'est que ces pods ont été créés à l'aide du déploiement. Lorsque vous créez un déploiement, il crée automatiquement un ReplicaSet et des pods. Selon le nombre de répliques de votre pod que vous avez mentionné dans le script de déploiement, il créera ce nombre de pods initialement. Lorsque vous essayez de supprimer un pod manuellement, il créera automatiquement ces pods à nouveau.

Oui, parfois vous devez supprimer les pods avec force. Mais dans ce cas, la commande de force ne fonctionne pas.

0 votes

J'obtiens un avertissement quand j'essaie ceci que le pod peut vivre comme un processus zombie donc ce n'était pas ce que je voulais

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X