4

我正在尝试使用 Mesos + Marathon,并通过创建一个由 shell 脚本组成的小“应用程序”开始简单,该脚本每 5 秒无限循环记录一条消息。当我配置该应用程序时,我可以分配各种内存和 CPU 资源,这导致我的问题:

如果 Marathon 直接生成一个 shell 脚本,那么它如何限制脚本资源的使用?该脚本可以执行并启动任何操作以消耗所有可用资源。

我知道 Docker 或其他一些隔离机制会限制进程可以做什么,但我没有(明确地)配置这个。它是否可以即时创建某种容器而无需我显式配置一个容器?我正在 OS X 上进行测试。

4

1 回答 1

7

Mesos 在 Mac 上只支持“Posix”隔离,这确实是为了监控而不是实际的资源限制,所以在 Mac 上测试 Mesos 将无法演示真正的资源隔离。

如果你在 Linux 机器/VM 上测试 Mesos,你可以设置:

--isolation='cgroups/cpu,cgroups/mem'

当启动每个从属以启用 cgroups 隔离时,这将创建一个容器并在其中运行您的脚本/进程。当容器/进程超过其 cpu 份额(非固定 cpus)时,cgroups 隔离器将限制 cpu 利用率,如果超过其内存限制,将终止进程(销毁容器)。

另请注意,Mesos 0.21 现在支持网络隔离器和可插拔隔离器模块,因此您可以构建自己的 gpu 隔离器、缓存隔离器等。

如果要启用 Docker 容器化程序(0.20+),只需设置:

--containerizers='docker,mesos'

启动从属服务器时,您可以启动任意 docker 镜像并在其中运行命令。Docker 在底层仍然使用 cgroups,因此 cgroups 隔离器与您在 Mesos 上运行的 Docker 镜像完全兼容。

如果您使用的是 Mesosphere 包,您可以通过在 中创建配置文件将选项传递给 Mesos 从站/etc/mesos-slave,例如:

echo 'docker,mesos' > /etc/mesos-slave/containerizers
于 2014-12-19T09:21:50.510 回答