• Articles
  • Tutorials
  • Interview Questions

Kubernetes (Kubectl) Cheat Sheet

Table of content

Show More

Kubectl Cheat Sheet

Kubectl is a command line tool for configuring Kubernetes. It connects to a Kubernetes API server and lets us manage Kubernetes objects by creating, inspecting, updating, and deleting them. This cheat sheet was prepared by our experts to help learners understand Kubernetes as a tool. This handy reference will help them implement their knowledge while resolving complex issues. It will also go through the basics of Kubernetes.

Watch this video on Kubernetes Tutorial for Beginners:

Video Thumbnail

You can also download the printable PDF of this Kubernetes cheat sheet

Kubernetes Cheat Sheet

What is Kubernetes?

Kubernetes is an open-source platform used to automate deployment and scale containers across clusters of hosts, providing container-centric infrastructure

  • It is a container orchestrator.
  • It can run a Linux container.
    • Launches a container
    • Maintains and monitors the container site
    • Performs container-oriented networking

Kubernetes Architecture

The image below illustrates the architecture of Kubernetes. Let’s have a look at it.

Kubernetes Architecture

The Kubernetes cluster comprises master and worker node(s), where the master node orchestrates pods onto worker nodes. It runs the Kubernetes control plane, including the API server, scheduler, controller manager and more, abstracting cluster management complexities. Worker nodes, also called minions, actively run pods and containers via services like container runtimes, kubelet, and kube-proxy.

Key Components of Kubernetes Architecture:

Here, we have explained the key components of Kubernetes architecture:

  • Pod: Group of containers
  • Node: It is a virtual machine which can run multiple pods.
  • Label: Used to identify pods
  • Kubelet: Container agents responsible for maintaining the set of pods
  • Proxy: The load balancer for pods, helping in distributing tasks across them
  • Etcd: A metadata service.
  • CAdvisor: Used for monitoring resource usage and performance.
  • Replication controller: Manages pod replication
  • Scheduler: Used for pod scheduling in worker nodes
  • API server: Kubernetes API server

Now, let’s understand the roles master and worker nodes play in the Kubernetes architecture.

Master Node in Kubernetes

  • It is responsible for maintaining the desired state of the cluster we are working on.
  • The term ‘master‘ indicates a set of processes that are used to manage a cluster.
  • It contains Kubelet service info, an API, a scheduler, a replication controller, and a Kubernetes master.

Master Node in Kubernetes - Kubelet Service Info

Worker Nodes or Minions in Kubernetes

Worker Node is also called a ‘minion,’ a worker node contains the services necessary to run the pods that are managed by the master.

  • The services it provides are Container Runtime, Kubelet, Kube-proxy, etc.
  • It contains Kubelet, cAdvisor, Services, Pods, and Containers.

Worker node

Kubernetes Commands

Let’s have a look at some of the Kubernetes (kubectl) Node, Pods, Namespaces, Deployment, Services, DaemonSets, Events, Logs commands. We are also going to cover Service Accounts, Replica Sets, Persistent Volume, and Storage class commands. We have covered how you can create, edit, delete, and check the logs of these services using these kubectl commands.

Commands for Nodes in Kubectl

A node is a fundamental unit of computing resources within a cluster. It can be a virtual or physical machine, depending on the cluster. To run on nodes, containers are placed into pods by Kubernetes to execute the workload.

Here are a few Kubernetes commands for nodes.

Command Function
kubectl get nodes To list all current nodes in a cluster.
kubectl get nodes -w Watches nodes continuously
kubectl delete node <name> To delete a node
kubectl label node <node-name> <label-key>=<label-value> To add a label to a node
kubectl describe node To get information about the node
kubectl get nodes –selector=<label-key>=<label-value> To get the information about nodes based on a specific label
kubectl top node <name-of-node> To display CPU and memory usage for a specific node.

Note: You can also use the shortcode for this node command: “no”, e.g: kubectl top no <name-of-node>

Commands for Cluster Introspection in Kubectl

Cluster is a collection of nodes that has some processing and storage capacity which runs containerized applications. As compared to virtual machines they are more flexible and lightweight.

