Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Triton compatibility for Mesos #1
To make Mesos compatible with Triton a couple of changes are required. Triton is a Docker deployment service which will deploy containers across an entire data center. The Triton implementation of Docker increases the scalability, security and reliability of docker while maintaining bare metal performance. Mesos can offer further elasticity to Triton when it comes to deployment of containers across data centers, as well as provide a variety of frameworks that can take advantage of Triton as a service.
I used the following slide deck to outline discussion of the opportunity, my solution so far, and outstanding questions we should consider in doing this:
In traditional Mesos deployments, a Mesos slave runs on each physical host, but Triton's approach to containers eliminates the notion of a host and treats the entire data center as a single host. In Triton, a Mesos Slave is used to represent an entire data center, rather than a single host. Multiple data centers can be addressed via multiple slaves to support multi-region deployments.
Each slave represents an entire data center, instead of a single physical host, but the relationship between the slave(s) and the master and schedulers or other Mesos components is unchanged. This has been tested with Marathon, which runs unchanged. We expect that other frameworks on top of Mesos will work unchanged as well.
Mesos sandbox and Docker volumes
Triton for a variety of reasons has its host volumes as read only and thus, the
Mesos views ports as a consumable resource, however in Triton, where each container gets a unique NIC and IP address, port collisions are impossible and this functionality is no longer warranted. As a result we still track the ports as a resource however whenever a container is created we will not “consume” (remove) the used port from the slaves resources.
A minor inconsistency between the Mesos executor and Docker is that the Mesos executor constructs container names by piecing together the executor name with other elements. Unfortunately, the Mesos executor can include capital letters which are not allowed in the names of Docker containers. As a result, illegal names are causing Docker name failures for some requests. The changeset modifies the behavior to coerce container names to fit Docker convention in the executor.
Docker container removal upon destruction
When destroying a Docker container, Mesos would send a