Kubernetes

Kubernetes, often shortened to K8s, is an open-source system for automating the deployment, scaling, and management of containerized applications. Its official site describes it as grouping the containers that make up an application into logical units to make them easier to manage and discover. It became the de facto standard for running containers at scale and is a graduated project of the Cloud Native Computing Foundation.

Google open-sourced Kubernetes in 2014. The project grew directly out of more than a decade of Google’s experience running containers internally. Google’s own account of the project’s origin says the team set out to build an external, open-source version of its internal Borg task scheduler, incorporating lessons from Borg and its successor, Omega.

Borg itself is documented in Google’s research paper “Large-scale cluster management at Google with Borg,” which describes a system that runs hundreds of thousands of jobs across large data centers using techniques such as admission control, efficient task-packing, and process-level isolation. Kubernetes carried those ideas into a system anyone could run.

Where Docker focused on building and running individual containers, Kubernetes focuses on coordinating many of them across a cluster of machines, handling scheduling, scaling, service discovery, and self-healing. It is itself written in Go.