Traté de eliminar un ReplicationControllercon 12 pods y pude ver que algunos de los pods están atascados en el Terminatingestado.
Mi clúster Kubernetes consta de un nodo de plano de control y tres nodos de trabajo instalados en máquinas virtuales Ubuntu.
¿Cuál podría ser la razón de este problema?
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
fuente
fuente

Respuestas:
Puede usar el siguiente comando para eliminar el POD con fuerza.
fuente
--forcehacer que las vainas se terminenForzar la eliminación del pod:
La
--forcebandera es obligatoria.fuente
kube-systemespacio de nombres.ktl get pods -o custom-columns=:metadata.name | xargs kubectl delete pod --force --grace-period=0Elimine el bloque de finalizadores del recurso (pod, implementación, ds, etc.) yaml:
fuente
delete -grace-period=0 --forceno lo hizo. Sin embargo, también agradecería algunos detalles sobre qué hace exactamente.Respuesta práctica: siempre puede eliminar un pod de terminación ejecutando:
Respuesta histórica: hubo un problema en la versión 1.1 en el que a veces las vainas se quedan varadas en el estado de terminación si sus nodos se eliminan de forma sucia del clúster.
fuente
kubectl delete pod NAME --grace-period=0kubectl delete ...unaSIG_TERMsolicitud se enviará al contenedor. Pero, ¿qué pasa si después del período de gracia, el contenedor aún se está ejecutando? Tengo un montón de pods atascadosTerminating, algunos escritos en go, otros en nodejs. El replicationController se eliminó y el contenedor aún se está ejecutandokubectl delete pod PODNAME --grace-period=0trabajó para mí como lo sugirió Clayton.Encontré este comando más sencillo:
Eliminará todos los pods en estado de terminación en el espacio de nombres predeterminado.
fuente
kube-systemuso: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;doneEn mi caso, la
--forceopción no funcionó del todo. ¡Todavía podía ver la cápsula! Estaba atascado en modo de terminación / desconocido. Entonces después de correrYo corri
fuente
Si
--grace-period=0no funciona, puede hacer:fuente
Me topé con esto recientemente cuando eliminé el espacio de nombres ceph de la torre; se quedó atascado en el estado de terminación.
Lo único que ayudó fue eliminar el finalizador de kubernetes llamando directamente a la api k8s con curl como se sugiere aquí .
kubectl get namespace rook-ceph -o json > tmp.jsontmp.json(dejar matriz vacía"finalizers": [])kubectl proxyen otro terminal para fines de autenticación y ejecutar la siguiente solicitud de curl al puerto devueltocurl -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/finalizeDesmontaje detallado de ceph de torre aquí .
fuente
La pregunta original es " ¿Cuál podría ser la razón de este problema? " Y la respuesta se discute en https://github.com/kubernetes/kubernetes/issues/51835 y https://github.com/kubernetes/kubernetes/issues / 65569 y consulte https://www.bountysource.com/issues/33241128-unable-to-remove-a-stopped-container-device-or-resource-busy
Es causado por el montaje de Docker que se filtra en algún otro espacio de nombres.
Puede iniciar sesión en el host del pod para investigar.
fuente
Me topé con esto recientemente para liberar recursos en mi clúster. Aquí está el comando para eliminarlos a todos.
Espero que esto ayude a alguien que lea esto
fuente