武凌峰 楊磊 龍文君


摘要:互聯網企業內部的數據規模正在經歷爆炸式增長,由此帶來的高昂的軟硬件運營,維護成本以及系統運維難度的增加都促使企業對其數據中心的底層架構進行不斷的升級。隨著虛擬化技術的不斷發展,總體上經歷了從裸機到虛擬機,再到容器的架構演進。容器技術以其突出的優勢強力地沖擊著傳統的虛擬化技術。本文重點介紹容器網絡中跨主機容器間的網絡通信問題。
關鍵詞:容器技術;跨主機通信
中圖分類號:TP31 文獻標識碼:A
文章編號:1009-3044(2020)15-0265-02
1Docker(容器技術)技術簡介
1.1概述
Docker是一種輕量級的操作系統虛擬化技術,是使用Go語言實現的云開源項目,采用C/S架構。ContmlGroups(Cgroup)和Namespace是實現容器的最重要的兩種技術,通過ControlGroups(Cgroup)進行資源控制,利用Namespace進行資源隔離,減少了對內存的占用,提升了資源利用率和10性能,推動了云計算的快速發展和應用部署方式的變革。
1.2 Docker兩大組件
Docker主要包含兩大組件:Docker鏡像和Docker容器。鏡像是Docker容器的基石,容器是鏡像的運行實例。
為了更好地資源共享,Docker鏡像和容器均采用分層的儲存結構,從圖1可以看出,對于Docker中新的鏡像,是從base鏡像一層一層疊加生成的,無論添加,刪除還是修改文件,所有對容器的改動都只會發生在容器層,而容器層下面的鏡像層都是只讀的。對于Docker容器,容器是動態的,可以隨時啟動、停止和移除。
1.3 Docker技術的優勢
傳統的虛擬化技術,如VMWare、KVM、Xen,是創建完整的虛擬機。為了運行應用,除了部署應用本身及其依賴,還要安裝整個操作系統。
Docker在傳統的虛擬化技術上,創新性地引人了容器鏡像技術,Docker容器技術具有如下優勢:
(1)更快速,更簡單的交付和部署。
(2)更有效的虛擬化。
(3)更輕松的遷移和擴展。
(4)更簡潔的管理。
(5)方便的鏡像倉庫。
2 Docker網絡
2.1Docker網絡的分類
Docker網絡可以根據覆蓋范圍分為單個host上的網絡和多個host的網絡。
前者主要包括:None網絡、host網絡、bridge網絡和user-de-fined網絡。
后者網絡方案主要包括:overlay和macvlan以及常用的第三方方案:flannel、weave和calico。而眾多的方案是通過libnet_work以及CNM與Docker集成在一起的。
2.2 libnetwork&CNM
Libnetwork是Docker容器網絡庫,其核心的即是Container Network Model(CNM),圖2是CNM的示例,該模型通過三部分組件抽象了容器網絡:
(1)Sandbox
Sandbox是容器的網絡棧,包含容器的interface、路由表和DNS設置。Sandbox的標準實現是Linux Network Namespace。
(2)Endpoint
Sandbox是通過Endpoint接人Network。Endpoint的典型實現是veth pair一個Endpoint只能屬于一個網絡,也只能屬于一個Sandbox。
通過圖4和圖5可以看出。hboxl可以ping通bboxl的IP,卻不能解析“bboxl”主機名,即docker沒有為macvlan提供DNS服務。
3 overlay和macvlan的比較
Docker起初只提供了簡單的single-host網絡,并不利于Docker構建容器集群并通過scale-out方式橫向擴展到多個主機。在市場需求推動下,跨主機容器網絡技術快速發展。這里我們通過網絡模型,IPMA,連通與隔離,性能等方面比較over-lay和macvlan。
(1)網絡模型
Oveday網絡,構建主機間VxLAN隧道,初始數據包在發送之前被封裝成VxLAN數據包,到達目的后解包。Macvlan網絡在二層上通過VLAN連接容器,連接不同macvlan時則需要外部網關實現。數據包直接發送,不需要封裝。
(2)IPAM
Dockeroverlay網絡中所有主機共享一個subnet,容器啟動時會順序分配IP,同時也可以通過subnet定制空間IP,而Macv-lan則需要用戶自己管理subnet,為容器分配IP,不同subnet通信依賴外部網關。
(3)連通與隔離
同一Docker Oveday網絡中的容器可以通信,但不同網絡之間無法通信。Macvlan網絡的連通或隔離完全取決于二層VLAN和三層路由。
(4)性能
Oveday網絡由于涉及數據包的封裝和解封,存在額外的CPU和網絡開銷。雖然大部分Overlay網絡方案底層都采用Linux kernel的vxlan模塊,這樣可以盡量減少開銷,但這個開銷與Underlay網絡相比還是存在的。所以Macvlan的性能會優于Docker overlay。
4總結
通過對跨主機容器間網絡方案介紹與實現,不同的網絡方案有著特有的優勢,相較于Docker的網絡提供的四種簡單的網絡模式,增加了多租戶網絡隔離、網絡Qos、服務發現等功能,滿足了生產環境下復雜的使用場景。彌補了Docker本身網絡的各種功能缺陷。