You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Alex Glikson <GL...@il.ibm.com> on 2015/10/09 12:04:35 UTC

custom(ized) conteinerization

Triggered by the thread on potential deprecation of external 
containerizer, I wonder what would make sense to do to address the 
following set of requirements:
1. I need resource isolation for individual tasks (mainly for QoS 
reasons), so having container per task seems reasonable
2. I have rather advanced networking requirements, not easily addressable 
with default mesos containerizer or docker
3. Some of the tasks are stateful, so I would really prefer that Mesos 
doesn't kill them, pretty much ever (unless triggered by the framework)

It seems that having my own containerizer would be a reasonable approach. 
But given some of the requirements above, I am trying to figure out 
whether I would at all need to implement "usage" and "update" (and maybe 
even 'destroy', unless it is invoked as part of killTask received from the 
framework?).

Moreover, the isolation mechanism I have in mind does use the same Linux 
features as docker/mesos containerizers (cgroups, namespaces, etc), but in 
a somewhat different manner. So, I wonder whether I can use more than one 
containerizer on the same host -- e.g., to run tasks of my framework on 
the same host as tasks of , say, Marathon+docker (and if yes, how can I 
check whether they will work together). If mixing containerizers in the 
same host is not recommended, is there an easy way to dynamically decide 
which slaves are 'allocated' to which 'type' of resources (e.g., some sort 
of entire-host allocation policy)?

Some thoughts/advice would be really helpful, before we actually spend 
time implementing a new containerizer, one way or another.

Thanks!
Alex

P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the above 
doesn't make much sense, so bear with me..



Re: custom(ized) conteinerization

Posted by Benjamin Mahler <be...@gmail.com>.
Alex, yes, you need to figure out if they can conflict.

Ideally implementations avoid conflicting as much as possible but in some
cases it may not be possible to avoid.

On Sat, Oct 10, 2015 at 12:31 AM, Alex Glikson <GL...@il.ibm.com> wrote:

