Command to delete all pods in all kubernetes namespaces
Mia Lopez
Upon looking at the docs, there is an API call to delete a single pod, but is there a way to delete all pods in all namespaces?
16 Answers
There is no command to do exactly what you asked.
Here are some close matches.
Be careful before running any of these commands. Make sure you are connected to the right cluster, if you use multiple clusters. Consider running. kubectl config view first.
You can delete all the pods in a single namespace with this command:
kubectl delete --all pods --namespace=fooYou can also delete all deployments in namespace which will delete all pods attached with the deployments corresponding to the namespace
kubectl delete --all deployments --namespace=fooYou can delete all namespaces and every object in every namespace (but not un-namespaced objects, like nodes and some events) with this command:
kubectl delete --all namespacesHowever, the latter command is probably not something you want to do, since it will delete things in the kube-system namespace, which will make your cluster not usable.
This command will delete all the namespaces except kube-system, which might be useful:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do kubectl delete ns $each
done 9 kubectl delete daemonsets,replicasets,services,deployments,pods,rc,ingress --all --all-namespacesto get rid of them pesky replication controllers too.
4You can simply run
kubectl delete all --all --all-namespacesThe first
allmeans the common resource kinds (pods, replicasets, deployments, ...)kubectl get all == kubectl get pods,rs,deployments, ...
The second
--allmeans to select all resources of the selected kinds
Note that all does not include:
- non namespaced resourced (e.g., clusterrolebindings, clusterroles, ...)
- configmaps
- rolebindings
- roles
- secrets
- ...
In order to clean up perfectly,
- you could use other tools (e.g., Helm, Kustomize, ...)
- you could use a namespace.
- you could use labels when you create resources.
You just need sed to do this:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'Explains:
- use command
kubectl get pods --all-namespacesto get the list of all pods in all namespaces. - use
--no-headers=trueoption to hide the headers. - use
scommand ofsedto fetch the first two words, which representnamespaceandpod's namerespectively, then assemble thedeletecommand using them. - the final
deletecommand is just like:kubectl --namespace kube-system delete pod heapster-eq3yw. - use the
emodifier ofscommand to execute the command assembled above, which will do the actualdeleteworks.
To avoid delete pods in kube-system namespace, just need to add grep -v kube-system to exclude kube-system namespace before the sed command.
K8s completely works on the fundamental of the namespace. if you like to release all the resource related to specified namespace.
you can use the below mentioned :
kubectl delete namespace k8sdemo-app I tried commands from listed answers here but pods were stuck in terminating state.
I found below command to delete all pods from particular namespace if stuck in terminating state or you are not able to delete it then you can delete pods forcefully.
kubectl delete pods --all --grace-period=0 --force --namespace namespaceHope it might be useful to someone.
Delete all PODs in all Namespace only (restart deployment)
kubectl get pod -A -o yaml | kubectl delete -f - steps to delete pv:
delete all deployment and pods or resources related to that PV
kubectl delete --all deployment -n namespace kubectl delete --all pod -n namespaceedit pv
kubectl edit pv pv_name -n namespace removedelete pv
kubectl delete pv pv_name -n namespace
Here is a one-liner that can be extended with grep to filter by name.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {} 1 You can use kubectl delete pods -l dev-lead!=carisa or what label you have.
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A 1 If you already have pods which are recreated, think to delete all deployments first
kubectl delete -n *NAMESPACE deployment *DEPLOYMENTJust replace the NAMSPACE and the DEPLOYMENT to corresponding ones, you can get all deployments information by the following command
kubectl get deployments --all-namespaces Kubectl bulk (bulk-action on krew) plugin may be useful for you, it gives you bulk operations on selected resources. This is the command for deleting pods
' kubectl bulk pods -n namespace delete 'You could check details in this
I create a python code to delete all in namespace
delall.py
import json,sys,os;
obj=json.load(sys.stdin);
for item in obj["items"]: os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")and then
kubectl get all -n kong -o json | python delall.py If you have multiple pod which are crashing or error and you want to delete them
kubectl delete pods --all -n | gep
It was hinted at above, but I just thought I would helpfully point out that the shortcut for "--all-namespaces" is "-A" that's with a capital A. HTH somebody. I've opened a PR to have this helpful hint added to the official Kubernetes Cheat Sheet.