5個解決Docker網絡問題的項目
Docker 是一個開源的應用容器引擎,它可以讓開發者將自己的應用以及應用所依賴的內容打包到一個可移植的容器中,然后將該容器發布到任何流行的 Linux 機器上,也可以實現虛擬化。Docker 徹底釋放了虛擬化的威力,它讓應用的分發、部署和管理都變得前所未有的高效和輕松,憑借著自己出眾的能力,Docker現在已經成為目前IT界創業者和創新者的寵兒。那么Docker是否已經足夠完美了呢?答案當然是否定的,對于管理者和開發人員來說網絡依然是Docker的一個痛點,如何管理 Docker容器之間的交互和網絡一直都充滿了挑戰。
為了解決網絡的問題,有很多公司都開發了各自的產品以幫助開發者更方便地使用Docker。Serdar Yegulalp最近在InfoWorld上分享了一篇文章,介紹了這些項目中最重要的5個,包括Weave、Kubernetes、CoreOS, Flannel、Pipework以及SocketPlane,同時他認為這其中的部分項目將來可能會成為Docker的組成部分。下面就讓我們來了解一下這5個項目。
Weave 是由Zett.io公司開發的,它能夠創建一個虛擬網絡來連接部署在多臺主機上的Docker容器。通過Weave所有的容器就像被接入了同一個網絡交換機,那些使用網絡的應用程序不必去配置端口映射和鏈接等信息。外部設備能夠訪問Weave網絡上的應用程序容器所提供的服務,同時已有的內部系統也能夠暴露到應用程序容器上。Weave能夠穿透防火墻并運行在部分連接的網絡上。另外,Weave的通信支持加密,所以用戶可以從一個不受信任的網絡連接到主機。如果你想了解更多與Weave相關的信息,或者查看相關源碼,那么可以點擊這里。
Kubernetes 是由Google推出的針對容器管理和編排的開源項目,它讓用戶能夠在跨容器主機集群的情況下輕松地管理、監測、控制容器化應用部署。Kubernete 有一個特殊的與SDN非常相似的網絡化概念:通過一個服務代理創建一個可以分配給任意數目容器的IP地址,前端的應用程序或使用該服務的用戶僅通過這一 IP地址調用服務,不需要關心其他的細節。這種代理方案有點SDN的味道,但是它并不是構建在典型的SDN的第2-3層機制之上。如果對此感興趣可以閱讀一下Craig Matsumoto在sdncentral上發表的這篇文章,或者點此查看源碼。
Flannel 之前的名字是Rudder,它是由CoreOS團隊針對Kubernetes設計的一個覆蓋網絡工具,其目的在于幫助每一個使用 Kuberentes 的 CoreOS 主機擁有一個完整的子網。Kubernetes 會為每一個 POD 分配一個獨立的 IP 地址,這樣便于同一個 POD 中的Containers 彼此連接,而之前的 CoreOS 并不具備這種能力。為了解決這一問題,Flannel 通過在集群中創建一個覆蓋網絡為主機設定一個子網。點此查看該項目的源碼。
Pipework 是由Docker的一個工程師設計的解決方案,它讓容器能夠在“任意復雜的場景”下進行連接。Pipework是Docker的一個網絡功能增強插件,它使用了cgroups和namespacpace。點此查看該項目的源碼。
SocketPlane 目前僅停留在將“SDN帶給Docker”的口號上,基本上沒有實質性的工作。該項目的想法是使用和部署Docker一樣的devops工具管理容器的虛擬化網絡,同時為Docker構建一個相當于OpenDaylight/Open vSwitch的產品。聽起來非常有前途,但是在2015年一季度之前我們無法看到任何產品。
另外,一個論壇的討論:
Docker 官方宣布收購 SocketPlane 多主機容器網絡解決方案。現在 SocketPlane 加入 Docker 顯然將會大大促進了 Docker 的進一步發展。
開發者不想操作是否是 VLANs, VXLANs, Tunnels 或者是 TEPs. 對于架構人們最關心的是性能和可靠性。而 SocketPlane 在 socket 層面提供了一個網絡的抽象層,通過可管理的方式去解決各種網絡問題。
SocketPlane 主要特性:
1、Open vSwitch 集成;
2、用于 Docker 的零配置多主機網絡;
3、Docker/SocketPlane 集群的優雅增長;
4、支持多網絡;
5、分布式 IP 地址管理 (IPAM)。
討論話題
1、大家如何理解DOCKER。
2、在實際的應用部署中DOCKER存在的優點和缺點。
3、DOCKER集群系統部署的技術要點和資源管理方式。