Traté de eliminar un ReplicationController
con 12 pods y pude ver que algunos de los pods están atascados en el Terminating
estado.
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
--force
hacer que las vainas se terminenForzar la eliminación del pod:
La
--force
bandera es obligatoria.fuente
kube-system
espacio de nombres.ktl get pods -o custom-columns=:metadata.name | xargs kubectl delete pod --force --grace-period=0
Elimine el bloque de finalizadores del recurso (pod, implementación, ds, etc.) yaml:
fuente
delete -grace-period=0 --force
no 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=0
kubectl delete ...
unaSIG_TERM
solicitud 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=0
trabajó 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-system
uso: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
En mi caso, la
--force
opció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=0
no 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.json
tmp.json
(dejar matriz vacía"finalizers": []
)kubectl proxy
en 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/finalize
Desmontaje 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