He comenzado pods con comando
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1
Algo salió mal, y ahora no puedo eliminar esto Pod
.
Intenté usar los métodos que se describen a continuación, pero se Pod
sigue recreando.
$ 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
fuente
fuente
kubectl get all -o name
?kubectl get events
qué está creando estos objetos?kubctl get rc
ver si se creó un ReplicationController. Si es así, elimine eso, luego elimine los pods.kubectl get deployment
kubectl delete deployment <deployment_name>
. Para obtener el nombre del despliegue, hagakubectl get deployments
Respuestas:
Debe eliminar la implementación, que a su vez debería eliminar los pods y los conjuntos de réplica https://github.com/kubernetes/kubernetes/issues/24137
Para enumerar todas las implementaciones:
Luego, para eliminar la implementación:
Donde NAMESPACE es el espacio de nombres en el que se encuentra, y DEPLOYMENT es el
name
de la implementación.En algunos casos, también podría estar ejecutándose debido a un trabajo o conjunto de demonios. Verifique lo siguiente y ejecute el comando de eliminación apropiado.
fuente
kubectl create
comando.kubectl get jobs
kubectl delete replicasets,subscriptions,deployments,jobs,services,pods --all -n <namespace>
En lugar de tratar de averiguar si se trata de una implementación, deamonset, statefulset ... o qué (en mi caso, era un controlador de replicación que seguía abarcando nuevos pods :) Para determinar qué era lo que seguía abarcando la imagen I Obtuve todos los recursos con este comando:
kubectl get all
Por supuesto, también puede obtener todos los recursos de todos los espacios de nombres:
kubectl get all --all-namespaces
o defina el espacio de nombres que le gustaría inspeccionar:
kubectl get all -n NAMESPACE_NAME
Una vez que vi que el controlador de replicación era responsable de mi problema, lo eliminé:
kubectl delete replicationcontroller/CONTROLLER_NAME
fuente
si su pod tiene un nombre similar
name-xxx-yyy
, podría ser controlado por replicasets.apps con nombrename-xxx
, debe eliminar ese conjunto de réplicas antes de eliminar el podkubectl delete replicasets.apps name-xxx
fuente
kubectl delete --all jobs -n <namespace>
kubectl get replicasets.apps -n <namespace>
(o --todos los espacios de nombres)Esté atento a los conjuntos con estado también
para eliminar todos los conjuntos con estado en un espacio de nombres
para eliminarlos uno por uno
fuente
En algunos casos, los pods aún no desaparecerán incluso al eliminar la implementación. En ese caso, para forzar su eliminación, puede ejecutar el siguiente comando.
kubectl delete pods podname --grace-period=0 --force
fuente
Recreate
.Esto proporcionará información sobre todos los pods, implementaciones, servicios y trabajos en el espacio de nombres.
los pods pueden ser creados por implementaciones o trabajos
Si elimina la implementación o el trabajo, se puede detener el reinicio de los pods.
fuente
Muchas respuestas aquí le indican que elimine un objeto k8s específico, pero puede eliminar varios objetos a la vez, en lugar de uno por uno:
kubectl delete deployments,jobs,services,pods --all -n <namespace>
En mi caso, estoy ejecutando el clúster OpenShift con OLM - Operator Lifecycle Manager . OLM es quien controla la implementación, por lo que cuando eliminé la implementación, no fue suficiente para detener el reinicio de los pods.
Solo cuando eliminé OLM y su suscripción , la implementación, los servicios y los pods desaparecieron.
Primero enumere todos los objetos k8s en su espacio de nombres:
OLM no aparece en la lista
get all
, por lo que lo busco específicamente:Ahora elimine todos los objetos, incluidos OLM, suscripciones, implementaciones, conjuntos de réplicas, etc.
Vuelva a enumerar los objetos, todo desapareció:
fuente
Cuando el pod se está recreando automáticamente, incluso después de la eliminación del pod de forma manual, esos pods se han creado utilizando la implementación. Cuando crea una implementación, crea automáticamente ReplicaSet y Pods. Dependiendo de cuántas réplicas de su pod ha mencionado en el script de implementación, creará esa cantidad de pod inicialmente. Cuando intente eliminar cualquier pod manualmente, creará automáticamente ese pod nuevamente.
Sí, a veces necesitas eliminar los pods con fuerza. Pero en este caso, el comando de fuerza no funciona.
fuente
En lugar de eliminar NS, puede intentar eliminar replicaSet
Luego elimine el replicaSet
fuente
Después de tomar un tutorial interactivo , terminé con un montón de pods, servicios e implementaciones:
Para limpiar todo,
delete --all
funcionó bien:Eso me dejó con (lo que creo que es) un clúster de Kubernetes vacío:
fuente
Si tiene un trabajo que continúa ejecutándose, debe buscarlo y eliminarlo:
kubectl get job --all-namespaces | grep <name>
y
kubectl delete job <job-name>
fuente
Puede
kubectl get replicasets
verificar la implementación anterior según la edad o el tiempoElimine la implementación anterior en función del tiempo si desea eliminar el mismo pod de ejecución actual de la aplicación
fuente
También me enfrenté al problema, he usado el siguiente comando para eliminar la implementación.
pero aún así las cápsulas se estaban recreando, así que crucé para verificar el conjunto de réplicas usando el comando a continuación
luego edite el conjunto de réplicas de 1 a 0
fuente
La causa raíz de la pregunta formulada fue el atributo de especificación implementación / trabajo / réplicas
strategy->type
que define lo que debe suceder cuando se destruirá el pod (ya sea implícita o explícitamente). En mi caso, lo fueRecreate
.Según @ nomad's respuesta de , eliminar los conjuntos de implementación / trabajo / réplica es la solución simple para evitar experimentar con combos mortales antes de estropear el clúster como usuario novato.
Pruebe los siguientes comandos para comprender las acciones detrás de escena antes de saltar a la depuración:
fuente
En mi caso, implementé a través de un archivo YAML como
kubectl apply -f deployment.yaml
y la solución parece ser eliminar a través dekubectl delete -f deployment.yaml
fuente
Experimenté un problema similar: después de eliminar la implementación (
kubectl delete deploy <name>
), los pods se mantuvieron "en ejecución" y se volvieron a crear automáticamente después de la eliminación (kubectl delete po <name>
).Resultó que el conjunto de réplicas asociado no se eliminó automáticamente por alguna razón, y después de eliminar eso (
kubectl delete rs <name>
), fue posible eliminar los pods.fuente
Con implementaciones que tienen conjuntos con estado (o servicios, trabajos, etc.) puede usar este comando:
Este comando termina todo lo que se ejecuta en el especificado
<NAMESPACE>
Y contundente
fuente