Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete all resources from Kubernetes one time?

Tags:

kubernetes

Include:

  • Daemon Sets
  • Deployments
  • Jobs
  • Pods
  • Replica Sets
  • Replication Controllers
  • Stateful Sets
  • Services
  • ...

If has replicationcontroller, when delete some deployments they will regenerate. Is there a way to make kubenetes back to initialize status?

like image 798
online Avatar asked Nov 06 '17 01:11

online


People also ask

How do I delete all resources in default namespace?

To do a mass delete of all resources in your current namespace context, you can execute the kubectl delete command with the -all flag. To delete all resources from a specific namespace use the -n flag. To delete all resources from all namespaces we can use the -A flag.

What command do you use to delete everything on your cluster?

Instead, the resource can be targetted directly using the kubectl delete command. This method is more effective when targeting a group of resources or for deleting all resources in the cluster or a namespace.


2 Answers

Method 1: To delete everything from the current namespace (which is normally the default namespace) using kubectl delete:

kubectl delete all --all 

all refers to all resource types such as pods, deployments, services, etc. --all is used to delete every object of that resource type instead of specifying it using its name or label.

To delete everything from a certain namespace you use the -n flag:

kubectl delete all --all -n {namespace} 

Method 2: You can also delete a namespace and re-create it. This will delete everything that belongs to it:

kubectl delete namespace {namespace} kubectl create namespace {namespace} 

Note (thanks @Marcus): all in kubernetes does not refers to every kubernetes object, such as admin level resources (limits, quota, policy, authorization rules). If you really want to make sure to delete eveything, it's better to delete the namespace and re-create it. Another way to do that is to use kubectl api-resources to get all resource types, as seen here:

kubectl delete "$(kubectl api-resources --namespaced=true --verbs=delete -o name | tr "\n" "," | sed -e 's/,$//')" --all 
like image 126
victortv Avatar answered Sep 29 '22 17:09

victortv


Kubernetes Namespace would be the perfect options for you. You can easily create namespace resource.

kubectl create -f custom-namespace.yaml

$  apiVersion: v1     kind: Namespace     metadata:       name:custom-namespace 

Now you can deploy all of the other resources(Deployment,ReplicaSet,Services etc) in that custom namespaces.

If you want to delete all of these resources, you just need to delete custom namespace. by deleting custom namespace, all of the other resources would be deleted. Without it, ReplicaSet might create new pods when existing pods are deleted.

To work with Namespace, you need to add --namespace flag to k8s commands.

For example:

kubectl create -f deployment.yaml --namespace=custom-namespace

you can list all the pods in custom-namespace.

kubectl get pods --namespace=custom-namespace

like image 45
Suresh Vishnoi Avatar answered Sep 29 '22 18:09

Suresh Vishnoi