Review of "Kubernetes: Open Source Container Cluster Orchestration"

25 Sep 2015

Review of "Kubernetes: Open Source Container Cluster Orchestration"

Kubernetes is a cluster management system built as a successor of Borg.

A pod is the unit of scheduling in Kubernetes. It is a resource envelope in which one or more containers can run. Which ensures that all containers will be scheduled onto the same machine. This enables deploying multiple co-located cooperating processes in a pod without having to give up the simplicity of "one-application-per-container" deployment model. Kubernetes supports naming and load-balancing using the service abstraction. A service has a name and maps to a dynamic set of pods defined by a label selector. Any service container in the cluster can connect to the service using the service name. Under the covers, Kubernetes automatically load-balances connections to service among the pods that match a label selector. Labels are used to tag service names, service instances (production, staging, test), and in general any subset of the pods. A label selector is used to select which set of pods an operation should be applied to. Together with replication controllers, labels allow for very flexible update semantics. Another feature of Kubernetes is that it provides an IP for a Pod, even pods residing on the same physical machine, sharing the same NIC. This is attributed to software defined overlay networks such as flannel or those built into public clouds.

Will this project be influential in 10 years? I think so. With clustering and distributed computing becoming more and more relevant as the information becomes more and more centralized, thus requires challenging computation power, how to efficiently manage all these distributed components will always be an interest for the industry.