<p><a href="https://github.com/kubernetes/kubernetes" rel="noreferrer">Kubernetes</a> is billed as a container cluster "scheduler/orchestrator", but I have no idea what this means. After reading the Kubernetes site and (vague) GitHub wiki, the best I can tell is that its somehow figures out what VMs are available/capable of running your Docker container, and then deploys them there. But that is just my guess, and I haven't seen any concrete verbiage in their documentation to support that.</p>

<p><strong>So what is Kubernetes, <em>exactly</em>, and what are some <em>specific</em> problems that it solves?</strong></p>

<p>The purpose of Kubernetes is to make it easier to organize and schedule your application across a fleet of machines.  At a high level it is an operating system for your cluster.</p>

<p>Basically, it allows you to not worry about what specific machine in your datacenter each application runs on.  Additionally it provides generic primitives for health checking and replicating your application across these machines, as well as services for wiring your application into micro-services so that each layer in your application is decoupled from other layers so that you can scale/update/maintain them independently.</p>

<p>While it is possible to do many of these things in application layer, such solutions tend to be one-off and brittle, it's much better to have separation of concerns, where an orchestration system worries about how to run your application, and you worry about the code that makes up your application.</p>
