官术网_书友最值得收藏!

2.4 Swarm Mode的圖形界面

2.4.1 Swarm Mode UI現狀

到目前為止,本書介紹的操作都是在命令行中實現的。而在實際管理集群時,特別是在需要持續(xù)觀察集群狀態(tài)和快速獲取集群全貌時,總是通過輸入這么多命令來刷屏查看信息就顯得比較笨拙。

在Docker的企業(yè)版本中包含了一款管理Swarm集群的圖形界面工具,被稱為Universal Control Plane(簡稱UCP),它提供了對集群、節(jié)點、網絡、存儲、服務、應用組等全方位的可視化管理能力,如圖2-5所示。

圖2-5 Universal Control Plane的儀表盤頁面

開源社區(qū)里也曾一度出現過許多Docker容器管理界面,但隨著Docker增加了Swarm的組件,隨后又從經典Swarm集群轉移到Swarm Mode集群,許多相關的項目已不再繼續(xù)更新了。在許多國內開發(fā)者參與貢獻的項目中,相對知名的有數人云公司設計的Crane界面https://github.com/Dataman-Cloud/crane和個人開發(fā)者Helyho設計的DockerFly界面https://github.com/helyho/DockerFly,這兩個項目都對最新的Swarm Mode提供了支持,雖然代碼活躍度都已不高,有興趣的讀者不妨保持關注。

在社區(qū)項目中,最值得一提的是Portainerhttps://github.com/portainer/portainer,這個項目從Docker誕生后不久(2013年6月)開始啟動,一路跟隨著Docker踏過單機時代的容器和經典Swarm時代的容器集群,現在完美支持了新的Swarm Mode集群,并保持著良好的活躍度和發(fā)布頻率,是Swarm Mode集群可視化產品中值得一試的開源方案。

2.4.2 Portainer

Portainer的前端界面采用Angular框架,代碼結構和用戶體驗都十分優(yōu)雅。由于Portainer采用本地文件(而不是數據庫)的方式存儲服務狀態(tài),它在部署的時候沒有什么額外的依賴,在集群的Manager節(jié)點啟動Portainer容器時即可使用,如下所示。

    $ docker run -d \
        --name portainer \
        --restart always \
        -p 9000:9000 \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v /opt/portainer:/data \
        portainer/portainer

容器中的“/data”目錄被用來保存Portainer的狀態(tài)數據,建議將它掛載到主機上。這種簡便和靈活設計的代價使它無法簡單地進行水平擴展,但考慮到集群管理系統通常只有管理員使用,并不會有高并發(fā)訪問,所以算不上是嚴重的設計問題。Portainer的數據目錄存儲的主要是用戶組和集群連接信息等少量數據,界面上展示的數據都是實時從集群里獲得的,所有在界面上與集群相關的操作也都會透明地傳遞給集群執(zhí)行。

也可以使用Service的方式部署,如下所示,注意加上部署節(jié)點的選擇條件,確保它只會被部署在Manager節(jié)點上,否則將無法獲得集群信息。當然,除非使用網絡存儲來掛載Portainer的數據目錄,否則使用這種方式部署的服務同樣是不能水平擴容的。

    $ docker service create \
        --detach \
        --name portainer \
        --publish 9000:9000 \
        --constraint 'node.role == manager' \
        --mount type=bind, src=/var/run/docker.sock, dst=/var/run/docker.sock \
        --mount type=bind, src=/opt/portainer, dst=/data \
        portainer/portainer

部署完成后,通過瀏覽器訪問運行節(jié)點的9000端口(如果采用Service方式部署則可以是集群任意節(jié)點的9000端口)。首次進入時會提示設置一個8位數以上的管理員密碼,設置完成后,使用admin用戶和剛剛重置過的密碼登錄。

此時Portainer會問用戶要操作哪個容器集群,如果剛才創(chuàng)建容器時就是在Manager節(jié)點創(chuàng)建的(或通過Service方式創(chuàng)建的),則可以直接選擇“Manage the Docker instance where Portainer is running”,表示通過當前服務所在的節(jié)點接入集群。然后就進入了Portainer的主儀表盤頁面,如圖2-6所示。

圖2-6 Portainer的主儀表盤頁面

注意圖2-6左側的導航欄菜單,它將Portainer的主要功能至上而下地劃分為三部分。

最上面的部分是“Active Endpoint”,這里可以用于切換管理的集群。Portainer將每個被管理的集群稱為一個“接入點(Endpoint)”,用戶可以使用同一個Portainer界面管理多個集群,稍后會介紹接入點的添加和管理。

中間部分的“Enpoint Actions”是Portainer的主體功能,包含Swarm集群中的各種資源菜單。可以在不同的資源管理頁面之間切換,所有的集群信息在這里都一目了然。此外,通過Portainer也能可視化地創(chuàng)建網絡、存儲、容器、服務等各種資源對象。

最底部的“Portainer Settings”部分只有管理員賬號能看到,包含了用戶管理(User management)、集群接入點管理(Enpoints)、倉庫管理(Registies)和系統設置(Settings)這幾個模塊。在用戶管理模塊中,具有管理員權限的用戶可以創(chuàng)建更多的普通用戶賬號并將這些賬號劃分成團隊。接入點管理的模塊用于添加更多Portainer可管理的集群,并將用戶賬號和可以訪問的集群關聯起來,當普通用戶登錄到Portainer時,只能看到和切換自己有權限的集群。倉庫管理模塊用于當用戶使用Docker Hub的私有鏡像組或是自建的私有倉庫下載鏡像時能夠自動使用相應賬號登錄,解決通過Portainer部署容器時需要使用私有鏡像的問題。

下面的例子展示了Portainer的多集群管理能力。首先進入左側菜單的“Portainer Settings→User Management”頁面,創(chuàng)建名為“demo”的用戶,任意設置一個登錄密碼。然后進入“Portainer Settings→User Management→Team”頁面,創(chuàng)建名為“demo-group”的團隊,將demo用戶設置為團隊管理員(Team Leader)。此時用戶頁面的狀態(tài)信息如圖2-7所示,團隊頁面的狀態(tài)信息如圖2-8所示。

圖2-7 Portainer的用戶列表

圖2-8 Portainer的團隊列表

接著進入“Portainer Settings→Endpoints”頁面,添加要管理的其他集群地址,保存后單擊各個接入點的“Manage access”按鈕,賦予demo-group團隊部分集群的管理權限,如圖2-9所示。

圖2-9 Portainer的接入點列表

然后重新使用demo用戶登錄,會發(fā)現點開左上角的接入點下拉菜單后,只能在有權限的集群之間切換,如圖2-10所示。

圖2-10 Portainer導航欄的切換接入點菜單

主站蜘蛛池模板: 乡城县| 乐安县| 麦盖提县| 绍兴县| 皋兰县| 综艺| 浦城县| 电白县| 博爱县| 青阳县| 辽宁省| 军事| 云浮市| 长沙县| 青阳县| 博乐市| 丹巴县| 南郑县| 林甸县| 平阴县| 五家渠市| 宜都市| 民权县| 益阳市| 沅江市| 赫章县| 天水市| 高平市| 阳原县| 城步| 象山县| 奎屯市| 鲁甸县| 邛崃市| 颍上县| 石景山区| 遵义市| 突泉县| 若尔盖县| 灯塔市| 昭平县|