Why Kubernetes?
Modern Cloud Native applications are built as microservices. These applications are composed of tens, hundreds, or even thousands of small containers running in coordination, each fulfilling a small task in the context of the larger application.
Just like in a philharmonic orchestra, where every musician is responsible for their instrument, microservice-based Cloud Native applications need an orchestra director, synchronizing operations, providing rhythm, and providing the best listener experience to the audience.
That is precisely the role of Kubernetes. This Open Source project, created by Google and donated to the Cloud Native Foundation, has become in the past decade the container orchestrator of choice for Cloud Native applications. It provides the required automation that DevOps teams require to be more productive, taking care of a myriad of tasks previously held by operators.
As Kelsey Hightower said,
Kubernetes does the things that the very best system administrator would do: automation, failover, centralized logging, monitoring. It takes what we’ve learned in the DevOps community and makes it the default, out of the box.
The Kubernetes’ Advantages
Kubernetes plays a major role during the operation of Cloud Native applications:
- It coordinates and sequences the activities in the context of a larger online application, deciding when and where to run containers.
- It load balances and scales apps automatically, following the demand of users, accordingly to the budget of organizations.
- It provides redundancy and failover, restarting containers automatically in case of an application crash.
- It manages clusters, watches over the individual machines running the containers, assigns resources (memory, disk, CPU, etc), and decides where to run the components of a Cloud Native app.
- It provides standardization and portability, ensuring applications can be ported to different hyperscalers or cloud environments with minimum effort, with a common set of interfaces and tooling, provided by an astonishingly large Open Source ecosystem.