Pods:
Kubernetes does not deploy containers directly on the node. Kubernetes encapsulates the containers into an object known as PODS. A pod is a single instance of an application. A pod is the smallest object you can create in Kubernetes. You may have multiple containers running in a single pod. They are usually of not the same type. But if you wish to spin another instance of your application. you would create a new POD.
You can deploy mode POD’S either on the same node or on a different node which is part of the cluster.
Let us say, we are going to deploy an application called Test-App using Docker. If we don’t have Kubernetes, we would do this by using the command docker run --name=app1 test-app
& if we have to link this app with another container on which it is dependent we would have to run that as well & link it to the test app. Let us say that it is docker run helper --link app1
Now, if we want 5 instances of the test-app we would have to run the docker run command 5 times & also run the link command 5 times. If we want to destroy or stop one instance of the app, we would have to stop the test-app & helper containers separately.
With Kubernetes, they both go into a POD & Kubernetes allows us to create, destroy or modify the POD at once and automate the process.
The containers in a POD share the same namespace, storage & network. So they will be able to communicate with each other using their internal IP address. The Containers in a POD will be created together & will be destroyed together.

How to deploy a POD ?
We can create a POD by running the command kubectl run
kubectl run {pod-name} --image {image-name} ex: kubectl run nginx --image nginx
It will deploy a docker container inside a pod named nginx & download a nginx image from docker hub repository.
We can see the list of pods currently running by using the kubectl get pods command.
kubectl get pods
Install Minikube:
For practice & to keep things simple. I am going to use minikube utility to practice Kubernetes, Basically it is a trimmed down version of kubernetes where the master node & worked node are installed on the same node. the basic operations required for our learning can be performed on a mini-kube cluster
The method to install minikube can vary based on the type of Virtualization, operating system and the processor in use, I am just documenting the commands I used on an Ubuntu Server which was running on VirtualBox in my ARM processor.
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_arm64.deb sudo dpkg -i minikube_latest_arm64.deb sudo usermod -aG docker $USER && newgrp docker minikube start
Now run the minikube status
command & you should see that the kubelet & API server are running.

Let’s Deploy a sample POD & see.
kubectl run {Pod-Name} --image={image-name} Ex: kubectl run nginx --image=nginx
We can use the kubectl get pods
command to list the POD’S currently running.
We can also get more information about a particular pod by using the command kubectl describe
kubectl describe pod {pod-name}