Can Google Kubernetes run Apache Mesos frameworks on top of it?

10/26/2015

I was wondering if Google Kubernetes is able to run Apache Mesos frameworks, such as Hadoop or Cassandra etc.., like applications running on top of it. If yes or no, please justify your answers. Thank you.

-- Ahmed Azri
docker
kubernetes
mesos
mesosphere

4 Answers

11/18/2015

Yes!

The new "DaemonSet" abstraction in Kubernetes provides great support for running data processing and storage systems like HDFS and others relying on daemon-based architectures...

"Users might want to implement a sharded datastore in their (Kubernetes) cluster. A few nodes in the cluster, labeled ‘app=datastore’, might be responsible for storing data shards, and pods running on these nodes might serve data. This architecture requires a way to bind pods to specific nodes, so it cannot be achieved using a Replication Controller. A DaemonSet is a convenient way to implement such a datastore."

See: https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/design/daemon.md

-- Joseph Jacks
Source: StackOverflow

11/27/2015

There's conflicting answers, here. Let me try to clarify.

Kubernetes and Mesos are both frameworks/platforms that are more like pets than cattle. In fact, they're a little bit of both.

  • Both are backed by consistent, replicated, stateful storage (etcd/zookeeper).
  • Both have master components that can be replicated (tho the k8s solution for this is somewhat immature and complicated).
  • Both have agents that run on nodes that are not replicated and can be scaled out, to run other applications.

Running pets is something that Kubernetes CAN now do, with the recent DaemonSets functionality, but it wasn't really designed with this capability in mind. And, IMO, it doesn't quite do well enough yet for production use. Kubernetes was originally designed to run cattle-like replicated containers. However, there is active development to improve running pet-like applications, especially to support bootstrapping, to run Kubernetes itself on Kubernetes nodes, using DaemonSets.

Mesos, on the other hand, was designed explicitly to make these pet-like distributed systems easier to write and manage. It does this by effectively outsourcing the consistent state management, and providing a standard interface against with to write a framework/controller which can respond to cluster events with custom logic. It doesn't just treat every application the same way, it lets you program your own event handler code, specific to your pet-like application. This allows for more control. Obviously, cattle-like applications don't need this extra control. So to run cattle-like applications on Mesos you use an intermediate framework, like Marathon or Kubernetes, to implement the scheduling and event handling logic in a generic, declaratively configurable way.

Disclaimer: I work on the Kubernetes-Mesos project for running Kubernetes on Mesos/DCOS.

-- KarlKFI
Source: StackOverflow

10/27/2015

No. In fact it's the other way round. Concerning benefits see also my presentation here.

-- Michael Hausenblas
Source: StackOverflow

10/26/2015

Yes and no - you can run applications in containers on kubernetes, and you can run kubernetes on mesos.

In fact, Cassandra is one of the standard kubernetes examples. And there is an example of kubernetes on mesos.

-- Software Engineer
Source: StackOverflow