Cheat Sheet Kubernetes
Cheat Sheet Kubernetes
Name Command
Run curl test temporarily kubectl run --rm mytest --image=yauritux/busybox-curl -it
Run wget test temporarily kubectl run --rm mytest --image=busybox -it
Run nginx deployment with 2 replicas kubectl run my-nginx --image=nginx --replicas=2 --port=80
Run nginx pod and expose it kubectl run my-nginx --restart=Never --image=nginx --port=80 --expose
Run nginx deployment and expose it kubectl run my-nginx --image=nginx --port=80 --expose
Set namespace preference kubectl config set-context <context_name> --namespace=<ns_name>
List pods with nodes info kubectl get pod -o wide
List everything kubectl get all --all-namespaces
Get all services kubectl get service --all-namespaces
Get all deployments kubectl get deployments --all-namespaces
Show nodes with labels kubectl get nodes --show-labels
Get resources with json output kubectl get pods --all-namespaces -o json
Validate yaml file with dry run kubectl create --dry-run --validate -f pod-dummy.yaml
Start a temporary pod for testing kubectl run --rm -i -t --image=alpine test-$RANDOM -- sh
kubectl run shell command kubectl exec -it mytest -- ls -l /etc/hosts
Get system conf via configmap kubectl -n kube-system get cm kubeadm-config -o yaml
Get deployment yaml kubectl -n denny-websites get deployment mysql -o yaml
Explain resource kubectl explain pods, kubectl explain svc
Watch pods kubectl get pods -n wordpress --watch
Query healthcheck endpoint curl -L http://127.0.0.1:10250/healthz
Open a bash terminal in a pod kubectl exec -it storage sh
Check pod environment variables kubectl exec redis-master-ft9ex env
Enable kubectl shell autocompletion echo "source <(kubectl completion bash)" »~/.bashrc, and reload
Use minikube dockerd in your laptop eval $(minikube docker-env), No need to push docker hub any more
Kubectl apply a folder of yaml files kubectl apply -R -f .
Get services sorted by name kubectl get services –sort-by=.metadata.name
Get pods sorted by restart count kubectl get pods –sort-by=’.status.containerStatuses[0].restartCount’
List pods and images kubectl get pods -o=’custom-columns=PODS:.metadata.name,Images:.spec.containers[*]
List all container images list-all-images.sh
kubeconfig skip tls verification skip-tls-verify.md
Ubuntu install kubectl "deb https://apt.kubernetes.io/ kubernetes-xenial main"
Reference GitHub: kubernetes releases
Reference minikube cheatsheet, docker cheatsheet, OpenShift CheatSheet
GitHub: https://github.com/dennyzhang/cheatsheet-kubernetes-A4 1 of 5
Blog URL: https://cheatsheet.dennyzhang.com/cheatsheet-kubernetes-A4 Updated: February 24, 2020
1.5 Pod
Name Command
List all pods kubectl get pods
List pods for all namespace kubectl get pods -all-namespaces
List all critical pods kubectl get -n kube-system pods -a
List pods with more info kubectl get pod -o wide, kubectl get pod/<pod-name> -o yaml
Get pod info kubectl describe pod/srv-mysql-server
List all pods with labels kubectl get pods --show-labels
List all unhealthy pods kubectl get pods –field-selector=status.phase!=Running –all-namespaces
List running pods kubectl get pods –field-selector=status.phase=Running
Get Pod initContainer status kubectl get pod --template ’{{.status.initContainerStatuses}}’ <pod-name>
kubectl run command kubectl exec -it -n "$ns" "$podname" – sh -c "echo $msg »/dev/err.log"
Watch pods kubectl get pods -n wordpress --watch
Get pod by selector kubectl get pods –selector="app=syslog" -o jsonpath=’{.items[*].metadata.name}’
List pods and images kubectl get pods -o=’custom-columns=PODS:.metadata.name,Images:.spec.containers[*].image’
List pods and containers -o=’custom-columns=PODS:.metadata.name,CONTAINERS:.spec.containers[*].name’
Reference Link: kubernetes yaml templates
GitHub: https://github.com/dennyzhang/cheatsheet-kubernetes-A4 2 of 5
Blog URL: https://cheatsheet.dennyzhang.com/cheatsheet-kubernetes-A4 Updated: February 24, 2020
1.9 Service
Name Command
List all services kubectl get services
List service endpoints kubectl get endpoints
Get service detail kubectl get service nginx-service -o yaml
Get service cluster ip kubectl get service nginx-service -o go-template=’{{.spec.clusterIP}}’
Get service cluster port kubectl get service nginx-service -o go-template=’{{(index .spec.ports 0).port}}’
Expose deployment as lb service kubectl expose deployment/my-app --type=LoadBalancer --name=my-service
Expose service as lb service kubectl expose service/wordpress-1-svc --type=LoadBalancer --name=ns1
Reference Link: kubernetes yaml templates
1.10 Secrets
Name Command
List secrets kubectl get secrets --all-namespaces
Generate secret echo -n ’mypasswd’, then redirect to base64 --decode
Get secret kubectl get secret denny-cluster-kubeconfig
Get a specific field of a secret kubectl get secret denny-cluster-kubeconfig -o jsonpath="{.data.value}"
Create secret from cfg file kubectl create secret generic db-user-pass –from-file=./username.txt
Reference Link: kubernetes yaml templates, Link: Secrets
1.11 StatefulSet
Name Command
List statefulset kubectl get sts
Delete statefulset only (not pods) kubectl delete sts/<stateful_set_name> --cascade=false
Scale statefulset kubectl scale sts/<stateful_set_name> --replicas=5
Reference Link: kubernetes yaml templates
GitHub: https://github.com/dennyzhang/cheatsheet-kubernetes-A4 3 of 5
Blog URL: https://cheatsheet.dennyzhang.com/cheatsheet-kubernetes-A4 Updated: February 24, 2020
Name Command
List authenticated contexts kubectl config get-contexts, ~/.kube/config
Set namespace preference kubectl config set-context <context_name> --namespace=<ns_name>
Load context from config file kubectl get cs --kubeconfig kube_config.yml
Switch context kubectl config use-context <cluster-name>
Delete the specified context kubectl config delete-context <cluster-name>
List all namespaces defined kubectl get namespaces
List certificates kubectl get csr
Check user privilege kubectl –as=system:serviceaccount:ns-denny:test-privileged-sa -n ns-denny auth can-i use pods/lis
Check user privilege kubectl auth can-i use pods/list
Reference Link: kubernetes yaml templates
1.16 Network
Name Command
Temporarily add a port-forwarding kubectl port-forward redis-134 6379:6379
Add port-forwaring for deployment kubectl port-forward deployment/redis-master 6379:6379
Add port-forwaring for replicaset kubectl port-forward rs/redis-master 6379:6379
Add port-forwaring for service kubectl port-forward svc/redis-master 6379:6379
Get network policy kubectl get NetworkPolicy
1.17 Patch
Name Summary
Patch service to loadbalancer kubectl patch svc $svc_name -p ’{"spec": {"type": "LoadBalancer"}}’
1.18 Extenstions
Name Summary
Enumerates the resource types available kubectl api-resources
List api group kubectl api-versions
List all CRD kubectl get crd
List storageclass kubectl get storageclass
GitHub: https://github.com/dennyzhang/cheatsheet-kubernetes-A4 4 of 5
Blog URL: https://cheatsheet.dennyzhang.com/cheatsheet-kubernetes-A4 Updated: February 24, 2020
Name Summary
kube-apiserver exposes the Kubernetes API from master nodes
etcd reliable data store for all k8s cluster data
kube-scheduler schedule pods to run on selected nodes
kube-controller-manager node controller, replication controller, endpoints controller, and service account & token controllers
1.19.4 Tools
Name Summary
kubectl the command line util to talk to k8s cluster
kubeadm the command to bootstrap the cluster
kubefed the command line to control a Kubernetes Cluster Federation
Kubernetes Components Link: Kubernetes Components
GitHub: https://github.com/dennyzhang/cheatsheet-kubernetes-A4 5 of 5