In previous articles, we have seen that containers are ” abstract ” places where applications run in the form of images.
PODs are the aggregation of multiple containers .
A service is the aggregation of several PODs .
The image in figure 1 shows the concept just explained.
All applications (images) present within the same POD will have the same (shared) IP address and the same Hostname (UTS NameSpace).
Communication between containers within the same HOST occurs through POSIX or System V IPCs
Now imagine you want to provide the ” the-gable-svc ” service, built with two images (containers): a Database and a Front-End.
During the design phase, is it better to design a single POD that contains the two containers ( figure 2 ) or two PODs with a container each ( figure 3 )? ( 1POD x 2 CONTAINER or 2 POD x 1 CONTAINER )
To answer accurately, you need to understand which application needs the most scalability and flexibility.
In our example it is the DB that could require more resources (RAM & CPU) to manage access peaks.
If I had designed a single POD, the increase in resources would involve both applications, effectively not optimizing energy expenditure.
Note 1: CPU & RAM resources are allocated during POD creation.
Is it always better to create more PODs?
This latter statement does not align with K8s’ resilience policy, where PODs should run on different physical hosts ( k8s is a cluster).
To resolve the demise, there is a good rule :
If the service works fine even though the PODs are spread across multiple hosts, then it is better to use multiple PODs (Figure 2).
Figure 4 shows the contents of the mysql-pod.yaml file that creates the POD for the mySQL application.
Let’s see the basic POD management syntax:
- To start it just run the command: kubectl apply -f mysql-pod.yaml
- To check its status: kubectl get pods
- To get all the details: kubectl describe pods some-mysql
- If we wanted to delete it: kubectl delete -f mysql-pod.yaml
For today it’s all in a little bit where we will talk about Access to the POD, how to copy files and much more.