> Timothy Chen <tn...@gmail.com> wrote on 10/10/2015 09:38:38 AM:
> >
> > As Ben said containierizers don't conflict since the framework
> > specifies which containerizer the task should be launched from.
> >
> > And isolators are not configurable per task but per slave, so all
> > tasks will use the same isolators in the same slave.
>
> Tasks of the same framework -- sure. But what about tasks/containers of
> different frameworks running on the same host? For example, containerizer
> A might assume that all the network traffic should go via bridge X, while
> containerizer B might assume OVS+vxlan. In such a case the two are likely
> to be incompatible (maybe even cluster-wide, but most certainly within a
> host). I assume that conflicts are also possible with other resources
> (e.g., incompatible ways of using cgroups).
>
> Regards,
> Alex
>
> >
> > Tim
> >
> > > On Oct 9, 2015, at 11:22 PM, Alex Glikson <GL...@il.ibm.com> wrote:
> > >
> > > Thanks!
> > >
> > >> You can mix containerizers, although they should not conflict with
> each
> > >> other.
> > >
> > > How would I know whether they conflict? For example, the docker one
> and
> > > the default mesos one with certain configuration of isolators etc?
> > >
> > > Thanks,
> > > Alex
> > >
> > >
> > > Benjamin Mahler <be...@gmail.com> wrote on 10/10/2015
> 03:51:56
> > > AM:
> > >
> > >> From: Benjamin Mahler <be...@gmail.com>
> > >> To: dev <de...@mesos.apache.org>
> > >> Date: 10/10/2015 03:52 AM
> > >> Subject: Re: custom(ized) conteinerization
> > >>
> > >> (1) is something that has come up before. The containerizer deals
> with a
> > >> variable sized container, the semantics of a task are defined by the
> > >> executor, there is no way for the containerizer to understand the
> > > meaning
> > >> of a task currently. Some tasks are "special" in that they don't have
> an
> > >> executor (e.g. command task, docker task, etc), and in this case they
> > > will
> > >> be isolated individually. The main approach that has been discussed
> to
> > > my
> > >> knowledge is to have the executor leverage the mesos containerizer to
> > >> create nested containers:
> > > https://issues.apache.org/jira/browse/MESOS-3333
> > >>
> > >> For (2) you should implement a custom network _isolator_ that the
> mesos
> > >> containerizer can use.
> > >>
> > >> With respect to (3), for regular resources the policy used in Mesos
> is
> > > that
> > >> Mesos will never make decisions to kill things, it must be triggered
> by
> > > the
> > >> framework or an operator. So this requirement should be met already.
> For
> > >> revocable resources, Mesos may destroy containers, but the framework
> > > will
> > >> be aware of that when deciding to use them. If they are stateful, you
> > >> should use reservations and store the data in a volume.
> > >>
> > >> You can mix containerizers, although they should not conflict with
> each
> > >> other.
> > >>
> > >>> On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com>
> wrote:
> > >>>
> > >>> Triggered by the thread on potential deprecation of external
> > >>> containerizer, I wonder what would make sense to do to address the
> > >>> following set of requirements:
> > >>> 1. I need resource isolation for individual tasks (mainly for QoS
> > >>> reasons), so having container per task seems reasonable
> > >>> 2. I have rather advanced networking requirements, not easily
> > > addressable
> > >>> with default mesos containerizer or docker
> > >>> 3. Some of the tasks are stateful, so I would really prefer that
> Mesos
> > >>> doesn't kill them, pretty much ever (unless triggered by the
> > > framework)
> > >>>
> > >>> It seems that having my own containerizer would be a reasonable
> > > approach.
> > >>> But given some of the requirements above, I am trying to figure out
> > >>> whether I would at all need to implement "usage" and "update" (and
> > > maybe
> > >>> even 'destroy', unless it is invoked as part of killTask received
> from
> > > the
> > >>> framework?).
> > >>>
> > >>> Moreover, the isolation mechanism I have in mind does use the same
> > > Linux
> > >>> features as docker/mesos containerizers (cgroups, namespaces, etc),
> > > but in
> > >>> a somewhat different manner. So, I wonder whether I can use more
> than
> > > one
> > >>> containerizer on the same host -- e.g., to run tasks of my framework
> > > on
> > >>> the same host as tasks of , say, Marathon+docker (and if yes, how
> can
> > > I
> > >>> check whether they will work together). If mixing containerizers in
> > > the
> > >>> same host is not recommended, is there an easy way to dynamically
> > > decide
> > >>> which slaves are 'allocated' to which 'type' of resources (e.g.,
> some
> > > sort
> > >>> of entire-host allocation policy)?
> > >>>
> > >>> Some thoughts/advice would be really helpful, before we actually
> spend
> > >>> time implementing a new containerizer, one way or another.
> > >>>
> > >>> Thanks!
> > >>> Alex
> > >>>
> > >>> P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the
> > > above
> > >>> doesn't make much sense, so bear with me..
> > >
> > >
> >
>
>
>

Re: custom(ized) conteinerization

Posted by Alex Glikson <GL...@il.ibm.com>.
Timothy Chen <tn...@gmail.com> wrote on 10/10/2015 09:38:38 AM:
> 
> As Ben said containierizers don't conflict since the framework 
> specifies which containerizer the task should be launched from.
> 
> And isolators are not configurable per task but per slave, so all 
> tasks will use the same isolators in the same slave.

Tasks of the same framework -- sure. But what about tasks/containers of 
different frameworks running on the same host? For example, containerizer 
A might assume that all the network traffic should go via bridge X, while 
containerizer B might assume OVS+vxlan. In such a case the two are likely 
to be incompatible (maybe even cluster-wide, but most certainly within a 
host). I assume that conflicts are also possible with other resources 
(e.g., incompatible ways of using cgroups).

Regards,
Alex

