《Windows容器網(wǎng)絡》要點:
本文介紹了Windows容器網(wǎng)絡,希望對您有用。如果有疑問,可以聯(lián)系我們。
前言:下面請允許我激動的介紹Windows容器以及微軟和Docker的合作.我們團隊投入大量資源研發(fā)出Windows Server Technical Preview 5容器網(wǎng)絡堆棧,除借鑒Docker的管理經(jīng)驗外,還研發(fā)出Windows容器特有的功能和特性.本文將圍繞Windows容器的網(wǎng)絡堆棧,講述如何使用Docker讓容器網(wǎng)絡連通,以及微軟如何使容器成為基于Microsoft Azure Stack所構建的現(xiàn)代數(shù)據(jù)中心的一階對象.
Windows容器可應用在不同類型的應用場景下,從運行Node.js的Web服務器到數(shù)據(jù)庫,再到視頻流.這些應用都需要通過網(wǎng)絡連接實現(xiàn)服務發(fā)布.那么Windows容器的網(wǎng)絡堆棧是什么樣子的呢?如何為一個容器分配IP地址或?qū)⑷萜鱁ndpoint連接到網(wǎng)絡?以及如何設置最大網(wǎng)絡帶寬和ACL規(guī)則等網(wǎng)絡高級策略呢?
下面通過這張容器網(wǎng)絡堆棧圖(圖1)幫助我們加深理解.
圖1 Windows容器網(wǎng)絡堆棧
所有運行容器的宿主機可以是一臺物理服務器、一個Windows客戶端、或者一臺虛擬機.假如容器宿主已經(jīng)通過一張NIC卡接入WiFi或以太網(wǎng)實現(xiàn)了網(wǎng)絡連接,并需將網(wǎng)絡連接擴展到容器自身.容器宿主可使用Hyper-V虛擬交換機實現(xiàn)宿主機到容器的連接,并通過Host vNIC(Windows服務器容器)或Synthetic VM NIC (Hyper-V 容器)兩種方式實現(xiàn)容器到vSwitch之間的連接.相比于此,Linux容器技術使用bridge設備而非Hyper-V虛擬交換機,使用veth 偶對而非 vNICs / vmNICs來提供容器間的基礎2層(以太網(wǎng))連接.
Hyper-V虛擬交換機本身并不允許外網(wǎng)訪問運行在容器內(nèi)的網(wǎng)絡服務.我們需要3層(IP)連接性來確保數(shù)據(jù)包能正確路由到目的地.除IP外還需支持更高層的網(wǎng)絡協(xié)議,如TCP和UDP協(xié)議,通過特定端口號尋址到容器中運行的服務(例如,TCP端口80通常用來訪問WEB服務).為了讓容器更有用,還需在容器中提供4~7層服務,如DNS、DHCP、 HTTP、SMB等.所有以上特性均會在Windows容器網(wǎng)絡中得到支持.
Windows Server Technical Preview 5(TP5)提供了通過Docker客戶端及Dockers引擎RESTful API接口兩種方式安裝容器網(wǎng)絡.網(wǎng)絡配置根據(jù)設置的范圍,既可在容器網(wǎng)絡創(chuàng)建時配置也可在容器創(chuàng)建時配置.相關MDSN文章可提供更詳細的信息.
Windows容器網(wǎng)絡管理堆棧使用Docker作為管理入口,并將 Windows宿主網(wǎng)絡服務(Host Network Service ,HNS)作為服務層,用來創(chuàng)建下層網(wǎng)絡(如,vSwitch,WinNAT等)中的“管道”.Docker引擎通過一個網(wǎng)絡插件(libnetwork)實現(xiàn)同HNS的通信.請參考圖2了解管理堆棧.
圖2 管理堆棧
管理堆棧使Docker網(wǎng)絡通過HNS實現(xiàn)同Windows網(wǎng)絡層的插件式對接.因為創(chuàng)建過程的自動化,用戶無需自己設置靜態(tài)端口映射或防火墻策略(如NAT轉換).
注意:NetNatStaticMapping (及防火墻策略)都將自創(chuàng)創(chuàng)建
Windows容器的網(wǎng)絡連接有四種不同的網(wǎng)絡模式(或驅(qū)動).不同模式的選擇取決于容器如何被外網(wǎng)客戶端訪問,IP地址如何分配,網(wǎng)絡策略如何執(zhí)行等因素.
每種網(wǎng)絡模式都將使用內(nèi)部或外部虛擬交換機(由HNS自動創(chuàng)建)來打通容器到容器宿主的物理(或虛擬)網(wǎng)絡.下面就四種模式以下給出使用建議.關于每種模式的詳細信息請到MDSN文章(https://msdn.microsoft.com/virtualization/windowscontainers/management/container_networking)中查找.
注: Windows Server 2016 或者Windows 10 客戶端不再支持NAT 虛擬交換模式創(chuàng)建.NAT容器網(wǎng)絡可通過在Docker中設定nat驅(qū)動或者在PowerShell環(huán)境下運行NAT模式來創(chuàng)建.
請注意虛擬交換和NetNat如何被自動創(chuàng)建.
容器逐步成為數(shù)據(jù)中心和企業(yè)的一階實體,同虛擬機相提并論.而IaaS云租戶或企業(yè)業(yè)務部門需要同時支持虛擬網(wǎng)卡和容器Endpoint兩種模式下,程序化地定義網(wǎng)絡策略(如ACLs、QoS、負載均衡等).Windows Server 2016 版本的軟件定義的網(wǎng)絡(SDN)堆棧支持客戶在Windows Network Controller使用PowerShell 腳本、SCVMM或微軟 Azure Stack新出的Azure Portal 為容器Endpoint 定義網(wǎng)絡策略.
在虛擬化環(huán)境下,容器宿主可以是一臺物理服務器上的虛擬機.Network Controller通過標準的SouthBound 通道(如OVSDB)發(fā)送策略給運行在物理服務器上的宿主Agent,宿主Agent將策略傳入物理服務器的vSwitch的VFP進行執(zhí)行.由于網(wǎng)絡策略是特定于具體某個IP地址(如,容器Endpoint)的,當多個容器Endpoint被連接到同一張容器宿主網(wǎng)卡時,網(wǎng)絡策略仍然可以被細粒度地定義.
L2 Tunnel網(wǎng)絡模式下,所有容器宿主虛擬機的網(wǎng)絡流量都將通過物理服務器的vSwitch收發(fā),vSwitch 上的VFP轉發(fā)擴展將會執(zhí)行從Network Controller 以及Azure Stack中的高層組件(如Network Resource Provider、Azure Resource Manager、Azure Portal)接收到的網(wǎng)絡策略.堆棧架構請參考圖3.
圖3 容器實現(xiàn)同SDN疊加虛擬網(wǎng)的連接
這樣容器可以加入由獨立云租戶創(chuàng)建的疊加虛擬網(wǎng)(如,VxLAN),實現(xiàn)跨節(jié)點集群內(nèi)的通信以及同其他虛擬機的通信,還可以接收網(wǎng)絡策略.
未來我們不僅會在Windows操作系統(tǒng)上不斷創(chuàng)新,更會貢獻更多的代碼到GitHub的Docker 開源項目上.我們希望Windows的容器使用者可以使用到更加豐富的網(wǎng)絡策略,并通過容器客戶端來創(chuàng)建網(wǎng)絡策略.我們也希望將網(wǎng)絡策略的執(zhí)行盡可能的更靠近容器Endpoint,來縮減數(shù)據(jù)路徑,提升網(wǎng)絡吞吐,降低網(wǎng)絡時延.
感謝滕啟明對文章的審校.
譯/Chilly
原文出處——Docker微信公眾號
轉載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4520.html