spec services nodeselector describe create kubernetes

services - kubernetes service spec ports



Pods atascados en estado de terminaciĆ³n (10)

Elimine el bloque finalizadores del recurso (pod, implementación, ds, etc.) yaml:

"finalizers": [ "foregroundDeletion" ]

Traté de eliminar un ReplicationController con 12 pods y pude ver que algunos de los pods están atascados en el estado de Terminating .

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


En mi caso, la opción --force no funcionó del todo. ¡Todavía podía ver la cápsula! Estaba atascado en modo de terminación / desconocido. Entonces después de correr

kubectl delete pods <pod> -n redis --grace-period=0 --force

corrí

kubectl patch pod <pod> -p ''{"metadata":{"finalizers":null}}''


Encontré este comando más sencillo:

for p in $(kubectl get pods | grep Terminating | awk ''{print $1}''); do kubectl delete pod $p --grace-period=0 --force;done

Eliminará todos los pods en estado de terminación en el espacio de nombres predeterminado.


Forzar la eliminación del pod:

kubectl delete pod --grace-period=0 --force --namespace <NAMESPACE> <PODNAME>

La bandera --force es obligatoria.


La pregunta original es " ¿Cuál podría ser la razón de este problema? " Y la respuesta se discute en 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.

minikube ssh docker container ps | grep <id> docker container stop <id>


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 here .

  • kubectl get namespace rook-ceph -o json > tmp.json
  • elimine el finalizador de tmp.json en tmp.json (deje la matriz vacía "finalizers": [] )
  • ejecute el kubectl proxy en otro terminal para fines de autenticación y ejecute la siguiente solicitud curl al puerto devuelto
  • curl -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
  • el espacio de nombres se ha ido

Desmontaje detallado de ceph de torre here .


Me topé con esto recientemente para liberar recursos en mi clúster. Aquí está el comando para eliminarlos a todos.

kubectl get pods --all-namespaces | grep Terminating | while read line; do pod_name=$(echo $line | awk ''{print $2}'' ) name_space=$(echo $line | awk ''{print $1}'' ); kubectl delete pods $pod_name -n $name_space --grace-period=0 --force; done

Espero que esto ayude a alguien que lea esto


Puede usar el siguiente comando para eliminar el POD con fuerza.

kubectl delete pod <PODNAME> --grace-period=0 --force --namespace <NAMESPACE>


Respuesta práctica: siempre puede eliminar un pod de terminación ejecutando:

kubectl delete pod NAME --grace-period=0

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 no limpia del clúster.


Si --grace-period=0 no funciona, puede hacer lo siguiente:

kubectl delete pods <pod> --grace-period=0 --force