Why do we need Kubernetes?
Before we continue to explore Kubernetes, let's answer the question: why do we need Kubernetes?
Traditional deployments
In the past, businesses used physical servers to operate. The issue was that while numerous actions were being carried out on a single server, one application could suck up most of the resources and degrade the performance of other operations.
Adding extra servers was one option, but as you can imagine, this quickly got quite expensive.
Virtualization deployments
Then, everything began to move towards virtualization. A single physical server's CPU could support many Virtual Machines (VMs), which allowed multiple programs to run concurrently without experiencing performance difficulties.
Moreover, VMs allowed for the isolation of applications, which added an additional layer of flexibility and security. The entire system was not impacted when one program needed to be added, updated, or fixed. Yet, a significant problem with VMs was their high memory utilization.
Container deployments
Meet containers. Containers and VMs are much alike. They are independent of the central infrastructure and have their own operating systems, file systems, CPU, memory, and process spaces.
The main difference is that containers have a significantly smaller memory footprint thanks to their relaxed isolation properties.
Today containers have, in some cases, replaced virtual machines. Containers run a variety of intricate application clusters, which are frequently complex to manage effectively.
And it's here that Kubernetes comes in. The image above illustrates the deployment evolution from traditional to container.
At its core, Kubernetes and other container orchestration tools support developers through complex application management. Developers take care of the app management to prevent downtime.
For example, imagine a container fails; now, another container must replace it. But rather than doing this manually, Kubernetes manages this switchover seamlessly and effectively by restarting, replacing, and removing failed or stalled containers that don't respond to health checks.