Mesos 资源隔离

资源隔离

mesos采用插件的方式提供多种隔离机制, 以便为不同的任务提供沙盒环境

Mesos 资源隔离_第1张图片
mesos_slave_container_isolation.png

说明:
mesos以Containerizer API的方式支持不同的容器机实现, 目前mesos支持mesos containerizer, docker containerizer和external containerizer, 默认使用mesos containerizer, 通过external containerizer我们可以自己实现自己的容器机和隔离器

  • mesos containerizer

mesos containerizer是mesos自己实现的容器机, 提供两种类型的隔离器: 基于posix系统的进程级别格式和基于linux内核特性cgroups隔离,containerizer通过isolator api对两种隔离器进行控制。

cgroups本身提供cpu和mem的隔离,在mesos containerizer还另外提供了磁盘隔离,共享文件系统隔离和PID namespace隔离

  • docker containerizer

mesos>=0.20原生支持docker, docker containerizer主要工作是将任务或执行器的启动和销毁过程翻译成对应的Docker CLI命令(docker可支持remote api操作)

使用:

  1. 在slave节点安装docker cli
  2. 在启动slave时在参数containerizers中添加docker或直接设置为docker
  3. 设置iptables
    iptables -A INPUT -s 172.17.0.0/16 -i docker0 -p tcp -j ACCEPT
  4. docker镜像可以以任务或者执行器的方式启动
  • external containerizer

资源的隔离由开发者进行实现和管理, 由外部容器机和外部容器机程序,外部容器机在mesos中已经提供并提供了基于mesos slave外部插件的容器API,程序员需要实现外部容器机程序,外部容器使用shell方式调用外部容器机, 参数通过stdin和stdout传递

需要在启动slave时指定--isolation=external和--containerizer_path=/path/to/external/containterizer

你可能感兴趣的:(Mesos 资源隔离)