Windows Server Support Comes to Kubernetes
blog.kubernetes.io
blog.kubernetes.io
The "core" of Kubernetes is an API server backed by the etcd key-value store (diagram[1]). Everything is a client of this API server: the scheduler, the kubectl CLI, and the nodes that run the workloads themselves.
This means the agent that starts and babysits the containers, called the Kubelet, can be reimplemented for some other operating system, as has been done here, without a ton of coordination across other components.
Further, because of Kubernetes's labeling system[2] it is easy for a workload to express constraints like the need to run on machines with certain features using a nodeSelector[3].
There is a lot to do before getting Windows support fully working but today it is a great showcase of Kubernetes's flexibility.
[1] https://speakerdeck.com/philips/tectonic-summit-day-2-keynot... [2] http://kubernetes.io/docs/user-guide/labels/ [3] http://kubernetes.io/docs/api-reference/v1/definitions/#_v1_...
The underlying components (Garden and Diego) were written with this possibility in mind, long before Microsoft themselves made any move to simplify containerisation on their platform. It'll definitely become easier in newer versions of Windows as Microsoft expose more APIs to implementors.
But lots of people won't move in a hurry, so backwards compatibility is done the hard way. I don't know much about the hard way.
Disclosure: I work for Pivotal, the major donor of engineering on Cloud Foundry. By coincidence in the same office as the Greenhouse team ("Garden on Windows", geddit?).
For example, Windows Server Core supports the full .NET ecosystem.
Michael Michael SIG-Windows Lead for Kubernetes @michmike77
Michael Michael SIG-Windows Lead for Kubernetes @michmike77