[ 
https://issues.apache.org/jira/browse/MESOS-6540?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15633801#comment-15633801
 ] 

Jie Yu commented on MESOS-6540:
-------------------------------

I think there are two problems here we try to solve:

1) Solving the issue for old style command task so that we can find the proper 
namespace to enter for debugging support
2) Moving containerizer launch to the host namespaces and let the process it 
exes be the PID 1

For 1), containerizer launch and the executor are in the namespaces (except for 
mnt namespace), i think we can use a short term work around to solve that 
because we will eventually deprecate the old style command task.
For 2), it a more boarder discussion. that probably means that we need to 
ns::clone from linux launcher to containerizer launch. That means the Launcher 
interface should hide the details about how user process are created. It should 
take a ContainerLaunchInfo in fork and returns a pid that containerizer will 
checkpoint. The pid will be the pid of the actual user process. The 
mesos-containerizer launch helper will be a detail to Launcher. If ns::clone is 
in containerizer launch, then it'll properly send back the translated pid to 
containerizer launch which can communicate this pid back to agent using a 
simple pipe.

> Pass the forked pid from `containerizer launch` to the agent and checkpoint 
> it.
> -------------------------------------------------------------------------------
>
>                 Key: MESOS-6540
>                 URL: https://issues.apache.org/jira/browse/MESOS-6540
>             Project: Mesos
>          Issue Type: Task
>            Reporter: Kevin Klues
>            Assignee: Kevin Klues
>              Labels: debugging, mesosphere
>
> Right now the agent only knows about the pid of the "init" process forked by 
> {{launcher->fork()}}. However, in order to properly enter the namespaces of a 
> task for a nested container, we actually need the pid of the process that 
> gets launched by the {{containerizer launch}} binary.
> Using this pid, isolators can properly enter the namespaces of the actual 
> *task* or *executor* launched by the {{containerizer launch}} binary instead 
> of just the namespaces of the "init" process (which may be different).
> This will involve opening a domain socket with the {{containerizer launch}} 
> binary and passing the translated pid from the forked process back to the 
> agent.  We can chieve this by opening the socket on the agent and passing the 
> path to it using {{launchFlags}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to