This notebook is structured to follow kubernetes-the-hard-way1 by kelseyhightower2. It may include sources outside of the Lab; check footnotes section or in-text citations.
Introduction
Kubernetes is a an open source containerization software used to deploy, scale and manage containerize applications.
Historical context for Kubernetes
We have a need to containerize modern applications because in a production environment, it is extremely necessary to ensure no downtime for any service.
The naive or old-school approach that was used by the organizations were to actually have physical servers with different instances of applications. This came with a huge problem
“If multiple applications run on a physical server, there can be instances where one application would take up most of the resources, and as a result, the other applications would underperform.”3
After a few iterations, this issue was solved with virtual deployment, which became popular along with cloud computing4. This approach allowed users to run multiple virtual machines (VMs) on a single physical server.
Virtualization helps make better use of the server’s resources and allows systems to scale more efficiently. With virtualization, a group of physical resources can be divided and managed as multiple VMs.
INFO
Each VM is a full machine running all the components, including its own operating system, on top of the virtualized hardware.
In recent times, we have been using containers which are really similar to VMs. They share the same operating system, therefore, they have relaxed properties and are lightweight in nature.
Similar to VM, they have their own filesys, CPU and MEM partition, process space and more.