Pique #29: Cómo eliminar de manera masiva Pods en un específico estado en Kubernetes

El fin de semana, mientras revisaba unos nodos de K3s, porque necesitaba desplegar un Grafana para dar un Training, noté que uno de ellos estaba inconsistente, lo reinicié y volvió, pero el master de Kubernetes quedó colgado tratando de terminar cientos de pods, que alguna vez intentó schedulear en ese nodo, pero que nunca logró hacerlo.

Borrar Pod por Pod, no era para nada viable, porque eran un montón, eran tantos que cada vez que los listaba, perdía la cantidad de líneas en la terminal.

Así que para no darle vuelta al asunto, me puse a escribir un truco, para terminar de manera forzosa, todos los Pods que tuvieran el estado "Terminating".

El comando, quedó de esta manera:

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

Lo siguiente que sucedió, lo pueden ver en este tweet al cual atache un video, mostrando cómo corría ese comando. En mi caso, después de unos 10 minutos más o menos, los nodos, quedaron limpios y pude schedulear los pods en el nodo que correspondían nuevamente.

Así que ya sabes, si querés eliminar de manera masiva, cantidades de pods u otro recurso en Kubernetes, podés usar este "script" y ajustarlo a tus necesidades.

Foto de Portada: Max Williams en Unsplash