Advanced kubectl commands for experienced Kubernetes users

Are you a seasoned Kubernetes user looking to level up your command line skills? Have you mastered the basic kubectl commands and want to expand your knowledge to include some more advanced techniques? Then this article is for you!

In this guide, we'll cover some of the more powerful and challenging kubectl commands that can help you manage complex Kubernetes deployments with ease. From node management to secret management to troubleshooting, we'll explore it all.

So, let's dive in!

Node Management

Managing nodes is a critical task for any Kubernetes administrator. Here are some advanced kubectl commands to help you do just that.

1. Drain a Node

When you need to take a node offline for maintenance or other reasons, draining the node first ensures that no new workloads are scheduled on that node. This helps prevent service disruptions and ensures that workloads are properly rescheduled on other nodes.

To drain a node, use the following command:

kubectl drain <node-name>

This will mark the node as unschedulable and then gracefully evict any running pods from the node. Once all the pods have been evicted, the node will be ready for maintenance.

2. Cordon a Node

If you just need to temporarily mark a node as unschedulable without draining it, you can use the cordon command. This is useful when you need to perform quick maintenance without disrupting running pods.

To cordon a node, use the following command:

kubectl cordon <node-name>

This will prevent any new pods from being scheduled on the node. Existing pods will continue to run until they are terminated or migrated to another node.

3. Uncordon a Node

Once you're done with maintenance on a node that you've cordoned, you can mark it as schedulable again with the uncordon command.

To uncordon a node, use the following command:

kubectl uncordon <node-name>

This will remove the unschedulable flag from the node and allow new pods to be scheduled on it again.

Secret Management

Kubernetes secrets are a way to store and manage sensitive information, such as passwords, API keys, and tokens. Here are some kubectl commands to help you manage your secrets more effectively.

1. Create a Secret

To create a secret, you can use the kubectl create secret command. Here's an example of creating an SSH key secret:

kubectl create secret generic ssh-key --from-file=id_rsa=/path/to/id_rsa

This will create a secret named ssh-key with two data items - the private and public SSH keys. You can then reference this secret in your pod specification to mount the keys as a volume.

2. List Secrets

To list all the secrets in your cluster, use the kubectl get secrets command:

kubectl get secrets

This will display a list of all the secrets in your cluster, along with their types, ages, and other metadata.

3. Delete a Secret

To delete a secret, use the kubectl delete secret command. Here's an example of deleting the ssh-key secret we created earlier:

kubectl delete secret ssh-key

This will delete the ssh-key secret and all its associated data from your cluster.


Sometimes things go wrong in your Kubernetes cluster, and you need to troubleshoot the problem. Here are some kubectl commands that can help you diagnose issues and fix them.

1. View Pod Logs

When a pod is misbehaving, one of the first things you'll want to do is view its logs. You can do this with the kubectl logs command.

To view the logs of a single container in a pod, use the following command:

kubectl logs <pod-name> -c <container-name>

This will display the logs for the specified container in the specified pod.

2. Describe Pods, Services, and Deployments

Another useful command for troubleshooting is kubectl describe. This command provides detailed information about a pod, service, deployment, or any other Kubernetes resource.

To describe a pod, use the following command:

kubectl describe pod <pod-name>

This will display detailed information about the specified pod, including its status, containers, volumes, and more.

3. Run a Debugging Container

If you're having trouble debugging a pod, you can use the kubectl debug command to run a container with additional tools and access to the pod's namespaces.

To run a debug container in a pod, use the following command:

kubectl debug <pod-name> -c <container-name> --image=<debug-image>

This will start a new container in the same namespace as the specified pod, with access to the same network and file systems. You can use this container to perform additional troubleshooting or debugging tasks.


Congratulations, you've learned some advanced kubectl commands for managing nodes, secrets, and troubleshooting issues in your Kubernetes cluster! With these powerful tools at your disposal, you can take your Kubernetes management skills to the next level.

If you're interested in learning even more kubectl commands, be sure to check out for more articles and resources on mastering this powerful command line tool. Happy Kubernetes-ing!

Editor Recommended Sites

AI and Tech News
Best Online AI Courses
Classic Writing Analysis
Tears of the Kingdom Roleplay
LLM Prompt Book: Large Language model prompting guide, prompt engineering tooling
Cloud Actions - Learn Cloud actions & Cloud action Examples: Learn and get examples for Cloud Actions
Cloud Checklist - Cloud Foundations Readiness Checklists & Cloud Security Checklists: Get started in the Cloud with a strong security and flexible starter templates
Cloud Automated Build - Cloud CI/CD & Cloud Devops:
Data Catalog App - Cloud Data catalog & Best Datacatalog for cloud: Data catalog resources for multi cloud and language models