Command Function
kubectl version To get the information about the kubernetes version.
kubectl cluster-info To get the information about the services in the cluster.
kubectl config view To display the configuration of the cluster
kubectl api-versions To get the available API versions.
kubectl api-resources To get the available API resources.

Commands for Pods in Kubectl

A pod stands as the smallest unit of execution in Kubernetes, encapsulating one or more applications that run on nodes. 

Let’s explore some Kubernetes commands related to pods:

Command Function
kubectl get pods Lists all current pods
kubectl get pods –output=wide To show additional information about pods in wider format.
kubectl get pods -o=json To list all current pods in json format (-o: output)
kubectl get pods -o=yaml To list all current pods in YAML format
kubectl run my-pod –image=<image-name> To create a pod
kubectl describe pods  To provide detailed information about all or specific pods.

Note: Shortcode for “pod” is “po”, in commands “pod” can be replaced with “po” it won’t be affecting the output. E.g.: kubectl describe po

Commands for Namespaces in Kubectl

Namespaces play an important role in partitioning resources and isolating workloads within a Kubernetes cluster. Users interacting with one namespace do not see the content within another namespace, ensuring effective isolation. 

Here are the commands for Namespace:

Command Function
Kubectl create namespace <name_of_namespace> To create a namespace
kubectl get namespace <name_of_namespace> To get list of namespaces
kubectl get namespace <namespace-name> -o yaml To get the YAML representation of a namespace.
kubectl edit namespace <name_of_namespace> To edit and update the namespace definition
kubectl delete namespace <name_of_namespace> To delete a namespace

Note: In the command we can replace “namespace” with its shortcode “ns”. The output will remain same in both the cases.

E.g: kubectl get ns <name>

Commands for Deployments in Kubectl

Kubernetes deployments define pod creation, scaling, controlled updates, and version rollback, ensuring efficient management of containerized applications within clusters.

Here are some commands related to deployments:

Command Function
kubectl get deployment To list all the current deployments.
kubectl describe deployments To get the information about the deployments.
kubectl apply -f <file-name> For creating a new deployment.
kubectl delete deployment –all To delete all of the deployments.
kubectl delete deployments <deployment-name>  For deleting a deployment.
kubectl rollout status deployment <deployment-name> To check the status of deployment rollout.
kubectl rollout pause deployment <name-of-deployment> To pause a deployment rollout.
kubectl rollout resume deployment <name-of-deployment> To resume a deployment
kubectl rollout history deployment <name-of-deployment> To check rollout history of a deployment

Commands for Services in Kubectl

A Kubernetes Service actively exposes an application running on Pods to be reachable within and outside the cluster. It provides a stable, dedicated IP address and DNS name for the application, load balancing traffic across the Pods backing the Service. Services facilitate loose coupling between microservices.

Command Function
kubectl get svc To get information about services
kubectl describe svc <name-of-service> To get detailed information about the specified service.
kubectl get svc -n <name-of-namespace> To get the services in a specific namespace
kubectl delete svc <name-of-service> To delete a specific service
kubectl edit svc <name-of-service> To edit a service

Note: “svc ” is a shortcode for “service” you can use either of them. It will not affect the output.

Commands for DaemonSets in Kubectl

Kubernetes DaemonSets actively ensure a copy of a Pod runs on each Node in a cluster, providing cluster services alongside user workloads. As nodes get added, Pods matching the DaemonSet specification get actively created on them; as nodes get removed, those Pods get garbage collected. 

Let’s check out a few of the kubernetes commands for DaemonSets:

Command Function
kubectl get daemonsets To get all the DaemonSets
kubectl get daemonset -n <name-of-namespace> To get the DaemonSets in a specific namespace
kubectl describe daemonset <name> Provides detailed information about a specific DaemonSet
kubectl delete daemonset <name> Delete a DaemonSet
kubectl apply -f daemonset.yaml To create a DaemonSet from a YAML file
kubectl rollout restart daemonset <name> To roll update for a DaemonSet
kubectl edit daemonset <name> To edit a daemon-set