> 
> Tim
> 
> > On Oct 9, 2015, at 11:22 PM, Alex Glikson <GL...@il.ibm.com> wrote:
> > 
> > Thanks!
> > 
> >> You can mix containerizers, although they should not conflict with 
each
> >> other.
> > 
> > How would I know whether they conflict? For example, the docker one 
and 
> > the default mesos one with certain configuration of isolators etc?
> > 
> > Thanks,
> > Alex
> > 
> > 
> > Benjamin Mahler <be...@gmail.com> wrote on 10/10/2015 
03:51:56 
> > AM:
> > 
> >> From: Benjamin Mahler <be...@gmail.com>
> >> To: dev <de...@mesos.apache.org>
> >> Date: 10/10/2015 03:52 AM
> >> Subject: Re: custom(ized) conteinerization
> >> 
> >> (1) is something that has come up before. The containerizer deals 
with a
> >> variable sized container, the semantics of a task are defined by the
> >> executor, there is no way for the containerizer to understand the
> > meaning
> >> of a task currently. Some tasks are "special" in that they don't have 
an
> >> executor (e.g. command task, docker task, etc), and in this case they
> > will
> >> be isolated individually. The main approach that has been discussed 
to
> > my
> >> knowledge is to have the executor leverage the mesos containerizer to
> >> create nested containers:
> > https://issues.apache.org/jira/browse/MESOS-3333
> >> 
> >> For (2) you should implement a custom network _isolator_ that the 
mesos
> >> containerizer can use.
> >> 
> >> With respect to (3), for regular resources the policy used in Mesos 
is
> > that
> >> Mesos will never make decisions to kill things, it must be triggered 
by
> > the
> >> framework or an operator. So this requirement should be met already. 
For
> >> revocable resources, Mesos may destroy containers, but the framework
> > will
> >> be aware of that when deciding to use them. If they are stateful, you
> >> should use reservations and store the data in a volume.
> >> 
> >> You can mix containerizers, although they should not conflict with 
each
> >> other.
> >> 
> >>> On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com> 
wrote:
> >>> 
> >>> Triggered by the thread on potential deprecation of external
> >>> containerizer, I wonder what would make sense to do to address the
> >>> following set of requirements:
> >>> 1. I need resource isolation for individual tasks (mainly for QoS
> >>> reasons), so having container per task seems reasonable
> >>> 2. I have rather advanced networking requirements, not easily
> > addressable
> >>> with default mesos containerizer or docker
> >>> 3. Some of the tasks are stateful, so I would really prefer that 
Mesos
> >>> doesn't kill them, pretty much ever (unless triggered by the
> > framework)
> >>> 
> >>> It seems that having my own containerizer would be a reasonable
> > approach.
> >>> But given some of the requirements above, I am trying to figure out
> >>> whether I would at all need to implement "usage" and "update" (and
> > maybe
> >>> even 'destroy', unless it is invoked as part of killTask received 
from
> > the
> >>> framework?).
> >>> 
> >>> Moreover, the isolation mechanism I have in mind does use the same
> > Linux
> >>> features as docker/mesos containerizers (cgroups, namespaces, etc),
> > but in
> >>> a somewhat different manner. So, I wonder whether I can use more 
than
> > one
> >>> containerizer on the same host -- e.g., to run tasks of my framework
> > on
> >>> the same host as tasks of , say, Marathon+docker (and if yes, how 
can
> > I
> >>> check whether they will work together). If mixing containerizers in
> > the
> >>> same host is not recommended, is there an easy way to dynamically
> > decide
> >>> which slaves are 'allocated' to which 'type' of resources (e.g., 
some
> > sort
> >>> of entire-host allocation policy)?
> >>> 
> >>> Some thoughts/advice would be really helpful, before we actually 
spend
> >>> time implementing a new containerizer, one way or another.
> >>> 
> >>> Thanks!
> >>> Alex
> >>> 
> >>> P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the
> > above
> >>> doesn't make much sense, so bear with me..
> > 
> > 
> 



Re: custom(ized) conteinerization

Posted by Kapil Arya <ka...@mesosphere.io>.
On Sat, Oct 10, 2015 at 2:38 AM, Timothy Chen <tn...@gmail.com> wrote:

> As Ben said containierizers don't conflict since the framework specifies
> which containerizer the task should be launched from.
>
> And isolators are not configurable per task but per slave, so all tasks
> will use the same isolators in the same slave.
>

