資源隔離
mesos采用插件的方式提供多種隔離機(jī)制, 以便為不同的任務(wù)提供沙盒環(huán)境
說明:
mesos以Containerizer API的方式支持不同的容器機(jī)實(shí)現(xiàn), 目前mesos支持mesos containerizer, docker containerizer和external containerizer, 默認(rèn)使用mesos containerizer, 通過external containerizer我們可以自己實(shí)現(xiàn)自己的容器機(jī)和隔離器
- mesos containerizer
mesos containerizer是mesos自己實(shí)現(xiàn)的容器機(jī), 提供兩種類型的隔離器: 基于posix系統(tǒng)的進(jìn)程級別格式和基于linux內(nèi)核特性cgroups隔離仇穗,containerizer通過isolator api對兩種隔離器進(jìn)行控制尚辑。
cgroups本身提供cpu和mem的隔離,在mesos containerizer還另外提供了磁盤隔離尘应,共享文件系統(tǒng)隔離和PID namespace隔離
- docker containerizer
mesos>=0.20原生支持docker, docker containerizer主要工作是將任務(wù)或執(zhí)行器的啟動和銷毀過程翻譯成對應(yīng)的Docker CLI命令(docker可支持remote api操作)
使用:
- 在slave節(jié)點(diǎn)安裝docker cli
- 在啟動slave時(shí)在參數(shù)containerizers中添加docker或直接設(shè)置為docker
- 設(shè)置iptables
iptables -A INPUT -s 172.17.0.0/16 -i docker0 -p tcp -j ACCEPT
- docker鏡像可以以任務(wù)或者執(zhí)行器的方式啟動
- external containerizer
資源的隔離由開發(fā)者進(jìn)行實(shí)現(xiàn)和管理, 由外部容器機(jī)和外部容器機(jī)程序,外部容器機(jī)在mesos中已經(jīng)提供并提供了基于mesos slave外部插件的容器API萨惑,程序員需要實(shí)現(xiàn)外部容器機(jī)程序隔心,外部容器使用shell方式調(diào)用外部容器機(jī), 參數(shù)通過stdin和stdout傳遞
需要在啟動slave時(shí)指定--isolation=external和--containerizer_path=/path/to/external/containterizer