Note: Here in commands the “daemonset” can be replaced by its shortcode: “ds”. The output for both will remain the same.

Commands for Events in Kubectl

Kubernetes events are auto-triggered upon specific actions on cluster objects. For example, creating a pod generates a corresponding event.

Let’s have a look at the Kubernetes events commands:

Command Function
kubectl get events To display events from all namespaces.
kubectl get events –watch To get real-time updates on the list of events.
kubectl describe events <name> To get detailed information about the event

Commands for Logs in Kubectl

Logs help us understand how our application is performing and what is happening inside of it. 

Here are a few Kubernetes log commands:

Command Function
kubectl logs -f<name>>[-c< $container>] To get logs from the service for a container
kubectl logs -l name=<label name> To get logs based on a specified label 
kubectl logs –since=6h <pod_name> To get the last 6 hours of logs of a pod
kubectl logs <name-of-pod> To get logs of a pod.
kubectl logs —tail=20 <pod> To get the last 20 lines of logs from a specific pod
kubectl logs -f -c <name-of-container> <pod-name> To stream the logs from a specific container within a pod in real-time

Commands for Service Accounts in Kubectl

In Kubernetes, a service account is a special kind of non-human account that provides a unique identity in a Kubernetes cluster

Here is how you can create, list, and delete Kubernetes service account using commands:

Command Function
kubectl create serviceaccount <service-account-name> To create Service Account
kubectl get serviceaccounts To list all Service Account
kubectl delete serviceaccount <service-account-name> To delete a service Account

Note: Here, in the command the “serviceaccount” can be replaced with its shortcode “sa”.

E.g: kubectl get sa

Commands for Secrets in Kubectl

A Secret is an object used to store confidential data like a key, passcode, or a token.

Here are few kubectl commands using which you can list, describe, create and delete Secrets in Kubernetes:

Command Function
kubectl get secrets To list all the secrets.
kubectl describe secrets To get the details about the secrets.
kubectl create secrets To create a new secret.
kubectl delete secret <name> To delete a specific secret.

Commands for Replication Controllers in Kubectl

The Replication Controller is responsible for ensuring the smooth functioning of pod replicas. It makes sure that at a particular time, a specific number of pod replicas are running.

Command Function
kubectl  get rc To get the list of all the replicationControllers.

Commands for Replica Sets in Kubectl

It is a resource designed to maintain a consistent set of active pods for a specific workload.

Listed below are a few of the Kubernetes Replica Set commands:

Command Function
kubectl  get rs To list the replica sets in the current namespace.
kubectl  describe rs <replica-set-name> To get detailed information about the replica set.
kubectl create -f <rs.yaml> To create a new ReplicaSet using a YAML file.
kubectl delete rs <replica-set-name> To delete a ReplicaSet.

Note: Here, “rs” can be replaced by replicasets and vice-versa without altering the output.

E.g.: kubectl  get replicasets

Commands for Persistent Volume in Kubectl

A persistent volume refers to a storage unit within a cluster that has been allocated by an administrator. 

Here are some commands related to Kubernetes persistent volume:

Command Function
kubectl get pv To get a list of all Persistent Volumes.
kubectl describe pvc To get information about a specific Persistent Volume.
kubectl create pv <pv-name> –<option>=<value> Create a Persistent Volume.
kubectl delete pv <pv-name> To delete a Persistent Volume.
kubectl get pv <pv-name> -o=jsonpath='{.spec.capacity.storage}’ To check Persistent Volume Capacity and Usage.

Commands for Storage Class in Kubectl

Kubernetes storage classes define different storage types and provide a way to request a particular storage type for your workloads.

Let’s have a look at some of the Kubernetes storage class commands:

Command Function
kubectl get sc To get a list of all storage class
kubectl apply -f storageclass.yaml To create a storage class from a YAML file.
kubectl delete sc <storageclass-name> To delete a storage class

Note: The shortcode for storage class is “sc”.

Commands for StatefulSet in Kubectl

Statefulset is a type of workload API object which can be used for the management of stateful applications.

