Red Hat OpenShift 3 design document
github.com
github.com
* Mesos / Yarn
* Marathon
* Kubernetes
* OpenShift
* Chronos
There are others I'm sure that I just don't recall.
Also, how does the container approach fit in the traditional VM models of OpenStack / AWS / Digital Ocean. Are these systems aiming to ultimately replace them? Do they solve the problems of networking and disk?
Maybe it's time I spent an afternoon looking into all this.
https://github.com/GoogleCloudPlatform/kubernetes/blob/maste... captures the first draft of it, but there's a lot more work going on to let you bind storage on demand to Docker containers at a cluster level.
Mesos is a general purpose framework for task scheduling into a set of machines. Mesos uses a concept of 'offers' where custom frameworks can choose to use or not use them. Yarn is similar, but it's a bit incestual with the rest of the Hadoop ecosystem and is designed to run distributed MRv2 jobs. Mesos isn't related to Hadoop other than it's use of Zookeeper for leader election & state.
Mesos itself doesn't do much without a framework.
> Marathon
Marathon is a framework for Mesos that runs long-lived tasks and supports interesting things like artifact staging, dependencies.
> Kubernetes
Not really sure how Kubernetes differentiates itself from Mesos (besides having Google as a sponsor). I haven't used it myself.
> OpenShift
A PaaS from Red Hat that uses it's own scheduling and distribution mechanisms to run applications built (very Similar to Heroku/Elastic Beanstalk)
> Chronos
Similar to Marathon, except that it runs an essentially distributed cron (and has dependencies, etc). You can use Chronos as a full-fledged distributed job running system. Chronos isn't intended to run long-running tasks.
Is anyone a user of 2.x? How does this feel?
Can't say too much but it's a big shift. The rewrites are significant; under the hood I know less about.
It's certainly a big focus for RH. I think it's great that they've embraced Kubernetes and Docker, but I can imagine it's going to frustrate early adopters who have already got used to one set of terminologies.
Also, we had some pain points around distributing and packaging large Ruby apps into random environments, and so a switch to Go meant we could simplify the model of deploying the system components (clients, masters, node agents) onto systems. The CLI client shares a lot of code with the Kubernetes client, and having that in Go allowed us to deal less with the vagaries of deploying Ruby onto Windows (for Java developers).
And yes, I do realize that we've hit every single HN hot button thread in that list.