[+]文章目录

MesosContainerizer 使用Linux特有的功能(比如控制cgroups和namespaces)来分隔执行器使用的资源,从而提供了比较轻量级的容器化和执行器的资源隔离效果。因为其功能是可以配置组合的,所以操作人员也可以选择使用不同的分隔方式。

Mesos同时也对POSIX系统提供基本的支持,比如OSX,但没有实际可用的资源隔离功能,只能提供资源的使用报告。

共享文件系统

在linux主机上可选用共享文件系统 分隔器,从而可以使每个容器能对共享文件系统的视图进行修改。

可以通过在ExecutorInfo里的ContainerInfo的配置进行设置,即通过应用框架本身设计或者对–default_container_info 被控flag的值来对应配置。

ContainerInfo 指定了Volumes值,它把共享文件系统的 host\_path 映射到容器中的路径container\_path,执行权限为只读或者可读写。 如果主机路径host\_path是绝对路径,其下子目录也可以在每个容器的 container\_path 里进行相应操作。 如果主机路径host\_path是相对路径,则会以执行器工作目录为其对应的上级目录。当新建目录时,会复制共享文件系统里存在的相应目录(一定存在的)权限设置。

此隔离器一般的使用场景是把共享文件系统的某部分分配给每个容器作为私有空间。 比如,一个私有的"/tmp" 目录,主机端可通过 host\_path="tmp" 访问,容器端则是通过container\_path="/tmp" 访问,容器会在执行器的工作目录下新建一个 tmp目录(mode 1777),同时把其挂载到容器的 tmp目录,这对容器内运行中的进程是可见的,但容器将无法看到主机和其他容器的 /tmp目录。

进程号(PID)命名空间

进程号命名空间级隔离可把每个容器放在独立的进程号命名空间里,这样做的好处有二:

  1. 可见度控制: 容器命名空间之外的进程相对于容器内部运行的进程(比如执行器和子进程)是不可见的。
  2. 一门清的清理方法:在命名空间里的主导线程执行中断操作,将会中断整个命名空间里的所有线程。

在销毁容器的时候,加载器将使用方法2而不是冻结cgroup,以避开在在OOM状态下cgroups冻结会引发的kernel的问题。

/proc目录会被挂载,以便类似于ps 的工具集可以正常工作。

Posix磁盘隔离

Posix磁盘隔离只提供基本的磁盘使用隔离功能,可用于监测每个沙箱的磁盘使用情况以及可选择的强制磁盘使用配额。此功能可在 Linux和 OS X上使用。

为了启用Posix磁盘隔离,可以在启动被控端时,在--isolation配置标识之前添加posix/disk。

默认情况下,Posix磁盘隔离不启用限额设置,可在启动被控端时通过指定--enforce_container_disk_quota配置项来启动此功能。

Posix磁盘隔离器通过运行du命令 ,周期性的监测磁盘使用情况。监测结果可在资源统计终端(/monitor/statistics.json)中查看。

执行 du 命令的间隔,可通过被控端的--container_disk_watch_interval配置项来进行设置,默认是15秒一次。例如--container_disk_watch_interval=1mins可将监测间隔设为一分钟一次。


« 前一篇