DEV Community

Cover image for 12 Kubectl Commands to Master Kubernetes Deployments
Sha Md Nayeem
Sha Md Nayeem

Posted on • Originally published at cloudifydevops.com on

12 Kubectl Commands to Master Kubernetes Deployments

The kubectl command-line tool is the main interface for interacting with Kubernetes, a robust platform for managing containerized applications. You may create, update, and manage resources, such as pods, services, and deployments, in a Kubernetes cluster using kubectl.

In this article, we'll look at the 12 kubectl commands that any Kubernetes administrator needs to be familiar with. These commands will help you master Kubernetes, from managing and debugging apps to creating and updating resources. This article will provide you a thorough overview of the most important kubectl commands, whether you're an experienced Kubernetes user or you're just getting started.

1. kubectl cluster-info

This command provides information about the current state of your Kubernetes cluster, including the API server address, the cluster state, and the versions of the components that make up your cluster.

kubectl cluster-info

Enter fullscreen mode Exit fullscreen mode

2. kubectl version

This command displays the version of kubectl that is currently installed on your system, as well as the version of the Kubernetes cluster that it is connected to.

kubectl version

Enter fullscreen mode Exit fullscreen mode

3. kubectl get

This command will provide a list of resources available in your Kubernetes cluster. There are several types of resources:

  • Namespace

  • Deployment

  • Pod

  • Node

  • Service

  • ReplicaSets.

kubectl get all

Enter fullscreen mode Exit fullscreen mode

This command will give the list of all of those available resources in your cluster. To pull a list of a specific resource, you need to use the following command in your terminal.

kubectl get deployment

Enter fullscreen mode Exit fullscreen mode

For a specific namespace:

kubectl get deployment -n namespace

Enter fullscreen mode Exit fullscreen mode

Here, -n is the short form of the flag -namespace. If you don't use any specific namespace, then kubectl get deployment command will return the deployment list from the "default"/current namespace. A namespace is a Kubernetes object that separates a single physical Kubernetes cluster into numerous virtual clusters.

Similarly, If you need to fetch the list of all the pods in a namespace, you can use this command:

kubectl get pods -o wide

Enter fullscreen mode Exit fullscreen mode

here, "-o wide" flag is providing more details about the pod.

So, with this kubectl get command, we can also fetch the list of Node, Namespace, ReplicaSets and Service

4. kubectl Create

The Kubernetes command kubectl create is used to add new resources to a cluster. Users can build resources like pods, services, and deployments using this commands. Here's an illustration of how to build a new deployment using kubectl create:

kubectl create deployment my-nginx --image=nginx

Enter fullscreen mode Exit fullscreen mode

With this command, a new deployment named will my-nginx will be created using the nginx image.

Here is another example of how to create a new cronjob with this command:

kubectl create job my-cronjob --schedule="*/5 * * * *" --image=busybox -- command -- args="echo This is a cron job!"

Enter fullscreen mode Exit fullscreen mode

With this command:

  • A new CornJob will be created named my-cornjob which will be running in busybox container

  • An echo command will be repeated every 5 minutes

  • --schedule flag specifies the schedule for the job in cron syntax

  • "*/5 " means to run the job every 5 minutes

  • --image flag specifies which container it should run

  • --command flag is used to specify which command it should run inside the container.

With Kubernetes' CronJobs functionality, you can automate recurring processes like database backups, log rotations, and more.

5. kubectl edit

With this kubectl edit command, you can edit an existing resource in a cluster. You can modify a resource's configuration in a text editor using kubectl edit, which eliminates the need for you to manually generate a new YAML file.

Here's an illustration of how to change a deployment using kubectl edit:

kubectl edit deployment my-nginx

Enter fullscreen mode Exit fullscreen mode

This command starts a text editor and opens the my-nginx deployment. When you make changes to the deployment's configuration and save the file, the cluster's deployment will be updated.

6. kubectl delete

kubectl delete command will help you to delete any resources such as pod, deployment, service, cornjob in your Kubernetes cluster. So, never just remove anything without knowing everything you need to know about it. Think carefully before executing this command since once the resource is deleted, it cannot be recovered; you must reconstruct it.

kubectl delete deployment my-nginx

Enter fullscreen mode Exit fullscreen mode

7. kubectl apply

The Kubernetes command kubectl apply enables you to create or modify resources in a cluster. Kubectl apply creates or modifies the resource in the cluster to match the configuration by reading the resource's configuration from a file or from standard input.

