You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwhisk.apache.org by Christian Bickel <cb...@apache.org> on 2018/11/28 10:56:59 UTC
Don't differentiate between blackbox and whitebox images
Hi,
in the past we divided the invokers into blackbox and whitebox invokers.
This has the effect that one of these two types could be overloaded while
the other type still has free capacity.
Does anyone see issues on using every invoker for everything?
Or does anyone see any action items that need to be addressed before we
invoke every action-type on every invoker?
If not I'll open a PR to not differentiate between these types anymore.
Greetings
Christian Bickel
Re: Don't differentiate between blackbox and whitebox images
Posted by Sven Lange-Last <sv...@de.ibm.com>.
I agree with Rodric. In the past, our assumption was that the risk
associated with blackbox invocations is higher than with managed
invocations. That's why we used two separate invoker pools such that the
possible problems with blackbox invocations won't affect any managed
invokers and thus, managed invocations.
We need to re-evaluate whether we still see the same risk as in the past
and whether we see ways to address possible problems.
For those who are willing to accept certain risks, Rodric's proposal of
providing flexibility via configuration settings may be the right
approach. Apparently, the requirements depend on the type of OW
environment you run. For a large production environment supporting a large
number of different tenants requirements are different than for your local
development environment.
I think we have (at least) these risks:
=> Docker images consume too much disk space so that no more new images
can be pulled / no new containers can be created.
A limited set of Docker images is required to support managed invocations.
The situation is different for blackbox invocations. Potentially each
blackbox invocation may lead to a pull of an additional Docker image so
that the disk volume storing images and containers may fill up. At the
moment, there are no restrictions on the number and size of blackbox
images on an invoker. So invokers running blackbox actions have a higher
risk for outages.
OW does not have any image cleanup strategy and a limited container
cleanup strategy. Kubernetes has a garbage collection approach [1]. We may
add a cleanup strategy to OW as well or users need their own cleanup
approach outside of OW.
=> Managed runtime images have more control.
All managed runtimes containers run OW code up to the point where the
/init REST endpoint can be used to inject end user action code. So we can
prepare the environment and accept the initial socket connection from the
invoker. Our timeout concept bases these socket connections.
Blackbox containers have more control and can decide to not even open a
listening socket. It's harder for the invoker to deal with such a
non-cooperating container and prevent the container from consuming
resources.
=> Blackbox images can bring much more user code than managed actions.
It's easier to hide malicious code or tools in a blackbox image.
=> Blackbox image pulls keep container infrastructure busy.
As already mentioned, each blackbox invocation may lead to a pull of an
additional Docker image. These pulls consume CPU and network resources
impacting other invocations. The pull mechanism could even be used to
attack Docker Hub.
Any other thoughts or feedback on the risks I described?
Regards, Sven.
[1]
https://kubernetes.io/docs/concepts/cluster-administration/kubelet-garbage-collection/
Rodric Rabbah <ro...@gmail.com> wrote on 2018/11/28 13:09:12:
> From: Rodric Rabbah <ro...@gmail.com>
> To: dev@openwhisk.apache.org
> Date: 2018/11/28 13:09
> Subject: Re: Don't differentiate between blackbox and whitebox images
>
> I think it would be a mistake to blindly merge two container pools -
> docker actions as run today are pulled as needed and can take a long
> time, they’re subject to different kinds of attacks, and can affect
> performance of other tenants (higher noisy neighbors).
>
> If you want to allow more overlap, it should be at least done as a
> configuration parameter which allows different pools to continue to
> exist (note that for small N as in local dev they’re allowed to
> overlap today). Or, used for overflow only as a way of providing
> more elasticity.
>
> -r
>
> > On Nov 28, 2018, at 5:56 AM, Christian Bickel <cb...@apache.org>
wrote:
> >
> > Hi,
> >
> > in the past we divided the invokers into blackbox and whitebox
invokers.
> > This has the effect that one of these two types could be overloaded
while
> > the other type still has free capacity.
> >
> > Does anyone see issues on using every invoker for everything?
> > Or does anyone see any action items that need to be addressed before
we
> > invoke every action-type on every invoker?
> >
> > If not I'll open a PR to not differentiate between these types
anymore.
> >
> > Greetings
> > Christian Bickel
Re: Don't differentiate between blackbox and whitebox images
Posted by Carlos Santana <cs...@gmail.com>.
By configuration you can have different combinations.
Blackbox actions on blackbox invoker only, and regular actions on normal
invoker types only (ie. today)
Blackbox actions on blackbox invoker only, and regular actions on any
invoker type
Any actions on any invoker type
On Wed, Nov 28, 2018 at 7:09 AM Rodric Rabbah <ro...@gmail.com> wrote:
> I think it would be a mistake to blindly merge two container pools -
> docker actions as run today are pulled as needed and can take a long time,
> they’re subject to different kinds of attacks, and can affect performance
> of other tenants (higher noisy neighbors).
>
> If you want to allow more overlap, it should be at least done as a
> configuration parameter which allows different pools to continue to exist
> (note that for small N as in local dev they’re allowed to overlap today).
> Or, used for overflow only as a way of providing more elasticity.
>
> -r
>
> > On Nov 28, 2018, at 5:56 AM, Christian Bickel <cb...@apache.org>
> wrote:
> >
> > Hi,
> >
> > in the past we divided the invokers into blackbox and whitebox invokers.
> > This has the effect that one of these two types could be overloaded while
> > the other type still has free capacity.
> >
> > Does anyone see issues on using every invoker for everything?
> > Or does anyone see any action items that need to be addressed before we
> > invoke every action-type on every invoker?
> >
> > If not I'll open a PR to not differentiate between these types anymore.
> >
> > Greetings
> > Christian Bickel
>
--
Carlos Santana
<cs...@gmail.com>
Re: Don't differentiate between blackbox and whitebox images
Posted by David P Grove <gr...@us.ibm.com>.
Rodric Rabbah <ro...@gmail.com> wrote on 11/28/2018 07:09:12 AM:
>
> I think it would be a mistake to blindly merge two container pools -
> docker actions as run today are pulled as needed and can take a long
> time, they’re subject to different kinds of attacks, and can affect
> performance of other tenants (higher noisy neighbors).
>
> If you want to allow more overlap, it should be at least done as a
> configuration parameter which allows different pools to continue to
> exist (note that for small N as in local dev they’re allowed to
> overlap today). Or, used for overflow only as a way of providing
> more elasticity.
>
Note that if we are using the KubernetesContainerFactory (or I believe the
MesosContainerFactory) the separation at the invoker level is not really
necessarily effective at avoiding noisy neighbors since there is no longer
a 1:1 match from invoker to docker daemons.
--dave
Re: Don't differentiate between blackbox and whitebox images
Posted by Rodric Rabbah <ro...@gmail.com>.
I think it would be a mistake to blindly merge two container pools - docker actions as run today are pulled as needed and can take a long time, they’re subject to different kinds of attacks, and can affect performance of other tenants (higher noisy neighbors).
If you want to allow more overlap, it should be at least done as a configuration parameter which allows different pools to continue to exist (note that for small N as in local dev they’re allowed to overlap today). Or, used for overflow only as a way of providing more elasticity.
-r
> On Nov 28, 2018, at 5:56 AM, Christian Bickel <cb...@apache.org> wrote:
>
> Hi,
>
> in the past we divided the invokers into blackbox and whitebox invokers.
> This has the effect that one of these two types could be overloaded while
> the other type still has free capacity.
>
> Does anyone see issues on using every invoker for everything?
> Or does anyone see any action items that need to be addressed before we
> invoke every action-type on every invoker?
>
> If not I'll open a PR to not differentiate between these types anymore.
>
> Greetings
> Christian Bickel