> On March 11, 2017, 4:28 a.m., Stephan Erb wrote: > > I need a little bit more context to understand what is going on here: > > > > * Do you plan to use this with Thermos or an alternative executor? Or both? > > * It seems like we don't need this for Thermos as we already create > > mountpoints when needed (see do_mount() in > > aurora/executor/common/sandbox.py) > > * Switching the flag will run the executor within the filesystem image and > > thus require Python and all libmesos dependencies within the image. This > > sounds like a big downfall just for gaining the mkdir. > > Joshua Cohen wrote: > +1, it's unclear to me why this is necessary. If it is, I'd consider it a > bug in the sandbox code that prepares mounts. It should be making any > directories that don't already exist under taskfs: > > > # If we're mounting a file into the task filesystem, the mount call > will fail if the mount > # point doesn't exist. In that case we'll create an empty file to > mount over. > if os.path.isfile(source) and not os.path.exists(destination): > safe_mkdir(os.path.dirname(destination)) > touch(destination) > else: > safe_mkdir(destination) > > > https://github.com/apache/aurora/blob/master/src/main/python/apache/aurora/executor/common/sandbox.py#L284-L290 > > Zameer Manji wrote: > I see that I have been unclear here. I will take some time to better > document the problem to explain why I think this is necesssary.
Ok, after some thought and understanding here are my reasons for this patch: * This method allows operators to use a cluster with other executors that are not Thermos and are statically linked binaries that can be run in any FS image. * This allows to use other executors (or the Command Executor) that do not have the code to do the mount preperation and `chroot`. This allows for uniformity in a cluster that has multiple frameworks. By having consistently constructed containers, this means tooling can ineract with the container in a uniform manner (ie `mesos-cli` or `nsneter`). * There are some drawbacks in the method thermos uses, including exposing the host filesystem to privlidged users in the task. For example, if I launch a task with the MesosContainerizer with pid isolation and fs isolation in vagrant and use nsenter to enter the namespace of of the task, I still have access to the host namespace. Inside the filesystem: ``` root@aurora:/# ps auxf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 160 0.0 0.0 20252 2068 ? S 06:56 0:00 -bash root 188 0.0 0.0 17488 1148 ? R+ 06:57 0:00 _ ps auxf root 1 0.0 0.6 163396 19680 ? Ss 06:52 0:00 mesos-containerizer launch --command={"shell":true,"value":"${MESOS_SANDBOX=.}\/thermos_executor.pex --announcer-en root 8 0.0 0.0 4440 648 ? S 06:52 0:00 sh -c ${MESOS_SANDBOX=.}/thermos_executor.pex --announcer-ensemble localhost:2181 --announcer-zookeeper-auth-config root 9 0.6 1.3 1075684 42512 ? Sl 06:52 0:01 _ python2.7 /var/lib/mesos/slaves/5d33ec50-e419-4df8-9640-5680fd0921d1-S0/frameworks/5d33ec50-e419-4df8-9640-5680 root 34 0.2 0.7 77712 23416 ? S 06:52 0:00 _ /usr/bin/python2.7 /var/lib/mesos/slaves/5d33ec50-e419-4df8-9640-5680fd0921d1-S0/frameworks/5d33ec50-e419-4 www-data 39 0.0 0.6 75652 21200 ? Ss 06:52 0:00 _ /usr/bin/python2.7 /var/lib/mesos/slaves/5d33ec50-e419-4df8-9640-5680fd0921d1-S0/frameworks/5d33ec50-e4 www-data 41 0.0 0.0 20040 1496 ? S 06:52 0:00 _ /bin/bash -c while true; do echo hello world sleep 10 done www-data 187 0.0 0.0 4228 348 ? S 06:57 0:00 _ sleep 10 root@aurora:/# cat /etc/issue Debian GNU/Linux 8 \n \l root@aurora:/# cat /proc/1/root/etc/issue Ubuntu 14.04.5 LTS \n \l ``` I feel the original goal is noble, but creates a lot of complexity for operators, tools, cluster operators and it "goes against the grain" of what the Mesos API is requesting frameworks to do. I feel this flag has minimal (no?) negative effects, and enhances the utility of the scheduler. - Zameer ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/57524/#review168709 ----------------------------------------------------------- On March 13, 2017, 9:36 a.m., Zameer Manji wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/57524/ > ----------------------------------------------------------- > > (Updated March 13, 2017, 9:36 a.m.) > > > Review request for Aurora, Santhosh Kumar Shanmugham and Stephan Erb. > > > Bugs: AURORA-1903 > https://issues.apache.org/jira/browse/AURORA-1903 > > > Repository: aurora > > > Description > ------- > > The mesos unified containerizer does not support absolute container path > mounts if no rootfs is set. This allows operators to switch between our > current behaviour (mounting images as a volume) and setting the rootfs. See > AURORA-1903 for more detailed analysis. > > > Diffs > ----- > > src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java > f0b148cd158d61cd89cc51dca9f3fa4c6feb1b49 > > src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorModule.java > 4dac9757a65e144142d36ee921b85a02a5311fe5 > > src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettings.java > 5c987fd051728486172c8afd34219e86d56f00d5 > src/main/java/org/apache/aurora/scheduler/mesos/MesosTaskFactory.java > 0d639f66db456858278b0485c91c40975c3b45ac > src/main/java/org/apache/aurora/scheduler/mesos/TestExecutorSettings.java > e1cd81e6fbd98f23046e6e775be268be4310c62a > > src/test/java/org/apache/aurora/scheduler/mesos/MesosTaskFactoryImplTest.java > 93cc34cf8393f969087cd0fd6f577228c00170e9 > > > Diff: https://reviews.apache.org/r/57524/diff/1/ > > > Testing > ------- > > > Thanks, > > Zameer Manji > >