资源隔离
mesos采用插件的方式提供多种隔离机制, 以便为不同的任务提供沙盒环境
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操作)
使用:
- 在slave节点安装docker cli
- 在启动slave时在参数containerizers中添加docker或直接设置为docker
- 设置iptables
iptables -A INPUT -s 172.17.0.0/16 -i docker0 -p tcp -j ACCEPT
- docker镜像可以以任务或者执行器的方式启动
- external containerizer
资源的隔离由开发者进行实现和管理, 由外部容器机和外部容器机程序,外部容器机在mesos中已经提供并提供了基于mesos slave外部插件的容器API,程序员需要实现外部容器机程序,外部容器使用shell方式调用外部容器机, 参数通过stdin和stdout传递
需要在启动slave时指定--isolation=external和--containerizer_path=/path/to/external/containterizer
网友评论