You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@aurora.apache.org by Adrian Fraisse <ad...@gmail.com> on 2016/05/17 15:08:17 UTC
Mesos executor dependencies using docker images
Hello fellow Aurora enthusiasts,
I am struggling with the docker containerizer. Jobs launched using docker containers end up failing, because Thermos cannot find Mesos's required dependencies, such as libcurl, libsasl, libsvn… See trace below, with libsasl2 :
Traceback (most recent call last):
File "apache/aurora/executor/bin/thermos_executor_main.py", line 45, in <module>
from mesos.native import MesosExecutorDriver
File "/root/.pex/install/mesos.native-0.27.2-py2.7-linux-x86_64.egg.6c53d177e078864264dbb5af282e84d7c2cdc3a8/mesos.native-0.27.2-py2.7-linux-x86_64.egg/mesos/native/__init__.py", line 17, in <module>
from ._mesos import MesosExecutorDriverImpl
ImportError: libsasl2.so.2: cannot open shared object file: No such file or directory
Having stumbled upon the issue quite a lot, I found a way to fix it : having the required dependencies installed on the containers I need to run. It’s annoying and feels kinda dirty though. I dug into Mesos documentation and found this at http://mesos.apache.org/documentation/latest/container-image/ :
For a general purpose executor (e.g., thermos) of a framework (e.g., Aurora), requiring it and all its dependencies to be present in all possible container images that a user might use is not trivial.
Therefore, my question is : do I need to add Mesos’s dependencies to each and every docker image I want to run (and is this best practice) or am I doing something terribly wrong ?
Thanks for your support !
Adrian
Re: Mesos executor dependencies using docker images
Posted by Adrian Fraisse <ad...@gmail.com>.
Hi Stephan,
I would be happy to contribute! Btw, is there an ETA on docker support with Mesos's Unified Containerizer ?
Best regards,
Adrian
> Le 17 mai 2016 à 17:54, Erb, Stephan <St...@blue-yonder.com> a écrit :
>
> Excellent point.
>
> Are you willing to contribute that patch yourself? I would happily serve as a reviewer if you submit a patch and add me as a reviewer (http://aurora.apache.org/documentation/latest/contributing/ <http://aurora.apache.org/documentation/latest/contributing/>).
>
> Thanks,
> Stephan
> From: Adrian Fraisse <ad...@gmail.com>
> Sent: Tuesday, May 17, 2016 17:44
> To: user@aurora.apache.org
> Subject: Re: Mesos executor dependencies using docker images
>
> Hi Stephan,
>
> Thank you for your reply. Knowing this, I will simply write a script to automatize the update & commit of our images and it should suffice for now.
>
> May I suggest a patch to http://aurora.apache.org/documentation/latest/features/containers/ <http://aurora.apache.org/documentation/latest/features/containers/> mentioning Mesos dependencies though ?
>
> Best regards,
> Adrian
>
>> Le 17 mai 2016 à 17:35, Erb, Stephan <Stephan.Erb@blue-yonder.com <ma...@blue-yonder.com>> a écrit :
>>
>> Hi Adrian,
>>
>> your analysis and solution is correct. As of today, the Aurora executor runs within the container. It is using a native mesos library in order to communicate with the agent, and therefore requires you to ship Python2.7 + all Mesos dependencies in each container.
>>
>> Without doubt, this is not an optimal solution. We are therefore investigating alternatives: https://issues.apache.org/jira/browse/AURORA-1690 <https://issues.apache.org/jira/browse/AURORA-1690>
>>
>> Best Regards,
>> Stephan
>> From: Adrian Fraisse <adrian.fraisse@gmail.com <ma...@gmail.com>>
>> Sent: Tuesday, May 17, 2016 17:08
>> To: user@aurora.apache.org <ma...@aurora.apache.org>
>> Subject: Mesos executor dependencies using docker images
>>
>> Hello fellow Aurora enthusiasts,
>>
>> I am struggling with the docker containerizer. Jobs launched using docker containers end up failing, because Thermos cannot find Mesos's required dependencies, such as libcurl, libsasl, libsvn… See trace below, with libsasl2 :
>>
>> Traceback (most recent call last):
>> File "apache/aurora/executor/bin/thermos_executor_main.py", line 45, in <module>
>> from mesos.native import MesosExecutorDriver
>> File "/root/.pex/install/mesos.native-0.27.2-py2.7-linux-x86_64.egg.6c53d177e078864264dbb5af282e84d7c2cdc3a8/mesos.native-0.27.2-py2.7-linux-x86_64.egg/mesos/native/__init__.py", line 17, in <module>
>> from ._mesos import MesosExecutorDriverImpl
>> ImportError: libsasl2.so.2: cannot open shared object file: No such file or directory
>>
>>
>> Having stumbled upon the issue quite a lot, I found a way to fix it : having the required dependencies installed on the containers I need to run. It’s annoying and feels kinda dirty though. I dug into Mesos documentation and found this athttp://mesos.apache.org/documentation/latest/container-image/ <http://mesos.apache.org/documentation/latest/container-image/> :
>> For a general purpose executor (e.g., thermos) of a framework (e.g., Aurora), requiring it and all its dependencies to be present in all possible container images that a user might use is not trivial.
>>
>> Therefore, my question is : do I need to add Mesos’s dependencies to each and every docker image I want to run (and is this best practice) or am I doing something terribly wrong ?
>>
>> Thanks for your support !
>>
>> Adrian
>
>
Re: Mesos executor dependencies using docker images
Posted by "Erb, Stephan" <St...@blue-yonder.com>.
?Excellent point.
Are you willing to contribute that patch yourself? I would happily serve as a reviewer if you submit a patch and add me as a reviewer (http://aurora.apache.org/documentation/latest/contributing/).
Thanks,
Stephan
________________________________
From: Adrian Fraisse <ad...@gmail.com>
Sent: Tuesday, May 17, 2016 17:44
To: user@aurora.apache.org
Subject: Re: Mesos executor dependencies using docker images
Hi Stephan,
Thank you for your reply. Knowing this, I will simply write a script to automatize the update & commit of our images and it should suffice for now.
May I suggest a patch to http://aurora.apache.org/documentation/latest/features/containers/ mentioning Mesos dependencies though ?
Best regards,
Adrian
Le 17 mai 2016 à 17:35, Erb, Stephan <St...@blue-yonder.com>> a écrit :
Hi Adrian,
your analysis and solution is correct. As of today, the Aurora executor runs within the container. It is using a native mesos library in order to communicate with the agent, and therefore requires you to ship Python2.7 + all Mesos dependencies in each container.
Without doubt, this is not an optimal solution. We are therefore investigating alternatives: https://issues.apache.org/jira/browse/AURORA-1690?
Best Regards,
Stephan
________________________________
From: Adrian Fraisse <ad...@gmail.com>>
Sent: Tuesday, May 17, 2016 17:08
To: user@aurora.apache.org<ma...@aurora.apache.org>
Subject: Mesos executor dependencies using docker images
Hello fellow Aurora enthusiasts,
I am struggling with the docker containerizer. Jobs launched using docker containers end up failing, because Thermos cannot find Mesos's required dependencies, such as libcurl, libsasl, libsvn... See trace below, with libsasl2 :
Traceback (most recent call last):
File "apache/aurora/executor/bin/thermos_executor_main.py", line 45, in <module>
from mesos.native import MesosExecutorDriver
File "/root/.pex/install/mesos.native-0.27.2-py2.7-linux-x86_64.egg.6c53d177e078864264dbb5af282e84d7c2cdc3a8/mesos.native-0.27.2-py2.7-linux-x86_64.egg/mesos/native/__init__.py", line 17, in <module>
from ._mesos import MesosExecutorDriverImpl
ImportError: libsasl2.so.2: cannot open shared object file: No such file or directory
Having stumbled upon the issue quite a lot, I found a way to fix it : having the required dependencies installed on the containers I need to run. It's annoying and feels kinda dirty though. I dug into Mesos documentation and found this athttp://mesos.apache.org/documentation/latest/container-image/ :
For a general purpose executor (e.g., thermos) of a framework (e.g., Aurora), requiring it and all its dependencies to be present in all possible container images that a user might use is not trivial.
Therefore, my question is : do I need to add Mesos's dependencies to each and every docker image I want to run (and is this best practice) or am I doing something terribly wrong ?
Thanks for your support !
Adrian
Re: Mesos executor dependencies using docker images
Posted by Adrian Fraisse <ad...@gmail.com>.
Hi Stephan,
Thank you for your reply. Knowing this, I will simply write a script to automatize the update & commit of our images and it should suffice for now.
May I suggest a patch to http://aurora.apache.org/documentation/latest/features/containers/ mentioning Mesos dependencies though ?
Best regards,
Adrian
> Le 17 mai 2016 à 17:35, Erb, Stephan <St...@blue-yonder.com> a écrit :
>
> Hi Adrian,
>
> your analysis and solution is correct. As of today, the Aurora executor runs within the container. It is using a native mesos library in order to communicate with the agent, and therefore requires you to ship Python2.7 + all Mesos dependencies in each container.
>
> Without doubt, this is not an optimal solution. We are therefore investigating alternatives: https://issues.apache.org/jira/browse/AURORA-1690 <https://issues.apache.org/jira/browse/AURORA-1690>
>
> Best Regards,
> Stephan
> From: Adrian Fraisse <ad...@gmail.com>
> Sent: Tuesday, May 17, 2016 17:08
> To: user@aurora.apache.org
> Subject: Mesos executor dependencies using docker images
>
> Hello fellow Aurora enthusiasts,
>
> I am struggling with the docker containerizer. Jobs launched using docker containers end up failing, because Thermos cannot find Mesos's required dependencies, such as libcurl, libsasl, libsvn… See trace below, with libsasl2 :
>
> Traceback (most recent call last):
> File "apache/aurora/executor/bin/thermos_executor_main.py", line 45, in <module>
> from mesos.native import MesosExecutorDriver
> File "/root/.pex/install/mesos.native-0.27.2-py2.7-linux-x86_64.egg.6c53d177e078864264dbb5af282e84d7c2cdc3a8/mesos.native-0.27.2-py2.7-linux-x86_64.egg/mesos/native/__init__.py", line 17, in <module>
> from ._mesos import MesosExecutorDriverImpl
> ImportError: libsasl2.so.2: cannot open shared object file: No such file or directory
>
>
> Having stumbled upon the issue quite a lot, I found a way to fix it : having the required dependencies installed on the containers I need to run. It’s annoying and feels kinda dirty though. I dug into Mesos documentation and found this athttp://mesos.apache.org/documentation/latest/container-image/ <http://mesos.apache.org/documentation/latest/container-image/> :
> For a general purpose executor (e.g., thermos) of a framework (e.g., Aurora), requiring it and all its dependencies to be present in all possible container images that a user might use is not trivial.
>
> Therefore, my question is : do I need to add Mesos’s dependencies to each and every docker image I want to run (and is this best practice) or am I doing something terribly wrong ?
>
> Thanks for your support !
>
> Adrian
Re: Mesos executor dependencies using docker images
Posted by "Erb, Stephan" <St...@blue-yonder.com>.
Hi Adrian,
your analysis and solution is correct. As of today, the Aurora executor runs within the container. It is using a native mesos library in order to communicate with the agent, and therefore requires you to ship Python2.7 + all Mesos dependencies in each container.
Without doubt, this is not an optimal solution. We are therefore investigating alternatives: https://issues.apache.org/jira/browse/AURORA-1690?
Best Regards,
Stephan
________________________________
From: Adrian Fraisse <ad...@gmail.com>
Sent: Tuesday, May 17, 2016 17:08
To: user@aurora.apache.org
Subject: Mesos executor dependencies using docker images
Hello fellow Aurora enthusiasts,
I am struggling with the docker containerizer. Jobs launched using docker containers end up failing, because Thermos cannot find Mesos's required dependencies, such as libcurl, libsasl, libsvn... See trace below, with libsasl2 :
Traceback (most recent call last):
File "apache/aurora/executor/bin/thermos_executor_main.py", line 45, in <module>
from mesos.native import MesosExecutorDriver
File "/root/.pex/install/mesos.native-0.27.2-py2.7-linux-x86_64.egg.6c53d177e078864264dbb5af282e84d7c2cdc3a8/mesos.native-0.27.2-py2.7-linux-x86_64.egg/mesos/native/__init__.py", line 17, in <module>
from ._mesos import MesosExecutorDriverImpl
ImportError: libsasl2.so.2: cannot open shared object file: No such file or directory
Having stumbled upon the issue quite a lot, I found a way to fix it : having the required dependencies installed on the containers I need to run. It's annoying and feels kinda dirty though. I dug into Mesos documentation and found this at http://mesos.apache.org/documentation/latest/container-image/ :
For a general purpose executor (e.g., thermos) of a framework (e.g., Aurora), requiring it and all its dependencies to be present in all possible container images that a user might use is not trivial.
Therefore, my question is : do I need to add Mesos's dependencies to each and every docker image I want to run (and is this best practice) or am I doing something terribly wrong ?
Thanks for your support !
Adrian