[openstack-dev] [magnum]swarm + compose = k8s?

Adrian Otto adrian.otto at rackspace.com
Thu Oct 1 05:53:17 UTC 2015


On Sep 30, 2015, at 4:26 PM, Kris G. Lindgren <klindgren at godaddy.com<mailto:klindgren at godaddy.com>> wrote:

We are looking at deploying magnum as an answer for how do we do containers company wide at Godaddy.  I am going to agree with both you and josh.

I agree that managing one large system is going to be a pain and pas experience tells me this wont be practical/scale, however from experience I also know exactly the pain Josh is talking about.

We currently have ~4k projects in our internal openstack cloud, about 1/4 of the projects are currently doing some form of containers on their own, with more joining every day.  If all of these projects were to convert of to the current magnum configuration we would suddenly be attempting to support/configure ~1k magnum clusters.  Considering that everyone will want it HA, we are looking at a minimum of 2 kube nodes per cluster + lbaas vips + floating ips.  From a capacity standpoint this is an excessive amount of duplicated infrastructure to spinup in projects where people maybe running 10–20 containers per project.  From an operator support perspective this is a special level of hell that I do not want to get into.   Even if I am off by 75%,  250 still sucks.

Keep in mind that your magnum bays can use the same floating ip addresses that your containers do, and the containers hosts are shared between the COE nodes and the containers that make up the applications running in the bay. It is possible to use private address space for that, and proxy public facing access through a proxy layer that uses names to route connections to the appropriate magnum bay. That’s how you can escape the problem of public IP addresses as a scarce resource.

Also, if you use Magnum to start all those bays, they can all look the same, rather than the ~1000 container environments you have today that probably don’t look very similar, one to the next. Upgrading becomes much more achievable when you have wider consistency. There is a new feature currently in review called public baymodel that allows the cloud operator to define the bay model, but individual tenants can start bays based on that one common “template”. This is a way of centralizing most of your configuration. This balances a lot of the operational concern.

From my point of view an ideal use case for companies like ours (yahoo/godaddy) would be able to support hierarchical projects in magnum.  That way we could create a project for each department, and then the subteams of those departments can have their own projects.  We create a a bay per department.  Sub-projects if they want to can support creation of their own bays (but support of the kube cluster would then fall to that team).  When a sub-project spins up a pod on a bay, minions get created inside that teams sub projects and the containers in that pod run on the capacity that was spun up  under that project, the minions for each pod would be a in a scaling group and as such grow/shrink as dictated by load.

You can do this today by sharing your TLS certs. In fact, you could make the cert signing a bit more sophisticated than it is today, and allow each subteam to have a unique TLS cert that can auth against a common bay.

The above would make it so where we support a minimal, yet imho reasonable, number of kube clusters, give people who can't/don’t want to fall inline with the provided resource a way to make their own and still offer a "good enough for a single company" level of multi-tenancy.

This is different than what Joshua was asking for with identities in keystone, because today’s COE’s themselves don’t have modular identity solutions that are implemented with multi-tenancy.

Imagine for a moment that you don’t need to run your bays on Nova instances that are virtual machines. What if you had an additional host aggregate that could produce libvirt/lxc guests that you can use to form bays. They can actually be composed of nodes that are sourced from BOTH your libvirt/lxc host aggregate (for hosting your COE’s) and your normal KVM (or the hypervisor) host aggregate for your apps to use. Then the effective consolidation ratio of your bays (what you referred to as “excessive amount of duplicated infrastructure”) become processes running on a much smaller number of compute nodes. You could do this by specifying a different master_flavor_id and flavor_id such that these fall on different host aggregates. As long as you are “all one company” and are not concerned primarily with security isolation between neighboring COE master nodes, that approach may actually be the right balance, and would not require an architectural shift or figuring out how to accomplish nested tenants.


>If you share resources, you give up multi-tenancy.  No COE system has the
>concept of multi-tenancy (kubernetes has some basic implementation but it
>is totally insecure).  Not only does multi-tenancy have to “look like” it
>offers multiple tenants isolation, but it actually has to deliver the


>I understand that at first glance a company like Yahoo may not want >separate bays for their various applications because of the perceived >administrative overhead. I would then challenge Yahoo to go deploy a COE >like kubernetes (which has no multi-tenancy or a very basic implementation >of such) and get it to work with hundreds of different competing >applications. I would speculate the administrative overhead of getting >all that to work would be greater then the administrative overhead of >simply doing a bay create for the various tenants.


>Placing tenancy inside a COE seems interesting, but no COE does that >today. Maybe in the future they will. Magnum was designed to present an >integration point between COEs and OpenStack today, not five years down >the road. Its not as if we took shortcuts to get to where we are.


>I will grant you that density is lower with the current design of Magnum >vs a full on integration with OpenStack within the COE itself. However, >that model which is what I believe you proposed is a huge design change to >each COE which would overly complicate the COE at the gain of increased >density. I personally don’t feel that pain is worth the gain.

Kris Lindgren
Senior Linux Systems Engineer
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: OpenStack-dev-request at lists.openstack.org<mailto:OpenStack-dev-request at lists.openstack.org>?subject:unsubscribe

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20151001/3bfb2992/attachment.html>

More information about the OpenStack-dev mailing list