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
-- Juju mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju
