複製鏈接
請複製以下鏈接發送給好友

容器網絡

鎖定
容器網絡,計算機學術語。
中文名
容器網絡
適用領域
網絡
類    型
計算機學術語

目錄

容器網絡操作

基於軟件容器網絡對NAT的依賴以及NAT自身的侷限性,網絡工程師在其基礎設施內部署容器時面臨一些顯著的挑戰,但通過了解容器主機如何支持NAT模式可幫助我們避免這些問題。
首先,讓我們看看主機如何創建新的網絡命名空間(這在概念上類似於MPLS/VPN模型中的虛擬路由和轉發實例)以及被稱為虛擬以太網(vEth)的特殊網絡接口。vEth接口是用於連接命名空間的一對端點,主機將vEth的一端放在默認命名空間用於與外部世界通信,另一端放在新創建的命名空間。
默認命名空間中的vEth被綁定到橋接,例如Docker中的docker0以及LXC中的lxcbr0。主機使用Linux中的iptables來配置NAT以及輕量級動態主機配置協議(DHCP)服務器來分配地址,例如dnsmasq。

容器網絡規避NAT

幸運的是,我們有技術可避免NAT。Cohesive Networks公司首席技術官Chris Swan在2014年Container Camp會議中談論Docker網絡時將其容器網絡哲學恰當地總結為讓容器成為“網絡的一等公民”。
我們可以直接連接容器到主機的網絡接口來實現這一點。容器與主機共享本地區域網絡(LAN),它們從LAN的DHCP服務器獲取IPv4地址或者使用靜態機制。所有4層網絡端口完全暴露,雖然這種直接的暴露比管理映射端口更好,但維持強大的安全狀態需要紀律性。
直接連接到物理接口的一種方法是橋接vEth端點與面向互聯網的物理接口。不過,這種方法需要修改物理端口,即移除IP地址並將其分配到橋接接口。
系統管理員可使用混淆命名的“macvlan”網絡類型來連接到物理接口,而不需要使用vEth網絡類型。Macvlan類型與IEEE 802.1Q VLAN無關;它可被認為複用多個MAC地址到單個網絡接口的方法。Macvlan類型通常部署在橋接模式,實現更簡單的橋接,而非傳統的學習橋接—不需要學習,生成樹協議也沒必要。
消除NAT的第二種方法是將主機變成全面的路由器,甚至是使用邊界網關協議的路由器。主機會將前綴路由到主機中的容器,每個容器會使用全球唯一的IP地址。在即將耗盡的IPv 4地址空間時代,提供IPv4獨特地址顯然不太現實。而IPv6讓這種主機作為路由器的技術更加簡潔;該協議的稀疏尋址模式允許巨大的易於管理的地址空間。
由於3層網絡不會受到洪泛影響,它的使用消除了2層網絡廣播域中創建的大量故障域。你是否經歷過數據中心範圍的網絡危機?單個以太網廣播域幾乎肯定遭遇過生成樹故障或者其他洪泛相關的事件。 [1] 
部署容器網絡策略的關鍵角色
儘管Docker已經滿足了開發人員的使用要求,但容器網絡要在大多數企業中輕鬆部署還有很長的路要走。與其他應用開發框架一樣,開發人員的需求與企業運營團隊的需求有所不同。
就在企業中部署容器網絡而言,網絡連通性及安全性必須是可管理的。容器網絡部分同樣可編程對於保持容器的可編程性至關重要。VMware有一個可編程容器網絡產品NSX;這很可能是VMware用於管理容器網絡的工具。
簡單來講,容器網絡是一個可執行程序,運行在操作系統中的一個隔離的文件系統之上。操作系統一般是Linux,位於虛擬機中或者專用物理硬件之上。計算機能夠運行多個容器,每個容器網絡擁有單獨的文件系統。所有的容器網絡共享底層計算機的資源,比如CPU、內存以及磁盤、網絡。
容器網絡考慮了雲級別應用
Docker已經應用於雲服務中,單個應用可能有成百上千個連接。對於很多易於部署的容器網絡來説,容器網絡之間不需要進行大量的隔離。單台計算機之上的所有容器網絡往往屬於相同應用的一部分。單個應用可能是由稱之為微服務的多個不同的小程序組成的。很可能有幾十個微服務而且每個微服務可能需要幾十個乃至上千個實例。結果是運行一個應用可能需要多個很多容器。
在雲應用中,交付一個應用可能需要運行上千個容器網絡實例的上百台服務器。在這種情況下通過一組計算機交付一個應用,而且每個應用有單獨的服務器都是有意義的。容器網絡安全往往部署於應用的邊界。
容器網絡共享帶來了問題
在較小的規模內,多個應用共享一組服務器可能是有必要的。既然應用很可能只有數百個用户使用,那麼實例的數量可能更小。如果每個應用只需要很少的容器網絡實例,那麼向應用交付硬件將會限制靈活性。對企業用户而言,很可能很多應用的容器網絡是融合在一起。
需要在可能共用一個主機的容器網絡之間提供隔離,因為容器網絡可能是不同應用的組成部分。面向消費者的訂購網站需要與企業資源規劃及工資單應用相隔離。這將需要一台防火牆,能識別出運行在一台主機之上的容器網絡之間的差異。我們已經看到NSX能夠針對運行在一台虛擬機之上的不同應用設置不同的防火牆策略。NSX應該能夠識別出運行在容器網絡內的應用並針對每個應用設置不同的策略。
容器網絡安全可編程性是關鍵
容器網絡最大的價值之一是其波動性。新容器實例可以由應用創建、刪除。網站繁忙時,應用能夠創建多個Web服務器容器網絡。網站訪問量小時,可以刪除這些容器網絡。可伸縮性應該由應用程序自動實現。波動性對任何人工過程,尤其是安全過程來説是一個挑戰。為適應容器網絡的波動性,需要採用編程方式創建、銷燬容器,安全工具必須是可編程的。增加Web服務器的容器網絡時,安全工具應該增加規則,允許訪問該容器網絡。軟件定義的網絡對新應用是至關重要的。應用擴展時直接聯繫NSX並指導面向容器網絡的防火牆策略創建,應該是相當簡單的事兒。
VMware一直恪守承諾,通過開發項目Lightwave和Photon,為基於微服務的架構提供基礎設施。 Lightware提供了身份認證,對允許哪些容器運行在環境中進行控制。與NSX集成將允許安全規則用於支撐與應用相關的一組容器。
VMware似乎期望容器網絡隔離能夠通過在每個虛擬機內運行單個容器的方式實現。這使用了VMFork技術—曾經被稱為Project Fargo—使虛擬機創建與容器網絡一樣快。VMFork解決了容器網絡所需要的文件系統安全性,但並未解決網絡配置與安全性。VMware仍舊需要NSX交付基於策略的連接性與安全性。
VMware致力於在企業中推廣基於容器網絡的應用。我希望NSX成為虛擬化基礎設施中可編程基礎設施的頂樑柱。 [2] 
參考資料