I have the following pods:
NAME READY STATUS RESTARTS AGE
xxx-myactivities-79f49cdfb4-nwg22 1/1 Terminating 0 10h
xxx-mysearch-55864b5c59-6bnwl 1/1 Terminating 0 1d
xxx-mysearch-55864b5c59-rpn48 1/1 Terminating 0 13h
xxx-mysearch-6ff9bbb7cb-9qgbb 1/1 Terminating 0 3d
I am running the following code to forcefully delete those pods:
#
# Clean up dying pods
#
pods=$( kubectl get pods | grep -v Running | tail -n +2 | awk -F " " '{print $1}' )
for pod in $pods;
do
kubectl delete pod $pod --force
done
Here is the output:
pod "xxx-myactivities-79f49cdfb4-nwg22" deleted
pod "xxx-mysearch-55864b5c59-6bnwl" deleted
pod "xxx-mysearch-55864b5c59-rpn48" deleted
pod "xxx-mysearch-6ff9bbb7cb-9qgbb" deleted
After cleaning up, those pods still hang around.
NAME READY STATUS RESTARTS AGE
xxx-myactivities-79f49cdfb4-nwg22 1/1 Terminating 0 10h
xxx-mysearch-55864b5c59-6bnwl 1/1 Terminating 0 1d
xxx-mysearch-55864b5c59-rpn48 1/1 Terminating 0 13h
xxx-mysearch-6ff9bbb7cb-9qgbb 1/1 Terminating 0 3d
How do I clean up those pods?
To clean the pods you need to delete their deployments namespace.
First discover that deployments existed:
$ kubectl get deployments --all-namespaces
NAME READY STATUS RESTARTS AGE
chetabahana-web-584b95d576-62ccj 1/1 Running 0 20m
tutorial-web-56fbccc56b-wbwjq 1/1 Running 0 1m
Delete the deployment <NAME>-xxxx
like this:
$ kubectl delete deployment <NAME>
For example to delete tutorial-web-56fbccc56b-wbwjq
run:
$ kubectl delete deployment tutorial
Then all corresponded pods of tutorial-xxxx
will terminate by itself.
NAME READY STATUS RESTARTS AGE
chetabahana-web-584b95d576-62ccj 1/1 Running 0 20m
tutorial-web-56fbccc56b-wbwjq 0/1 Terminating 0 1m
You have these alternatives:
kubectl delete pod xxx --now
Or
SSH into the node the stuck pod was scheduled on Running docker ps | grep {pod name}
to get the Docker Container ID Running docker rm -f {container id}
Or
kubectl delete pod NAME --grace-period=0 --force
To delete all pods in terminating state with one command do:
for p in $(kubectl get pods | grep Terminating | awk '{print $1}'); do kubectl delete pod $p --grace-period=0 --force;done
For deleting pod forcefully use this.
kubectl delete pod <Pod_Name> -n <namespace_name> --grace-period=0 --force
OR
kubectl delete pod <Pod_Name> -n <namespace_name> --wait=false
For reference please follow below link. 1. https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/
In case you used Helm to install the pod just run
helm delete Your_Deployment_Name -n The_Namespace
kubectl get pod --all-namespaces | awk '{if ($4 != "Running") system ("kubectl -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}'
you can use this command