Juju and cluster managers (like mesos)

Merlijn Sebrechts merlijn.sebrechts at gmail.com
Mon Nov 30 13:47:53 UTC 2015


Hi all


I'd like to start a discussion about how Juju can fit into cluster managers
like Apache Mesos and Kubernetes.

Currently, Juju fits nicely into this story as a way to setup these cluster
managers. Payloads continue on that idea with Juju as a manager of a
cluster manager. However, I'm a lot more interested in Juju on top of a
cluster manager, where the cluster manager would be a provider Juju uses to
deploy services on.

Juju provides an awesome way to model complex services in a modular and
re-usable way. The relationships allow for much more complex interactions
between services than what the "service discovery" in Kubernetes and Mesos
allows. Service discovery allows for a service to say "I need the IP's of
these services" but that's pretty much it. No flexible adaptable
infrastructure where services change their behavior depending on what they
are connected to. It basically stems from the same mindset that brought us
tools like Chef and Puppet: One company with a big dev team that creates
services for internal use only.


   - Cluster managers are very good at scheduling "dumb" workloads. They're
   a datacenter kernel, they don't care what runs in the container. At best,
   they provide a way for two containers to communicate (service discovery).


   - Juju is very good at configuring applications. It changes services
   depending on how they are connected. Juju for the most part doesn't care
   where services run, only how they are connected.


Combine these two and you could get an awesome PaaS that can run a lot more
than "dumb" 12-factor apps. It bothers me to see frameworks like Kubernetes
use the terminology "service orchestration" when all they do is connect
static services. Juju is on to something with its dynamic relations, but it
seems not many people have caught on...

I see two possible paths to integrate Service Orchestration with Cluster
management (scheduling):


   - *Support cluster managers in Juju as providers.* This might be hard to
   do since Juju's units require an OS-level container, not a process
   container. Step 1 would be LXD support in Mesos/Kubernetes?


   - *Write cluster management extensions on top of Juju.* Basically
   recreate the scheduling, failover and scaling functionality of
   Kubernetes/Mesos in Juju. There seem to be some people in the Juju
   ecosystem who are working on their own version of this. I've seen some
   people who are trying to automate the up/down scaling of services. Maybe it
   might be good to bundle these efforts and make a generic framework for
   this?

Juju can encapsulate installation and configuration best-practices.
Wouldn't it be great if Juju could encapsulate monitoring, scaling and
scheduling best-practices too? Maybe by making bundles smarter? (Just
imagine: a Hadoop bundle with builtin monitoring and scaling that scales
the workers up/down depending on the need)

*Now I'm curious to see what you guys think about this. *Do you think there
is a need to integrate Juju with "datacenter kernels"? What is Canonical's
vision about this? What does the community think?



Kind regards
Merlijn Sebrechts
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20151130/024dfe33/attachment.html>


More information about the Juju mailing list