我正在尝试使用Mesos + Marathon,并通过创建一个由shell脚本组成的小“app”开始简单,该脚本循环每5秒无限次记录一次消息。当我配置该应用程序时,我可以分配各种内存和CPU资源,这引出了我的问题:
如果Marathon直接生成shell脚本,那么它如何限制脚本资源的使用?该脚本可以执行并启动任何内容以消耗所有可用资源。
我理解Docker或其他一些隔离机制会限制进程可以执行的操作但我没有配置(显式)。它是否在运行中创建某种容器而不必显式配置?我在OS X上测试。
答案 0 :(得分:7)
Mesos仅支持" Posix" Mac上的隔离,实际上比实际的资源限制更适合监控,因此在Mac上测试Mesos将无法证明真正的资源隔离。
如果您在Linux计算机/ VM上测试Mesos,则可以设置:
--isolation='cgroups/cpu,cgroups/mem'
启动每个slave时启用cgroups隔离,这将创建一个容器并在其中运行脚本/进程。当容器/进程超过其cpu共享(不是固定的cpus)时,cgroups隔离器将限制cpu利用率,并且如果超过其内存限制,将终止进程(销毁容器)。
另请注意,Mesos 0.21现在支持网络隔离器和可插拔隔离器模块,因此您可以构建自己的gpu隔离器,缓存隔离器等。
如果要启用Docker容器(0.20+),只需设置:
--containerizers='docker,mesos'
启动从站时,然后您可以启动任意docker镜像并在其中运行命令。 Docker仍在下面使用cgroup,因此cgroups隔离器与你在Mesos上运行的Docker镜像完全兼容。
如果您正在使用Mesosphere软件包,则可以通过在/etc/mesos-slave
中创建配置文件将选项传递给Mesos slave,例如:
echo 'docker,mesos' > /etc/mesos-slave/containerizers