marathon如何限制直接调用的应用程序的资源?

x6h2sr28  于 2021-06-21  发布在  Mesos
关注(0)|答案(1)|浏览(269)

我正在试验mesos+marathon,从创建一个由shell脚本组成的小“应用程序”开始,每5秒无限循环地记录一条消息。当我配置该应用程序时,我可以分配各种内存和cpu资源,这就引出了我的问题:
如果marathon直接生成shell脚本,那么它如何限制脚本资源的使用?该脚本可以执行并启动任何操作以消耗所有可用资源。
我知道docker或其他隔离机制会限制进程可以做什么,但我没有(显式地)配置它。它是在动态地创建某种容器而不必显式地配置容器吗?我正在OSX上测试。

dzjeubhm

dzjeubhm1#

mesos只支持mac上的“posix”隔离,这实际上更多的是用于监视而不是实际的资源限制,因此在mac上测试mesos将无法证明真正的资源隔离。
如果在linux计算机/vm上测试mesos,可以设置:

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

当启动每个从机以启用cgroups隔离时,它将创建一个容器并在其中运行脚本/进程。cgroups隔离器将在容器/进程超过其cpu共享(非固定cpu)时限制cpu利用率,并在进程超过其内存限制时终止进程(销毁容器)。
另外请注意,mesos0.21现在支持网络隔离器和可插拔隔离器模块,因此您可以构建自己的gpu隔离器、缓存隔离器等。
如果要启用docker集装箱船(0.20+),只需设置:

--containerizers='docker,mesos'

启动从属时,然后可以启动任意docker映像并在其中运行命令。docker仍然在下面使用cgroups,因此cgroups隔离器与在mesos上运行的docker图像完全兼容。
如果您使用的是mesosphere包,您可以通过在中创建配置文件将选项传递给mesos slave /etc/mesos-slave ,例如:

echo 'docker,mesos' > /etc/mesos-slave/containerizers

相关问题