Kubernetes, Containers, Virtual Machines, Bare metal? All Greek words to me. My journey to understand them started when I was working in Oracle as a developer where we were using Kubernetes. But, trust me, using Kubernetes and knowing it are two different worlds, and generally, I do not feel comfortable to work with concepts I do not understand.
Let me fast forward my life almost eight months, and now, I am a graduate student in Computer Science. I took it upon myself to understand all the concepts which I implemented earlier (but never knew their intricate working). So, I will split the understanding of kubernetes into three blogs. Well, it took me a long time to understand it, I hope three blogs can justify the topic.
The basics lie in virtualization. So, let me start the story by addressing whys, whats and hows.
What happens when you write top in your terminal?
You get all the processes running on your machine as shown above. The beauty which lies in this is that the operating system is designed in such a way to make all these processes believe that they are the only process running on OS. Each process is assigned a time slice in which is to operate as if it is the single process running. You can read more about this here. This concept of faking the exclusiveness of a process on OS is known as Process Isolation. Extending this idea, there was the advent of the approach to not only isolate a process but isolate a bunch of processes (as if faking a different computer) as a whole and hence, the birth of virtualization.
To execute this brilliant idea, many approaches were taken. The most straightforward plan was to have an OS which runs this multiple OSs. Seems obvious choice? Right?
Let me take the liberty to call this host OS as Hypervisor. There are more intricacies to it but for now, let's assume that this is a specialized operating system which has bare minimum functionalities to act as a host to run all the different operating systems you want to run.
Simple and easy. One quick note: This concept of running multiple operating systems on a single hardware and making them believe that as if they are the only one is virtualizing (instead of actual).
There are many other ways in which virtualization can be achieved. One quick idea I can inject in your mind is: Why go for all the trouble to have a specific OS which helps other OSs to work independently? We can have restricted the access boundaries of various processes to specific files and isolate the bunch of processes which can give a feel as if these bunches are working on different systems altogether. I know this is heavy and a lot to digest at one go! So take a pause and re-read the evil idea mentioned in this paragraph.
Trust me it is going to be a fun ride in understanding the timeline of virtualization! Stay Tuned, Next blog on the way :)