As we discussed before with Kubernetes, it is our ultimate aim is to deploy our application in the form of containers on a set of machines that are configured as worker nodes in a cluster.
However, kubernetes does not deploy containers directly on the worker nodes. The containers are encapsulated into a kubernetes object knows as POD.
A pod is a single instance of an application. A pod is a smallest object that you can create in kubernetes.
Here we see the simplest of simplest cases where you have a single node kubernetes and cluster with a single instance of your application running in a single docker container encapsulated in a pod.
What if the number of users accessing your application increases and you need to scale your application? You need to add additional instance of your web application to share the load. Where would you spin up an additional instances? Do we bring up new container instance withing the same POD?
No, we create new POD altogether with a new instance of the same application.
As you can see, we now have two instances of our web application running on two separate pods on the same node. What if the user base further increases and your current node has no sufficient capacity? Well, then you can always deploy additional pods on a new node.
In the cluster, you will have a new node added to the cluster to expand the cluster’s physical capacity.
POD usually have one to one relationship with container running your application. You create new pods to scale up and destroy pods to scale down. You do not add additional containers to the existing pod to scale your application.
I know now you are wondering how we implement all of these and how load balancing will happen between pods. We will discuss it in a later article.
We just discussed the pods usually have one to one relationship with containers. It is not restricted by Kubernetes, but that is standard practice.
A single pod can have multiple containers but they usually now multiple containers of same kind. I have described it in a different article.
Kubernetes Multi-Container Pod Design patterns
The idea of the decoupling large monolithic application into micro services provides us the capability develop set of…
How to create a pod?
You can use kubectl run command to create a pod
kubectl run nginx-container --image=nginx
Above command will download nginx image from docker hub and create a pod name nginx-container.
Also you can specify pod definition in yaml file i.e pod definition file.
apiVersion: v1kind: Pod
- name: nginx-container
Then you can use kubectl apply command to run it.
kubectl apply -f file_name.yaml