kubectl apply -f deployment.yaml

Enter fullscreen mode Exit fullscreen mode

Here, kubectl apply command reads a deployment configuration from a file named deployment.yaml and creates a new deployment in the cluster depending on that configuration file. In case, if there will be a file existed on that name, then this command will update that configuration file.

8. kubectl config

In Kubernetes, the command kubectl config allows you to manage the configuration for a kubectl client. The config command can be used to view, edit, or switch between multiple cluster configurations, as well as to manage user credentials and context settings.

Set a Current Namespace

If you are working on a specific namespace, then every time typing a namespace in each command is a hassle. To overcome this, you can set that namespace as a current namespace.

Here is an example of how to set up a current namespace:

kubectl config set-context --current --namespace=NAMESPACE

Enter fullscreen mode Exit fullscreen mode

kubectl config set-context is a command in Kubernetes that allows you to modify the context of a kubectl configuration. The context defines the cluster, user, and namespace that kubectl commands operate. In this example, this command will set the current namespace as "NAMESPACE".

Set Current Context

A context is defined as a named group of clusters and user credentials in the Kubernetes cluster. To set a context, you need to execute the following command:

kubectl config use-context docker-desktop

Enter fullscreen mode Exit fullscreen mode

In this example, this command is used to switch the current context in the kubectl configuration to the docker-desktop context. So, kubectl commands can interact with the cluster running on docker-desktop. You can also use minikube instead of docker-desktop if you want to interact with the cluster running on minikube.

You can check the current context by running this command:

kubectl config current-context

Enter fullscreen mode Exit fullscreen mode

9. kubectl describe

kubectl describe is a useful tool for monitoring and debugging your Kubernetes cluster. It offers a quick approach to obtaining comprehensive information about a resource, making it simpler to understand the resource's current state and spot any problems. It shows details about a resource's status, events, and metadata.

Here is an example:

kubectl describe deployment my-nginx

Enter fullscreen mode Exit fullscreen mode

With this command, you can get details information on my-nginx deployment which includes the status of the deployment, the events that have occurred, and the metadata associated with the deployment.

10. kubectl logs

You may get the logs of a container in a pod using the Kubernetes command kubectl logs. The logs can be used to track down problems with a container or to troubleshoot problems with it.

Here's an example of how you can use kubectl logs

kubectl logs my-pod

Enter fullscreen mode Exit fullscreen mode

If there will be multiple containers in a pod, we can get the log of a specific container this way:

kubectl logs my-pod -c my-container

Enter fullscreen mode Exit fullscreen mode

Here, -c is an option that specifies the name of the container from where you want to retrieve the logs.

11. kubectl exec

You can execute a command in a running container of a pod using the Kubernetes command kubectl exec. It is helpful for debugging, troubleshooting, and monitoring the status of an application.

Here's an illustration of how kubectl exec might be used:

kubectl exec -it pod-name -- bash

Enter fullscreen mode Exit fullscreen mode

In this example, kubectl exec is used to launch a bash shell in the container of the specified pod. The -it flag is used to attach to the shell and interact with it.

If you have multiple containers in a pod, you can use the following command:

kubectl exec -it pod_name -c container_name bash

Enter fullscreen mode Exit fullscreen mode

In this example, -c is used to specify the container name where the shell command will be executed.

12. kubectl cp

In Kubernetes, the command kubectl cp allows you to copy files and directories between a local file system and a container in a pod, or between two containers in the same pod. This can be useful for transferring files between the host and containers, or for copying files between containers within a pod.

kubectl cp <local-file-path> <pod-name>:<container-destination-path>

Enter fullscreen mode Exit fullscreen mode

In this example:

  • kubectl cp is used to copy a local file to a container in a pod.

  • local-file-path specifies the path to the file on the local file system.

  • pod-name and container-destination-path specify the destination of the file within the container.

Conclusion

With that, we have come to the end of this discussion on the 12 kubectl commands for mastering Kubernetes deployments. Please keep in mind that these are not the only kubectl command and there are many more Kubernetes concepts and kubectl commands to investigate.


I appreciate you taking the time to read this. If you do have still some confusion regarding this article, please let me know in the comments! Also, If you liked this article, consider following me for my latest publications and also follow me on Medium Twitter & LinkedIn.

Top comments (0)