Kubernetes Cheat Sheet

If you use minikube, instead of pushing your Docker image to a registry, you can simply build the image using the same Docker host as the Minikube VM, so that the images are automatically present.

To do this we need to make sure we are using the Minikube Docker daemon, you can do this by running the following:

eval $(minikube docker-env)

Later, when you no longer wish to use the Minikube host, you can undo this change by running:

eval $(minikube docker-env -u)

Viewing Resource Information


kubectl get no

kubectl get no -o wide

kubectl describe no

kubectl get no -o yaml

kubectl get node --selector=[label_name]

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

kubectl top node [node_name]


kubectl get po
kubectl get po -o wide
kubectl describe po
kubectl get po --show-labels
kubectl get po -l app=ngi nx
kubectl get po -o yaml
kubectl get pod [pod_name] -o yaml --export
kubectl get pod [pod_name] -o yaml --export > nameoffile.yaml
kubectl get pods --field-selector status. phase=Runni ng

# force delete pod
kubectl delete pods --all --grace-period=0 --force


kubectl get ns
kubectl get ns -o yaml
kubectl describe ns


kubectl get deploy
kubectl describe deploy
kubectl get deploy -o wide
kubectl get deploy -o yaml


kubectl get svc
kubectl describe svc
kubectl get svc -o wide
kubectl get svc -o yaml
kubectl get svc --show-labels

Daemon sets

kubectl get ds
kubectl get ds --all -namespaces
kubectl describeds [daemonset_name] -n [namespace_name]
kubectl get ds [ds_name] -n [ns_name] -o yaml


kubectl get events
kubectl get events -n kube-system
kubectl get events -w


kubectl logs [pod_name]
kubectl logs --since=1h [pod_name]
kubectl logs --tail=20 [pod_name]
kubectl logs -f -c [container_name] [pod_name]
kubectl logs [pod_name] > pod.log

Service accounts

kubectl get sa
kubectl get sa -o yaml
kubectl get serviceaccounts default -o yaml > ./sa.yaml
kubectl replace serviceaccount default -f ./sa.yaml

Replica Sets

kubectl get rs
kubectl describe rs
kubectl get rs -o wide
kubectl get rs -o yaml


kubectl get roles --all -namespaces
kubectl get roles --all -namespaces -o yaml


kubectl get secrets
kubectl get secrets --all -namespaces
kubectl get secrets -o yaml

Config maps

kubectl get cm
kubectl get cm --all -namespaces
kubectl get cm --all -namespaces -o yaml


kubectl get ing
kubectl get ing --all -namespaces

Persistent Volume

kubectl get pv
kubectl describe pv

Persistent Volume Clain

kubectl get pvc
kubectl describe pvc

Storage class

kubectl get sc
kubectl get sc -o yaml

Multiple resources

kubectl get svc, po
kubectl get deploy, no
kubectl get all
kubectl get all --all-namespaces

Changing Resource Attributes


kubectl taint [node_name] [taint_name]


kubectl label [node_name] disktype=ssd
kubectl label [pod_name] env=prod


kubectl cordon [node_name]
kubectl uncordon [node_name]


kubectl drain [node_name]


kubectl delete node [node_name]
kubectl delete pod [pod_name]
kubectl edit node [node_name]
kubectl edit pod [pod_name]


kubectl edit deploy [deploy_name]
kubectl delete deploy [deploy_name]
kubectl expose deploy [deploy_name] --port=80 --type=NodePort
kubectl scale deploy [deploy_name] --replicas=5
kubectl delete ns
kubectl edit ns [ns_name]


kubectl edit svc [svc_name]
kubectl delete svc [svc_name]


kubectl edit ds [ds_name] -n kube-system
kubectl delete ds [ds_name]

Service Accounts

kubectl edit sa [sa_name]
kubectl delete sa [sa_name]


kubectl annotate po [pod_name] [annotation]
kubectl annotate no [node_name]

Adding Resources

Creating a Pod

kubectl create -f [name_of_file]
kubectl apply - f [name_of_file]
kubectl run [pod_name] --image=nginx --restart=Never
kubectl run [pod_name] --generator=run-pod/v1 --image=nginx
kubectl run [pod_name] --image=nginx --restart=Never

Creating a Service

kubectl create svc nodeport [svc_name] --tcp=8080:80

Creating a deployment

kubectl create -f [name_of_file]
kubectl apply -f [name_of_file]
kubectl create deploy [deploy_name] --image=nginx

Interactive Pod

kubectl run [pod_name] --image=busybox --rm -it --restart=Never --sh

Output a YAML to a File

kubectl create deploy [deploy_name] --image=nginx --dry-run -o yaml > deploy.yaml
kubectl get po [pod_name] -o yaml --export > pod.yaml

Getting Help

kubectl -h
kubectl create -h
kubectl run -h
kubectl explain deploy.spec


Api Call

kubectl get --raw /apis/metrics.k8s.io/

Cluster info

kubectl config
kubectl cluster -info
kubectl get component statuses


# get private ip of node