Rudder:簡化集群中容器的網絡配置
與Docker相關的開源軟件越來越多,Docker的生態圈也越來越成熟。近日,CoreOS團隊又發布了一款重量級工具Rudder,Rudder 是基于etcd的覆蓋網絡(overlay network),它能為每個使用容器調度服務(Kubernetes)的主機提供一個子網。Rudder簡化了集群中Docker容器的網絡配置,更可以大幅度減少端口映射方面的工作。
網絡橋接(bridge)是 Docker容器默認的網絡模式。當Docker啟動時,它會在宿主機器上創建一個名為docker0的虛擬網絡接口,并隨機選擇一個IP地址和子網掩 碼。通過docker0,容器即可與主機進行通信。基本的網絡配置Docker可以自動完成,但是一些其它的配置比如端口映射就需要手動指定了。如果在一 個集群中每個Docker容器都需要配置端口映射,那將會是一個復雜而又龐大的工作。
如何在管理集群中Docker容器的網絡一直是個難點,谷歌的Kubernetes解決了容器的集群管理問題,現在CoreOS發布了 Rudder,它可以為集群中的每個主機都創建一個覆蓋Mesh網絡并指定一個子網,也就是說 Kubernetes 集群中的每個主機都有一個完整的子網,例如機器 A 和 B 可以有 10.0.1.0/24 和 10.0.2.0/24 子網。
Rudder基于CoreOS的分布式鍵值存儲系統etcd構建,并使用UDP通信。etcd用于存儲配置數據以及子網分配信息。一旦Rudder 啟動,Rudder的守護進程會檢索配置信息以及正在使用的子網列表,Rudder會隨機選擇一個可用的子網并在etcd中注冊。如果注冊成 功,Rudder會在接下來的24小時內使用它。如果注冊失敗,這證明其它的主機已經注冊成功,失敗的主機需要重新選取并注冊。在子網地址失效之前,如果 主機仍需要使用此地址,它會通過一個更新操作來延長使用期。
CoreOS已經在其內部環境中對Rudder進行了測試,盡管Rudder會帶來一丁點的網絡延遲,但是吞吐量基本沒有影響。下面是官方在AWS m3.medium VM上使用qperf工具進行測試的測試結果:
目前Rudder只支持GCE,官方也承諾后續會支持其它的云平臺。CoreOS的生態圈(Docker+CoreOS+Kubernetes+Rudder)里又加一員猛將,Hacker News上也有很多的討論,讀者可以自行閱讀。
來自:http://www.infoq.com/cn/news/2014/09/rudder