Kubernetes Cheat Sheet Tutorial
Last updated on 08th Oct 2020, Blog, Tutorials
This Kubernetes cheat sheet is prepared by our experts keeping in mind those learners who have started learning Kubernetes as a tool. This cheat sheet will be a handy reference for them when they start implementing what they have learned in real-life problems. In this Kubernetes cheat sheet, you get a quick reference to all the basics that you must know about Kubernetes.
What is Kubernetes?
Kubernetes is an open-source platform used to automate deployment and to 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
Subscribe For Free Demo
Error: Contact form not found.
Architecture/Interaction
Key Concepts
Now, let’s discuss the key points of this architecture.
- Pod: Group of containers
- 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
- 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, API, scheduler, replication controller, and Kubernetes master.
Worker Nodes/Minions
Also called a ‘minion,’ a worker node contains the services necessary to run the pods that are managed by the master.
- Services it provides are Container Runtime, Kubelet, Kube-proxy, etc.
- It contains Kubelet, cAdvisor, Services, Pods, and Containers.
Moving forward, let’s check out the important commands used in Kubernetes.
Kubectl Commands
For Pods and Container Introspection
Command | Function |
Kubectl get pods | Lists all current pods |
Kubectl describe pod<name> | Describes pod names |
Kubectl get rc | Lists all replication controllers |
Kubectl get rc –namespace=”namespace” | Lists replication controllers in a namespace |
Kubectl describe rc <name> | Shows the replication controller name |
Kubectl get cvc | Lists services |
Kubectl describe svc<name> | Shows a service name |
Kubectl delete pod<name> | Deletes a pod |
Kubectl get nodes -w | Watches nodes continuously |
For Debugging
Function | Command |
To execute the command on service by selecting a container | Kubectl exec<service><commands>[-c< $container>] |
To get logs from the service for a container | Kubectl logs -f<name>>[-c< $container>] |
To watch kubelet logs | Watch -n 2 cat/var/log/kublet.log |
To show metrics for a node | Kubectl top node |
To show metrics for a pod | Kubectl top pod |
For Cluster Introspection
Function | Command |
To get version-related information | Kubectl version |
To get cluster-related information | Kubectl cluster-info |
To get configuration details | Kubectl config g view |
To get information about a node | Kubectl describe node<node> |
Objects
Some of the common objects used in Kubernetes are mentioned in the below table:
All | cluster role bindings | clusterroles |
cm= conf gmaps | controller revisions | 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 |
Other Quick Commands
Additionally, we do have some quick commands that are often very useful:
Function | Command |
To launch a pod with a name and an image | Kubectl run<name> — image=<image-name> |
To create a service described in <manifest.yaml> | Kubectl create -f <manifest.yaml> |
To scale the replication counter to count the number of instances | Kubectl scale –replicas=<count>rc<name> |
To map the external port to the internal replication port | Expose rc<name> –port=<external>–target-port=<internal> |
To stop all pods in <n> | Kubectl drain<n>– delete-local-data–force–ignore-daemonset |
To create a namespace | Kubectl create namespace <namespace> |
To allow the master node to run pods | Kubectl Taint Nodes –all-node-role.kuernetes.io/master- |
Features of Kubernetes
- Automated scheduling: It provides an advanced scheduler that helps launch containers on cluster nodes.
- Self-healing: Rescheduling, replacing, and restarting of dead containers are possible.
- Automated rollouts and rollbacks: It supports rollback for systems in the case of failures and enables rollout and rollback for the desired state.
- Horizontal scaling: It can be scaled up and down as required and can be automated with respect to the CPU usage.
- Service discovery and load balancing: It uses a unique IP and DNS name for containers that helps in identifying them.
Kubectl is the command line utility to interact with Kubernetes API. It is an interface which is used to communicate and manage pods in Kubernetes cluster.
One needs to set up kubectl to local in order to interact with Kubernetes cluster.
Setting Kubectl
Download the executable to the local workstation using the curl command.
On Linux
- $ curl -O https://storage.googleapis.com/kubernetesrelease/
- release/v1.5.2/bin/linux/amd64/kubectl
On OS X workstation
- $ curl -O https://storage.googleapis.com/kubernetesrelease/
- release/v1.5.2/bin/darwin/amd64/kubectl
After download is complete, move the binaries in the path of the system.
- $ chmod +x kubectl
- $ mv kubectl /usr/local/bin/kubectl
Configuring Kubectl
Following are the steps to perform the configuration operation.
- $ kubectl config set-cluster default-cluster –server = https://${MASTER_HOST} —
- certificate-authority = ${CA_CERT}
- $ kubectl config set-credentials default-admin –certificateauthority = ${
- CA_CERT} –client-key = ${ADMIN_KEY} –clientcertificate= ${
- ADMIN_CERT}
- $ kubectl config set-context default-system –cluster = defaultcluster —
- user = default-admin
- $ kubectl config use-context default-system
- Replace ${MASTER_HOST} with the master node address or name used in the previous steps.
- Replace ${CA_CERT} with the absolute path to the ca.pem created in the previous steps.
- Replace ${ADMIN_KEY} with the absolute path to the admin-key.pem created in the previous steps.
- Replace ${ADMIN_CERT} with the absolute path to the admin.pem created in the previous steps.
Verifying the Setup
To verify if the kubectl is working fine or not, check if the Kubernetes client is set up correctly.
- $ kubectl get nodes
- NAME LABELS STATUS
- Vipin.com Kubernetes.io/hostname = vipin.mishra.com Ready
Kubectl controls the Kubernetes Cluster. It is one of the key components of Kubernetes which runs on the workstation on any machine when the setup is done. It has the capability to manage the nodes in the cluster.
Kubectl commands are used to interact and manage Kubernetes objects and the cluster. In this chapter, we will discuss a few commands used in Kubernetes via kubectl.
kubectl annotate −
It updates the annotation on a resource.
- $kubectl annotate [–overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 …
- KEY_N = VAL_N [–resource-version = version]
For example,
kubectl annotate pods tomcat description = ‘my frontend’
kubectl api-versions −
It prints the supported versions of API on the cluster.
- $ kubectl api-version;
kubectl apply −
It has the capability to configure a resource by file or stdin.
- $ kubectl apply –f <filename>
kubectl attach −
This attaches things to the running container.
- $ kubectl attach <pod> –c <container>
- $ kubectl attach 123456-7890 -c tomcat-conatiner
kubectl autoscale −
This is used to auto scale pods which are defined such as Deployment, replica set, Replication Controller.
- $ kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [–min = MINPODS] —
- max = MAXPODS [–cpu-percent = CPU] [flags]
- $ kubectl autoscale deployment foo –min = 2 –max = 10
kubectl cluster-info −
It displays the cluster Info.
- $ kubectl cluster-info
kubectl cluster-info dump −
It dumps relevant information regarding cluster for debugging and diagnosis.
- $ kubectl cluster-info dump
- $ kubectl cluster-info dump –output-directory = /path/to/cluster-state
kubectl config −
Modifies the kubeconfig file.
- $ kubectl config <SUBCOMMAD>
- $ kubectl config –-kubeconfig <String of File name>
kubectl config current-context −
It displays the current context.
- $ kubectl config current-context
- #deploys the current context
kubectl config delete-cluster −
Deletes the specified cluster from kubeconfig.
- $ kubectl config delete-cluster <Cluster Name>
kubectl config delete-context −
Deletes a specified context from kubeconfig.
- $ kubectl config delete-context <Context Name>
kubectl config get-clusters −
Displays cluster defined in the kubeconfig.
- $ kubectl config get-cluster
- $ kubectl config get-cluster <Cluser Name>
kubectl config get-contexts −
Describes one or many contexts.
- $ kubectl config get-context <Context Name>
kubectl config set-cluster −
Sets the cluster entry in Kubernetes.
- $ kubectl config set-cluster NAME [–server = server] [–certificateauthority =
path/to/certificate/authority] [–insecure-skip-tls-verify = true]
kubectl config set-context −
Sets a context entry in kubernetes entrypoint.
- $ kubectl config set-context NAME [–cluster = cluster_nickname] [–
- user = user_nickname] [–namespace = namespace]
- $ kubectl config set-context prod –user = vipin-mishra
kubectl config set-credentials −
Sets a user entry in kubeconfig.
- $ kubectl config set-credentials cluster-admin –username = vipin —
- password = uXFGweU9l35qcif
kubectl config set −
Sets an individual value in kubeconfig file.
- $ kubectl config set PROPERTY_NAME PROPERTY_VALUE
kubectl config unset −
It unsets a specific component in kubectl.
- $ kubectl config unset PROPERTY_NAME PROPERTY_VALUE
kubectl config use-context −
Sets the current context in kubectl file.
- $ kubectl config use-context <Context Name>
kubectl config view
- $ kubectl config view
- $ kubectl config view –o jsonpath='{.users[?(@.name == “e2e”)].user.password}’
kubectl cp −
Copy files and directories to and from containers.
- $ kubectl cp <Files from source> <Files to Destinatiion>
- $ kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
kubectl create −
To create resource by filename of or stdin. To do this, JSON or YAML formats are accepted.
- $ kubectl create –f <File Name>
- $ cat <file name> | kubectl create –f –
In the same way, we can create multiple things as listed using the create command along with kubectl.
- deployment
- namespace
- quota
- secret docker-registry
- secret
- secret generic
- secret tls
- serviceaccount
- service clusterip
- service loadbalancer
- service nodeport
kubectl delete −
Deletes resources by file name, stdin, resource and names.
- $ kubectl delete –f ([-f FILENAME] | TYPE [(NAME | -l label | –all)])
kubectl describe −
Describes any particular resource in kubernetes. Shows details of resource or a group of resources.
- $ kubectl describe <type> <type name>
- $ kubectl describe pod tomcat
kubectl drain −
This is used to drain a node for maintenance purpose. It prepares the node for maintenance. This will mark the node as unavailable so that it should not be assigned with a new container which will be created.
- $ kubectl drain tomcat –force
kubectl edit −
It is used to end the resources on the server. This allows to directly edit a resource which one can receive via the command line tool.
- $ kubectl edit <Resource/Name | File Name)
Ex.
- $ kubectl edit rc/tomcat
kubectl exec −
This helps to execute a command in the container.
- $ kubectl exec POD <-c CONTAINER > — COMMAND < args…>
- $ kubectl exec tomcat 123-5-456 date
kubectl expose −
This is used to expose the Kubernetes objects such as pod, replication controller, and service as a new Kubernetes service. This has the capability to expose it via a running container or from a yaml file.
- $ kubectl expose (-f FILENAME | TYPE NAME) [–port=port] [–protocol = TCP|UDP]
- [–target-port = number-or-name] [–name = name] [–external-ip = external-ip-ofservice]
- [–type = type]
- $ kubectl expose rc tomcat –-port=80 –target-port = 30000
- $ kubectl expose –f tomcat.yaml –port = 80 –target-port =
kubectl get −
This command is capable of fetching data on the cluster about the Kubernetes resources.
- $ kubectl get [(-o|–output=)json|yaml|wide|custom-columns=…|custom-columnsfile=…|
- go-template=…|go-template-file=…|jsonpath=…|jsonpath-file=…]
- (TYPE [NAME | -l label] | TYPE/NAME …) [flags]
For example,
- $ kubectl get pod <pod name>
- $ kubectl get service <Service name>
kubectl logs −
They are used to get the logs of the container in a pod. Printing the logs can be defining the container name in the pod. If the POD has only one container there is no need to define its name.
$ kubectl logs [-f] [-p] POD [-c CONTAINER]
Example
- $ kubectl logs tomcat.
- $ kubectl logs –p –c tomcat.8
kubectl port-forward −
They are used to forward one or more local port to pods.
- $ kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT
- […[LOCAL_PORT_N:]REMOTE_PORT_N]
- $ kubectl port-forward tomcat 3000 4000
- $ kubectl port-forward tomcat 3000:5000
kubectl replace −
Capable of replacing a resource by file name or stdin.
- $ kubectl replace -f FILENAME
- $ kubectl replace –f tomcat.yml
- $ cat tomcat.yml | kubectl replace –f –
kubectl rolling-update − Performs a rolling update on a replication controller. Replaces the specified replication controller with a new replication controller by updating a POD at a time.
- $ kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] —
- image = NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
- $ kubectl rolling-update frontend-v1 –f freontend-v2.yaml
kubectl rollout −
It is capable of managing the rollout of deployment.
- $ Kubectl rollout <Sub Command>
- $ kubectl rollout undo deployment/tomcat
Apart from the above, we can perform multiple tasks using the rollout such as −
- rollout history
- rollout pause
- rollout resume
- rollout status
- rollout undo
kubectl run −
Run command has the capability to run an image on the Kubernetes cluster.
- $ kubectl run NAME –image = image [–env = “key = value”] [–port = port] [–
- replicas = replicas] [–dry-run = bool] [–overrides = inline-json] [–command] —
- [COMMAND] [args…]
- $ kubectl run tomcat –image = tomcat:7.0
- $ kubectl run tomcat –-image = tomcat:7.0 –port = 5000
kubectl scale −
It will scale the size of Kubernetes Deployments, ReplicaSet, Replication Controller, or job.
- $ kubectl scale [–resource-version = version] [–current-replicas = count] —
- replicas = COUNT (-f FILENAME | TYPE NAME )
- $ kubectl scale –-replica = 3 rs/tomcat
- $ kubectl scale –replica = 3 tomcat.yaml
kubectl set image −
It updates the image of a pod template.
- $ kubectl set image (-f FILENAME | TYPE NAME)
- CONTAINER_NAME_1 = CONTAINER_IMAGE_1 … CONTAINER_NAME_N = CONTAINER_IMAGE_N
- $ kubectl set image deployment/tomcat busybox = busybox ngnix = ngnix:1.9.1
- $ kubectl set image deployments, rc tomcat = tomcat6.0 –all
kubectl set resources −
It is used to set the content of the resource. It updates resource/limits on object with pod template.
- $ kubectl set resources (-f FILENAME | TYPE NAME) ([–limits = LIMITS & —
- requests = REQUESTS]
- $ kubectl set resources deployment tomcat -c = tomcat —
- limits = cpu = 200m,memory = 512Mi
kubectl top node −
It displays CPU/Memory/Storage usage. The top command allows you to see the resource consumption for nodes.
- $ kubectl top node [node Name]
The same command can be used with a pod as well.
Are you looking training with Right Jobs?
Contact Us- DevOps Tutorial
- Ansible Tutorial
- Kubernetes Interview Questions and Answers
- DevOps Engineer Salary, Roles and Responsibilities
- Ansible Vs Kubernetes
Related Articles
Popular Courses
- Openshift Training
11025 Learners
- Devops Online Training
12022 Learners
- Saltstack Training
11141 Learners
- What is Dimension Reduction? | Know the techniques
- Difference between Data Lake vs Data Warehouse: A Complete Guide For Beginners with Best Practices
- What is Dimension Reduction? | Know the techniques
- What does the Yield keyword do and How to use Yield in python ? [ OverView ]
- Agile Sprint Planning | Everything You Need to Know