cargoship

“An important sign of Kubernetes momentum is the continuing shift to production, growing from 59% in the 2020 report to 65% this year. Companies with more than 500 developers were more likely to be running all or most containerized workloads in production (78%). In our first State of Kubernetes report in 2018, less than a third (30%) reported running Kubernetes in production.”

— State of Kubernetes 2021 Report by VMware

In VMware’s State of Kubernetes 2021 Report, it pointed out that there has been a distinct shift to Kubernetes in Production. More companies are choosing to run containerized workloads over other virtualization technologies like bare-metal servers and virtual machines.

To understand why companies favor containers over other virtualization technologies. We need to take a closer look at the 3 most common virtualization technologies on the market: Bare-metal Servers, Virtual Machines, and Containers.

Bare-metal Servers

bare-metal

With bare-metal servers, the operating system is installed directly on the server, eliminating layers and delivering better performance. For instance, you simply install an operating system on your server hardware, then any shared libraries on top of that, and finally your application that uses those libraries, and you’d be good to go. This is how things have been for a long time.

The issue with this architecture is that is massively inefficient. Your hardware cost is the same whether you are running a 0% utilization or 100% utilization. All your applications are fighting for the same resources and you have to keep the versions of your library in sync with all the applications. If one program requires an updated version of the library that is incompatible with other applications operating on the same host, then you run into problems!

Virtual Machines

vm

Virtual machine solves the problem of bare-metal server by putting a virtualization platform over the operating system. Now you’ve isolated applications and their libraries with their own full operating system into a virtual machine. This enhances usage since you can run additional virtual machines on top of the existing hardware, lowering your physical footprint significantly.

The disadvantage of virtual machines is that the virtualization layer is cumbersome. In the image above, you now have 4 operating systems instead of one. That means more patching, more updates, and significantly more space being taken up by the physical host. There’s also significant redundancy. You’ve installed potentially the same operating system 4 times and potentially the same library 3 times. We can do better!

Containers

container

By packaging code and dependencies together, containers are an abstraction for the application layer. The container runtime shares the operating system’s kernel, enabling you to create container images using file system layers. The containers are lightweight efficient and fast! Containers consume less space compared to virtual machines (container images usually take up around tens of MB in size). They can be spawned up and spawned down faster than virtual machines.

Containers allow for better utilization of the underlying hardware. You can share libraries when necessary, but you can also isolate libraries for your applications. Containers are also highly portable. Because containers isolate software from the other layers, their codes run identically across different environments, whether it’s from compliance, staging, or all the way to production.

Summary

After understanding the differences between bare-metal servers, virtual machines, and containers, we can safely say that containers provide benefits that other virtualization technologies do not possess, such as faster software development cycles, increased resource utilization, and easier application upgrades.

Whether your organization is one of the 65% that is already using containerized workload in production or not, the momentum behind container technology is evident!

Resources

  1. State of Kubernetes 2021 Report — VMware
  2. What is a Bare Metal Server?
  3. Docker Official Website