mesos - Marathon 如何限制直接调用应用的资源?

标签 mesos marathon

我正在尝试使用 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/

相关文章:

mesos - Marathon 以状态 1 退出

kubernetes - 最先进的作业调度(容器、混合云)?

docker - 使用Zookeeper来发现运行docker的mesos从属的服务

docker - Docker Mesosphere/chronos容器在启动后立即失败

java - Mesos java 应用程序监控

rest - 如何使用Apache Marathon REST API扩展Docker实例?

containers - 如何衡量Mesos中每个容器的CPU利用率?

java - Spark 作业失败,因为它找不到 hadoop core-site.xml

docker - 如何在Mesos上使用Docker Swarm?

docker - 在 BRIDGE 模式下运行 Chronos docker 镜像