J'ai démarré des pods avec la commande
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1
Une erreur s'est produite et je ne peux plus le supprimer Pod
.
J'ai essayé d'utiliser les méthodes décrites ci-dessous mais le Pod
continue 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
kubernetes
kubectl
yman
la source
la source
kubectl get all -o name
?kubectl get events
ce qui crée ces objets?kubctl get rc
de voir si un ReplicationController a été créé. Si tel est le cas, supprimez-le, puis supprimez les pods.kubectl get deployment
kubectl delete deployment <deployment_name>
. Pour obtenir le nom du déploiement, faiteskubectl get deployments
Réponses:
Vous devez supprimer le déploiement, ce qui devrait à son tour supprimer les pods et les jeux de répliques https://github.com/kubernetes/kubernetes/issues/24137
Pour répertorier tous les déploiements:
Ensuite, pour supprimer le déploiement:
Où NAMESPACE est l'espace de noms dans lequel il se trouve et DEPLOYMENT est celui
name
du déploiement.Dans certains cas, il peut également être en cours d'exécution en raison d'un travail ou d'un ensemble de démons. Vérifiez les éléments suivants et exécutez la commande de suppression appropriée.
la source
kubectl create
commande.kubectl get jobs
kubectl delete replicasets,subscriptions,deployments,jobs,services,pods --all -n <namespace>
Au lieu d'essayer de déterminer s'il s'agit d'un déploiement, d'un désamorçage, d'un état complet ... ou de quoi (dans mon cas, c'était un contrôleur de réplication qui continuait à couvrir de nouveaux pods :) Afin de déterminer ce qui continuait à couvrir l'image, je obtenu toutes les ressources avec cette commande:
kubectl get all
Bien sûr, vous pouvez également obtenir toutes les ressources de tous les espaces de noms:
kubectl get all --all-namespaces
ou définissez l'espace de noms que vous souhaitez inspecter:
kubectl get all -n NAMESPACE_NAME
Une fois que j'ai vu que le contrôleur de réplication était responsable de mon problème, je l'ai supprimé:
kubectl delete replicationcontroller/CONTROLLER_NAME
la source
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 réplicaset avant de supprimer le podkubectl delete replicasets.apps name-xxx
la source
kubectl delete --all jobs -n <namespace>
kubectl get replicasets.apps -n <namespace>
(ou --all-namespaces)Recherchez également les ensembles avec état
pour supprimer tous les ensembles avec état dans un espace de noms
pour les supprimer un par un
la source
Dans certains cas, les pods ne disparaîtront toujours pas même lors de la suppression du déploiement. Dans ce cas, pour forcer leur suppression, vous pouvez exécuter la commande ci-dessous.
kubectl delete pods podname --grace-period=0 --force
la source
Recreate
.Cela fournira des informations sur tous les pods, déploiements, services et travaux dans l'espace de noms.
les pods peuvent être créés par des déploiements ou des travaux
Si vous supprimez le déploiement ou le travail, le redémarrage des pods peut être arrêté.
la source
De nombreuses réponses ici indiquent de supprimer un objet k8s spécifique, mais vous pouvez supprimer plusieurs objets à la fois, au lieu d'un par un:
kubectl delete deployments,jobs,services,pods --all -n <namespace>
Dans mon cas, j'exécute un cluster OpenShift avec OLM - Operator Lifecycle Manager . OLM est celui qui contrôle le déploiement, donc lorsque j'ai supprimé le déploiement, il n'était pas suffisant d'empêcher les pods de redémarrer.
Ce n'est que lorsque j'ai supprimé OLM et son abonnement que le déploiement, les services et les pods ont disparu.
Commencez par lister tous les objets k8s dans votre espace de noms:
OLM n'est pas répertorié avec
get all
, donc je le recherche spécifiquement:Supprimez maintenant tous les objets, y compris les OLM, les abonnements, les déploiements, les jeux de réplicas, etc.:
Répertoriez les objets - tout est parti:
la source
Lorsque le pod se recrée automatiquement, même après la suppression manuelle du pod, 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. En fonction du nombre de réplicas de votre pod que vous avez mentionnés dans le script de déploiement, il créera ce nombre de pods initialement. Lorsque vous essayez de supprimer manuellement un pod, il le créera à nouveau automatiquement.
Oui, parfois vous devez supprimer les pods avec force. Mais dans ce cas, la commande de force ne fonctionne pas.
la source
Au lieu de supprimer NS, vous pouvez essayer de supprimer replicaSet
Puis supprimez le replicaSet
la source
Après avoir suivi un didacticiel interactif, je me suis retrouvé avec un tas de pods, de services, de déploiements:
Pour tout nettoyer,
delete --all
a bien fonctionné:Cela m'a laissé (ce que je pense être) un cluster Kubernetes vide:
la source
Si vous avez un travail qui continue à s'exécuter, vous devez rechercher le travail et le supprimer:
kubectl get job --all-namespaces | grep <name>
et
kubectl delete job <job-name>
la source
Vous pouvez
kubectl get replicasets
vérifier l'ancien déploiement en fonction de l'âge ou de l'heureSupprimer l'ancien déploiement en fonction de l'heure si vous souhaitez supprimer le même module d'application en cours d'exécution
la source
J'ai également rencontré le problème, j'ai utilisé la commande ci-dessous pour supprimer le déploiement.
mais les pods étaient toujours en train de recréer, j'ai donc croisé le jeu de répliques en utilisant la commande ci-dessous
puis modifiez le réplicaset de 1 à 0
la source
La cause principale de la question posée était l'attribut de spécification de déploiement / travail / réplicasets
strategy->type
qui définit ce qui doit se passer lorsque le pod sera détruit (implicitement ou explicitement). Dans mon cas, c'était le casRecreate
.Selon la réponse de @ nomad , la suppression du déploiement / du travail / des réplicasets est une solution simple pour éviter d'expérimenter des combinaisons mortelles avant de gâcher le cluster en tant qu'utilisateur novice.
Essayez les commandes suivantes pour comprendre les actions en coulisse avant de passer au débogage:
la source
Dans mon cas, j'ai déployé via un fichier YAML comme
kubectl apply -f deployment.yaml
et la solution semble être de supprimer viakubectl delete -f deployment.yaml
la source
J'ai rencontré un problème similaire: après la suppression du déploiement (
kubectl delete deploy <name>
), les pods sont restés "en cours d'exécution" et ont été automatiquement recréés après la suppression (kubectl delete po <name>
).Il s'est avéré que le jeu de réplicas associé n'était pas supprimé automatiquement pour une raison quelconque, et après avoir supprimé cela (
kubectl delete rs <name>
), il était possible de supprimer les pods.la source
Avec les déploiements qui ont des ensembles avec état (ou des services, des travaux, etc.), vous pouvez utiliser cette commande:
Cette commande met fin à tout ce qui s'exécute dans le
<NAMESPACE>
Et énergique
la source