There is a Jira (MESOS-3361
<https://issues.apache.org/jira/browse/MESOS-3361>) to allow slaves to
pick/enable Isolators per-task. That in combination with isolator
capabilities (MESOS-3362 <https://issues.apache.org/jira/browse/MESOS-3362>)
can help the framework to specify custom isolators.

Alternatively, as Ben suggested, one can write a custom network-isolator
that looks at TaskInfo/ExecutorInfo to decide what "kind" of
network-isolation to enable for the current task.



> Tim
>
> > On Oct 9, 2015, at 11:22 PM, Alex Glikson <GL...@il.ibm.com> wrote:
> >
> > Thanks!
> >
> >> You can mix containerizers, although they should not conflict with each
> >> other.
> >
> > How would I know whether they conflict? For example, the docker one and
> > the default mesos one with certain configuration of isolators etc?
> >
> > Thanks,
> > Alex
> >
> >
> > Benjamin Mahler <be...@gmail.com> wrote on 10/10/2015 03:51:56
> > AM:
> >
> >> From: Benjamin Mahler <be...@gmail.com>
> >> To: dev <de...@mesos.apache.org>
> >> Date: 10/10/2015 03:52 AM
> >> Subject: Re: custom(ized) conteinerization
> >>
> >> (1) is something that has come up before. The containerizer deals with a
> >> variable sized container, the semantics of a task are defined by the
> >> executor, there is no way for the containerizer to understand the
> > meaning
> >> of a task currently. Some tasks are "special" in that they don't have an
> >> executor (e.g. command task, docker task, etc), and in this case they
> > will
> >> be isolated individually. The main approach that has been discussed to
> > my
> >> knowledge is to have the executor leverage the mesos containerizer to
> >> create nested containers:
> > https://issues.apache.org/jira/browse/MESOS-3333
> >>
> >> For (2) you should implement a custom network _isolator_ that the mesos
> >> containerizer can use.
> >>
> >> With respect to (3), for regular resources the policy used in Mesos is
> > that
> >> Mesos will never make decisions to kill things, it must be triggered by
> > the
> >> framework or an operator. So this requirement should be met already. For
> >> revocable resources, Mesos may destroy containers, but the framework
> > will
> >> be aware of that when deciding to use them. If they are stateful, you
> >> should use reservations and store the data in a volume.
> >>
> >> You can mix containerizers, although they should not conflict with each
> >> other.
> >>
> >>> On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com>
> wrote:
> >>>
> >>> Triggered by the thread on potential deprecation of external
> >>> containerizer, I wonder what would make sense to do to address the
> >>> following set of requirements:
> >>> 1. I need resource isolation for individual tasks (mainly for QoS
> >>> reasons), so having container per task seems reasonable
> >>> 2. I have rather advanced networking requirements, not easily
> > addressable
> >>> with default mesos containerizer or docker
> >>> 3. Some of the tasks are stateful, so I would really prefer that Mesos
> >>> doesn't kill them, pretty much ever (unless triggered by the
> > framework)
> >>>
> >>> It seems that having my own containerizer would be a reasonable
> > approach.
> >>> But given some of the requirements above, I am trying to figure out
> >>> whether I would at all need to implement "usage" and "update" (and
> > maybe
> >>> even 'destroy', unless it is invoked as part of killTask received from
> > the
> >>> framework?).
> >>>
> >>> Moreover, the isolation mechanism I have in mind does use the same
> > Linux
> >>> features as docker/mesos containerizers (cgroups, namespaces, etc),
> > but in
> >>> a somewhat different manner. So, I wonder whether I can use more than
> > one
> >>> containerizer on the same host -- e.g., to run tasks of my framework
> > on
> >>> the same host as tasks of , say, Marathon+docker (and if yes, how can
> > I
> >>> check whether they will work together). If mixing containerizers in
> > the
> >>> same host is not recommended, is there an easy way to dynamically
> > decide
> >>> which slaves are 'allocated' to which 'type' of resources (e.g., some
> > sort
> >>> of entire-host allocation policy)?
> >>>
> >>> Some thoughts/advice would be really helpful, before we actually spend
> >>> time implementing a new containerizer, one way or another.
> >>>
> >>> Thanks!
> >>> Alex
> >>>
> >>> P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the
> > above
> >>> doesn't make much sense, so bear with me..
> >
> >
>

Re: custom(ized) conteinerization

Posted by Timothy Chen <tn...@gmail.com>.
As Ben said containierizers don't conflict since the framework specifies which containerizer the task should be launched from.

And isolators are not configurable per task but per slave, so all tasks will use the same isolators in the same slave.

Tim

> On Oct 9, 2015, at 11:22 PM, Alex Glikson <GL...@il.ibm.com> wrote:
> 
> Thanks!
> 
>> You can mix containerizers, although they should not conflict with each
>> other.
> 
> How would I know whether they conflict? For example, the docker one and 
> the default mesos one with certain configuration of isolators etc?
> 
> Thanks,
> Alex
> 
> 
> Benjamin Mahler <be...@gmail.com> wrote on 10/10/2015 03:51:56 
> AM:
> 
>> From: Benjamin Mahler <be...@gmail.com>
>> To: dev <de...@mesos.apache.org>
>> Date: 10/10/2015 03:52 AM
>> Subject: Re: custom(ized) conteinerization
>> 
>> (1) is something that has come up before. The containerizer deals with a
>> variable sized container, the semantics of a task are defined by the
>> executor, there is no way for the containerizer to understand the
> meaning
>> of a task currently. Some tasks are "special" in that they don't have an
>> executor (e.g. command task, docker task, etc), and in this case they
> will
>> be isolated individually. The main approach that has been discussed to
> my
>> knowledge is to have the executor leverage the mesos containerizer to
>> create nested containers:
> https://issues.apache.org/jira/browse/MESOS-3333
>> 
>> For (2) you should implement a custom network _isolator_ that the mesos
>> containerizer can use.
>> 
>> With respect to (3), for regular resources the policy used in Mesos is
> that
>> Mesos will never make decisions to kill things, it must be triggered by
> the
>> framework or an operator. So this requirement should be met already. For
>> revocable resources, Mesos may destroy containers, but the framework
> will
>> be aware of that when deciding to use them. If they are stateful, you
>> should use reservations and store the data in a volume.
>> 
>> You can mix containerizers, although they should not conflict with each
>> other.
>> 
>>> On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com> wrote:
>>> 
>>> Triggered by the thread on potential deprecation of external
>>> containerizer, I wonder what would make sense to do to address the
>>> following set of requirements:
>>> 1. I need resource isolation for individual tasks (mainly for QoS
>>> reasons), so having container per task seems reasonable
>>> 2. I have rather advanced networking requirements, not easily
> addressable
>>> with default mesos containerizer or docker
>>> 3. Some of the tasks are stateful, so I would really prefer that Mesos
>>> doesn't kill them, pretty much ever (unless triggered by the
> framework)
>>> 
>>> It seems that having my own containerizer would be a reasonable
> approach.
>>> But given some of the requirements above, I am trying to figure out
>>> whether I would at all need to implement "usage" and "update" (and
> maybe
>>> even 'destroy', unless it is invoked as part of killTask received from
> the
>>> framework?).
>>> 
>>> Moreover, the isolation mechanism I have in mind does use the same
> Linux
>>> features as docker/mesos containerizers (cgroups, namespaces, etc),
> but in
>>> a somewhat different manner. So, I wonder whether I can use more than
> one
>>> containerizer on the same host -- e.g., to run tasks of my framework
> on
>>> the same host as tasks of , say, Marathon+docker (and if yes, how can
> I
>>> check whether they will work together). If mixing containerizers in
> the
>>> same host is not recommended, is there an easy way to dynamically
> decide
>>> which slaves are 'allocated' to which 'type' of resources (e.g., some
> sort
>>> of entire-host allocation policy)?
>>> 
>>> Some thoughts/advice would be really helpful, before we actually spend
>>> time implementing a new containerizer, one way or another.
>>> 
>>> Thanks!
>>> Alex
>>> 
>>> P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the
> above
>>> doesn't make much sense, so bear with me..
> 
> 

