我正在尝试使用 Mesos + Marathon,并通过创建一个由 shell 脚本组成的小“应用程序”开始简单,该脚本每 5 秒无限循环记录一条消息。当我配置该应用程序时,我可以分配各种内存和 CPU 资源,这导致我的问题:
如果 Marathon 直接生成一个 shell 脚本,那么它如何限制脚本资源的使用?该脚本可以执行并启动任何操作以消耗所有可用资源。
我知道 Docker 或其他一些隔离机制会限制进程可以做什么,但我没有(明确地)配置这个。它是否可以即时创建某种容器而无需我显式配置一个容器?我正在 OS X 上进行测试。
最佳答案
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 包,您可以通过在
/etc/mesos-slave
中创建配置文件将选项传递给 Mesos 从站。 ,例如:echo 'docker,mesos' > /etc/mesos-slave/containerizers
关于mesos - Marathon 如何限制直接调用应用的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27560116/