Kubernetes - Kubectl Delete
Last Updated :
16 Oct, 2024
Kubernetes is an open-source Container Management tool that automates container deployment, container scaling, descaling, and container load balancing (also called a container orchestration tool). It is written in Golang and has a huge community because it was first developed by Google and later donated to CNCF (Cloud Native Computing Foundation).
What is Kubectl Delete?
kubectl delete
is a command used in Kubernetes to remove resources from a cluster. This command is part of the kubectl
command-line tool, which is the primary interface for interacting with Kubernetes clusters. kubectl delete is used to delete resources by using a configuration file or by using the type of resource and the resource name.
kubectl delete ([-f FILENAME] | TYPE [(NAME | --all)])
- Delete by Configuration File (
-f FILENAME
):-f FILENAME
: Specifies a configuration file containing the resource definition(s) to be deleted.- This mode allows you to delete resources defined in a YAML or JSON file. You provide the path to the file after the
-f
flag, and kubectl
deletes the resources defined in that file.
- Delete by Resource Type and Name (
TYPE [(NAME | --all)]
):TYPE
: Specifies the type of resource to be deleted (e.g., deployment, service, pod, etc.).NAME
: Optionally, specifies the name of the specific resource instance to be deleted.--all
: Deletes all instances of the specified resource type across namespaces.
Example: Suppose we are having Nginx web server deployment and Service running.
This is the nginx service manifest file.
Here is the all running resources on the default namespace. Refer the below image for your reference.
Deleting Deployment
To delete the resources in Kubernetes, the kubectl delete command provides the flexibility. We can delete resources by specifying a configuration file or directly by resource type and name. For instance, to delete a Deployment named deployment_name, you execute the below command:
$ kubectl delete deployment deployment_name
Alternatively, you can also point your terminal to the file containing the deployment config file and use the command
$ kubectl delete -f your_config_file.yaml
Deleting Service
The same principle applies to deleting Services. To delete a Service named service_name
, you use:
$ kubectl delete service service_name
Alternatively, you can also point your terminal to the file containing the deployment config file and use the command
$ kubectl delete -f your_config_file.yaml
Delete All Pods in All Namespaces
Deleting Pods Across All Namespaces: Use the kubectl delete pods
command with the --all
flag to indicate delete the all pods in your cluster.
kubectl delete pods --all
Excluding System Pods: Since deleting system the pods might destabilize the cluster, it's prudent to exclude them. Instead of delete the pods in the kube-system
namespace, explicitly delete deployments across all namespaces, except for critical system deployments.
kubectl delete deploy --all -A
Excluding Kubernetes System Namespaces With a for Loop
Suppose that you are assigned the task of managing a Kubernetes cluster's regular maintenance. The goal is to eliminate obsolete deployments and pods from different namespaces while preserving the confidentiality of the system namespaces. Let us see how you can successfully accomplish this.
Deleting Pods Across Non-System Namespaces: You can start by executing a series of commands orchestrated through a loop.
for ns in $(kubectl get namespaces -o name | grep -v kube- | cut -c 11-);
do
kubectl delete pods --all -n $ns;
done
Here's what each step accomplishes:
- Retrieve Namespace List: You receive a list for each namespace in the cluster through the use of kubectl.
- Exclude System Namespaces: To be sure only those with user-defined namespaces are taken into thought, use grep to filter out any namespaces beginning with "kube-."
- Refine Output: With cut, extra characters have been eliminated from each line ensuring the names of non-system namespaces are the only characters left.
- Iterate and Delete: You traverse each non-system namespace in a for loop and execute kubectl delete pods --all -n $ns to eliminate every pod within each namespace.
This streamlined approach safeguards system namespaces from accidental modifications while automates the cleanup process.
Deleting Deployments Across Non-System Namespaces: In the same way, you use the same procedure to deployment removal.
for ns in $(kubectl get namespaces -o name | grep -v kube- | cut -c 11-);
do
kubectl delete deploy --all -n $ns;
done
Throughout iteration through non-system namespaces, with each iteration which includes kubectl delete deploy --all -n $ns, you can swiftly eliminate outdated deployments and preserve cluster hygiene without interfering with critical system components.
Delete All Pods in One Namespace
We can use the kubectl delete command with the --all flag and the -n flag to specify the namespace so as to remove all pods within this namespace. This is the instructions:
kubectl delete pods --all -n your-namespace
Put the name of the namespace from which you want to eliminate all pods in instead of your-namespace. Regardless of their status or labels, each pod in the specified namespace will be deleted with this command.
Delete All Pods in Multiple Namespaces
We can use a single kubectl command with the --all-namespaces flag and pods as the resource type to be demolished to delete all pods in all namespaces. This command speeds up the cleanup process by destroying all pods across all specified namespaces simultaneously. Before executing the command, make sure you have the appropriate permissions to avoid unanticipated results.
kubectl delete pods --all -n namespace1 -n namespace2 -n namespace3
The names of the namespaces from which you wish to remove all pods ought to be substituted for namespace1, namespace2, namespace3, etc. Each pod within each namespace that has been provided is going to be deleted by this command.
Delete Pods Forcefully
Utilizing the kubectl get rid of command when combined with the --grace-period=0 parameter allows you to swiftly destroy pods in Kubernetes. With a zero-second grace time provided by this flag, here will be no waiting period until pods end gracefully. Here's how to achieve it:
kubectl delete pods --all --grace-period=0 --force
With this command, each pod in the current namespace will be forcefully removed. The -n contention can be utilized to denote the namespace if you want to get rid of pods from that namespace:
kubectl delete pods --all --grace-period=0 --force -n your-namespace
Enter the name of the namespace from which you wish to delete all pods in place of your-namespace.
Delete All Resources in All Namespaces
Removing every resource in every namespaces is an extreme step that could have significant consequences. In the case that you must move on, here's how to use kubectl to do it:
kubectl delete all --all --all-namespaces
This command will remove all resources (pods, deployments, services, etc.) in all namespaces. Make sure you completely understand the implications of continuing, as this move will affect all of the services and apps running within your Kubernetes cluster. Check you have enough privileges before running this command, and think about making backups or contacting your team to confirm.
Delete All Resources in One Namespace
To delete all resources in a specific namespace in Kubernetes, you can use the following kubectl
command:
kubectl delete all --all -n your-namespace
To remove all resources, replace your-namespace with the name of the namespace. All resources (pods, deployments, services, etc.) within the specified namespace will be removed by this command.
Delete All Resources in Multiple Namespaces
To delete all resources in multiple namespaces in Kubernetes, you can execute the following command:
kubectl delete all --all -n namespace1 -n namespace2 -n namespace3
The names of the namespaces from which you want to eliminate all resources must be replaced for namespace1, namespace2, namespace3, etc. All resources (pods, deployments, services, etc.) within each namespace which is given will be destroyed by this command.
Similar Reads
Kubernetes - Kubectl
Kubectl is a command-line software tool that is used to run commands in command-line mode against the Kubernetes Cluster. Kubectl runs the commands in the command line, Behind the scenes it authenticates with the master node of Kubernetes Cluster with API calls and performs the operations on Kuberne
12 min read
Kubernetes - Kubectl Commands
Pre-requisites: Kubernetes The Kubernetes command-line tool, kubectl, allows you to run commands against Kubernetes clusters. You can use kubectl to deploy applications, inspect and manage cluster resources, and view logs. Some basic Kubectl commands in a Kubernetes cluster are as follows:kubectl Co
5 min read
Kubernetes - Kubectl Create and Kubectl Apply
Kubernetes is an open-source Container Orchestrating software platform that is widely used in modern application deployment and management. It comes up with many internal resources to manage the other working nodes Organizing as a Cluster facilitates seamless automatic scaling, and deployment update
8 min read
Kubernetes Cluster
A group of nodes (Computers/Operating systems) working together to communicate with the help of Kubernetes software is known as the Kubernetes cluster. It works in a mechanism in such a way that it performs actions on the worker node with the help of the manager node. Need for a Kubernetes ClusterIn
6 min read
What is Kubelet in Kubernetes?
A Kubelet in Kubernetes is a crucial component of the primary node agent that runs on each node. It assists with container management and orchestration within a Kubernetes cluster. Kubelet supports communication between the Kubernetes control plane and individual nodes and it also enables the effici
4 min read
What is Kubernetes Deployment?
Kubernetes is an open-source Container Management tool that automates container deployment, container scaling, descaling, and container load balancing (also called as container orchestration tool). It is written in Golang and has a huge community because it was first developed by Google and later do
10 min read
Kubernetes - Architecture
Kubernetes Cluster mainly consists of Worker Machines called Nodes and a Control Plane. In a cluster, there is at least one worker node. The Kubectl CLI communicates with the Control Plane and the Control Plane manages the Worker Nodes. In this article, we are going to discuss in detail the architec
5 min read
Docker - Kubernetes Architecture
Pre-requisite: Docker and Kubernetes Docker and Kubernetes are two of the most popular tools in the field of containerization and cluster management, respectively. In this article, we will understand how Docker and Kubernetes work together to provide a seamless experience for developers and operator
4 min read
Kubernetes vs Docker
In the world of containerization both the tools server as vital tools with respective their features. Docker is a platform for containerization, while Kubernetes manages containers for numerous container runtimes. There is various container runtimes supported by Kubernetes, some of those are as foll
11 min read
Google Kubernetes Engine
Pre-requisite: Google Cloud Platform This article intends to provide an introduction to the Google Kubernetes Engine(GKE). Google Kubernetes Engine is a fully-managed service for running and managing containerized applications on the Google Cloud Platform. GKE is based on Kubernetes, an open-source
6 min read