Re: custom(ized) conteinerization

Posted by Alex Glikson <GL...@il.ibm.com>.
Thanks!

> You can mix containerizers, although they should not conflict with each
> other.

How would I know whether they conflict? For example, the docker one and 
the default mesos one with certain configuration of isolators etc?

Thanks,
Alex


Benjamin Mahler <be...@gmail.com> wrote on 10/10/2015 03:51:56 
AM:

> From: Benjamin Mahler <be...@gmail.com>
> To: dev <de...@mesos.apache.org>
> Date: 10/10/2015 03:52 AM
> Subject: Re: custom(ized) conteinerization
> 
> (1) is something that has come up before. The containerizer deals with a
> variable sized container, the semantics of a task are defined by the
> executor, there is no way for the containerizer to understand the 
meaning
> of a task currently. Some tasks are "special" in that they don't have an
> executor (e.g. command task, docker task, etc), and in this case they 
will
> be isolated individually. The main approach that has been discussed to 
my
> knowledge is to have the executor leverage the mesos containerizer to
> create nested containers: 
https://issues.apache.org/jira/browse/MESOS-3333
> 
> For (2) you should implement a custom network _isolator_ that the mesos
> containerizer can use.
> 
> With respect to (3), for regular resources the policy used in Mesos is 
that
> Mesos will never make decisions to kill things, it must be triggered by 
the
> framework or an operator. So this requirement should be met already. For
> revocable resources, Mesos may destroy containers, but the framework 
will
> be aware of that when deciding to use them. If they are stateful, you
> should use reservations and store the data in a volume.
> 
> You can mix containerizers, although they should not conflict with each
> other.
> 
> On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com> wrote:
> 
> > Triggered by the thread on potential deprecation of external
> > containerizer, I wonder what would make sense to do to address the
> > following set of requirements:
> > 1. I need resource isolation for individual tasks (mainly for QoS
> > reasons), so having container per task seems reasonable
> > 2. I have rather advanced networking requirements, not easily 
addressable
> > with default mesos containerizer or docker
> > 3. Some of the tasks are stateful, so I would really prefer that Mesos
> > doesn't kill them, pretty much ever (unless triggered by the 
framework)
> >
> > It seems that having my own containerizer would be a reasonable 
approach.
> > But given some of the requirements above, I am trying to figure out
> > whether I would at all need to implement "usage" and "update" (and 
maybe
> > even 'destroy', unless it is invoked as part of killTask received from 
the
> > framework?).
> >
> > Moreover, the isolation mechanism I have in mind does use the same 
Linux
> > features as docker/mesos containerizers (cgroups, namespaces, etc), 
but in
> > a somewhat different manner. So, I wonder whether I can use more than 
one
> > containerizer on the same host -- e.g., to run tasks of my framework 
on
> > the same host as tasks of , say, Marathon+docker (and if yes, how can 
I
> > check whether they will work together). If mixing containerizers in 
the
> > same host is not recommended, is there an easy way to dynamically 
decide
> > which slaves are 'allocated' to which 'type' of resources (e.g., some 
sort
> > of entire-host allocation policy)?
> >
> > Some thoughts/advice would be really helpful, before we actually spend
> > time implementing a new containerizer, one way or another.
> >
> > Thanks!
> > Alex
> >
> > P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the 
above
> > doesn't make much sense, so bear with me..
> >
> >
> >



