2015-07-10 161 views
2

我試圖Dockerizing Zookeeper/Marathon/Mesos和從Dockerized Mesos集羣部署Docker容器(可能是愚蠢的)任務。到目前爲止,我在兩個物理分離的節點上有一個工作的Mesos集羣:一個節點同時運行一個Mesos master和一個slave(容器Dockerfiles鏈接),第二個節點只運行一個從屬節點。他們似乎運作良好;我能夠通過Marathon(也是它自己的容器,在主節點和從屬節點上運行節點)提交非常簡單的作業,並且它們可以成功完成。Docker應用程序部署掛在Marathon上,在Mesos上失敗

但是,當我試圖submit Docker containers through the Marathon API時,它好像掛起。 Marathon界面掛在「部署」上,即使放置15分鐘後,也不會改變,停止,重新提交併讓它再坐15分鐘。

Marathon UI, depicting seemingly frozen deployment of Docker task

與此同時,任務仍然被提交給Mesos奴隸; Mesos UI正在向左和向右報告FAILED任務。

Mesos UI, depicting failed tasks

EDIT 1

每個執行者所得到的沙箱日誌也完全是空的。

empty sandbox

EDIT 2

找到一些有趣的事情埋在從日誌:

slave logs

的利益線:

所有已啓用的容器(mesos)都不能爲提供的TaskInfo/ExecutorInfo消息創建容器。

它看起來像集裝箱沒有運行,從我所看到的,它甚至沒有考慮碼頭作爲集裝箱。我遵循配置here部署Docker作業;如果Mesos從站本身就是Docker容器,這是否會發生變化?

我有些超出我的元素,無法找到這些行的任何引用。任何想法發生了什麼?

+0

爲了幫助您分類問題,任務日誌非常重要。您可以通過單擊沙箱鏈接從WebUI獲取它們。 – rukletsov

+1

不幸的是,沙盒鏈接報告任何相應目錄中的「無文件」。 – Magsol

回答

4

什麼是您的從屬docker run命令? 這裏有幾個參數,其他人發現有用:

--net host \ 
--pid host \ 
--privileged \ 
--env MESOS_CONTAINERIZERS=docker,mesos \ 
--env MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins \ 
-v /var/run/docker.sock:/var/run/docker.sock \ 
-v /sys:/sys:ro \ 
-v /usr/bin/docker:/usr/bin/docker:ro \ 
-v /lib64/libdevmapper.so.1.02:/lib/libdevmapper.so.1.02:ro \ 
-v /home/core/.dockercfg:/root/.dockercfg:ro \ 

還要注意的是,你不應該命名容器mesos-slave爲副會嘗試刪除與mesos-在恢復任何前綴容器。

僅供參考,Mesos使用docker --version命令查看是否可以使用碼頭集裝箱容器。嘗試啓動一個只運行docker --version的Marathon任務,看看它是否可以在你的dockerized slave環境中工作。

+1

我發現通過大量搜索,有兩個關鍵配置行(包括你發佈的):'-v/sys:/ sys'和'-v /var/run/docker.sock:/var/run/docker.sock'。包括這兩條線使一切都很完美。我很高興能夠正常工作,但如果您有任何有關這些選項的信息(即*他們爲什麼*他們解決了這個問題),我很樂意聽到它! – Magsol

+0

作爲參考,這是我現在使用的'run'調用:https://github.com/magsol/littlejohn/blob/master/dockerfiles/lj-mesos-slave/start.sh – Magsol

+0

@Magsol我可以'你似乎弄清楚你在哪裏輸入這些配置?您是否在Docker中運行Mesos主節點和從屬節點? –