Command Function
Kubectl get statefulset To list all of the statefulsets
Kubectl delete statefulset/<statefulset-name> To delete a statefulset.

Note: You can use the shortcode of the statefulset: “sts”. The output for both the commands will remain the same.

E.g: Kubectl get sts

Commands for Manifest Files in Kubectl

We define the desired state of a Kubernetes object by creating a Kubernetes Manifest file, which is a YAML or JSON file describing the object’s specifications like its metadata, properties, and desired state.

Command Function
kubectl apply -f <manifest.yaml> To apply the configuration to the object using a yaml file.
kubectl create -f <manifest.yaml> To create a service.
kubectl create -f <URL> To create an object using a URL
kubectl delete -f <manifest.yaml> To delete a service using a YAML file.

Other Quick Commands in Kubectl

Additionally, we do have some quick commands that are often very useful in Kubectl:

Command Function
Kubectl run<name> — image=<image-name> To launch a pod with a name and an image
Kubectl create -f <manifest.yaml> To create a service described in <manifest.yaml>
kubectl delete -f <config file> To delete a service
Kubectl scale –replicas=<count>rc<name> To scale the replication counter to count the number of instances
Expose rc<name> –port=<external>–target-port=<internal> To map the external port to the internal replication port
Kubectl drain<n>– delete-local-data–force–ignore-daemonset To stop all pods in <n>
Kubectltaintnodes –all-node-role.kuernetes.io/master- To allow the master node to run pods
kubectl drain <node-name> To safely remove pods from a node before maintenance.
kubectl uncordon <node-name> To mark a node as schedulable.

Objects in Kubernetes

Kubernetes objects are persistent entities that represent the state of your cluster, describing what containerized applications are running, the resources available to them, and policies around application behavior. Almost every Kubernetes object has a specific field for the desired configuration and a status field for actual status. Some common objects are Pods, Deployments, replica sets, replication controllers, statefulsets, DaemonSets, PersistentVolume, Service, Namespaces, ConfigMaps & Secrets, and Job.

All Cluster Role Bindings Cluster Roles
cm= conf gmaps controllerrevisions crd=custom resource definition
Cronjobs cs=component statuses csr= certificate signing requests
Deploy=deployments ds= daemon sets ep=end points
ev= events hpa= horizontal pod autoscaling ing= ingress
jobs limits=limit ranges Netpol- network policies
No = nodes ns= namespaces pdb= pod distribution budgets
po= pods Pod preset Pod templates
Psp= pod security policies Pv= persistent volumes pvc= persistent volume claims
quota= resource quotas rc= replication controllers Role bindings
roles rs= replica sets sa= service accounts
sc= storage classes secrets sts= stateful sets

Some of the Features of Kubernetes

  1. Automated scheduling: It provides an advanced scheduler that helps launch containers on cluster nodes.
  2. Self-healing: Rescheduling, replacing, and restarting dead containers are possible.
  3. Automated rollouts and rollbacks: It supports rollback for systems in the case of failures and enables rollout and rollback for the desired state.
  4. Horizontal scaling: It can be scaled up and down as required and can be automated with respect to CPU usage.
  5. Service discovery and load balancing: It uses a unique IP and DNS name for containers that help in identifying them.

Conclusion

We hope this Kubernetes cheat sheet was helpful. These commands will definitely help you in mastering Kubernetes.

Enroll today in our comprehensive DevOps Course or join Intellipaat’s Cloud Computing and DevOps Course to start your career or enhance your skills in the field of DevOps and get certified today.

 

Course Schedule

Name Date Details
DevOps Certification 14 Dec 2024(Sat-Sun) Weekend Batch View Details
21 Dec 2024(Sat-Sun) Weekend Batch
28 Dec 2024(Sat-Sun) Weekend Batch

About the Author

Technical Research Analyst - Big Data Engineering

Abhijit is a Technical Research Analyst specialising in Big Data and Azure Data Engineering. He has 4+ years of experience in the Big data domain and provides consultancy services to several Fortune 500 companies. His expertise includes breaking down highly technical concepts into easy-to-understand content.