Re: custom(ized) conteinerization

Posted by Benjamin Mahler <be...@gmail.com>.
(1) is something that has come up before. The containerizer deals with a
variable sized container, the semantics of a task are defined by the
executor, there is no way for the containerizer to understand the meaning
of a task currently. Some tasks are "special" in that they don't have an
executor (e.g. command task, docker task, etc), and in this case they will
be isolated individually. The main approach that has been discussed to my
knowledge is to have the executor leverage the mesos containerizer to
create nested containers: https://issues.apache.org/jira/browse/MESOS-3333

For (2) you should implement a custom network _isolator_ that the mesos
containerizer can use.

With respect to (3), for regular resources the policy used in Mesos is that
Mesos will never make decisions to kill things, it must be triggered by the
framework or an operator. So this requirement should be met already. For
revocable resources, Mesos may destroy containers, but the framework will
be aware of that when deciding to use them. If they are stateful, you
should use reservations and store the data in a volume.

You can mix containerizers, although they should not conflict with each
other.

On Fri, Oct 9, 2015 at 3:04 AM, Alex Glikson <GL...@il.ibm.com> wrote:

> Triggered by the thread on potential deprecation of external
> containerizer, I wonder what would make sense to do to address the
> following set of requirements:
> 1. I need resource isolation for individual tasks (mainly for QoS
> reasons), so having container per task seems reasonable
> 2. I have rather advanced networking requirements, not easily addressable
> with default mesos containerizer or docker
> 3. Some of the tasks are stateful, so I would really prefer that Mesos
> doesn't kill them, pretty much ever (unless triggered by the framework)
>
> It seems that having my own containerizer would be a reasonable approach.
> But given some of the requirements above, I am trying to figure out
> whether I would at all need to implement "usage" and "update" (and maybe
> even 'destroy', unless it is invoked as part of killTask received from the
> framework?).
>
> Moreover, the isolation mechanism I have in mind does use the same Linux
> features as docker/mesos containerizers (cgroups, namespaces, etc), but in
> a somewhat different manner. So, I wonder whether I can use more than one
> containerizer on the same host -- e.g., to run tasks of my framework on
> the same host as tasks of , say, Marathon+docker (and if yes, how can I
> check whether they will work together). If mixing containerizers in the
> same host is not recommended, is there an easy way to dynamically decide
> which slaves are 'allocated' to which 'type' of resources (e.g., some sort
> of entire-host allocation policy)?
>
> Some thoughts/advice would be really helpful, before we actually spend
> time implementing a new containerizer, one way or another.
>
> Thanks!
> Alex
>
> P.S. Disclaimer: I am new to Mesos, so maybe some (or all) of the above
> doesn't make much sense, so bear with me..
>
>
>