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