導語:數據庫
幾年前,當博雲啓動自研容器網絡研發的時候,除了技術選型的考慮,咱們對於先作 Underlay 仍是 Overlay 網絡也有過深度的討論。當時的開源社區以及主流容器廠商,多數仍是以 Overlay 網絡方案爲主,但在咱們對衆多客戶真正需求的深刻了解以後,發現部分客戶對容器內外網絡直通有着很是強烈的需求。思慮再三,咱們決定仍是先作 Underlay 網絡(後來又作了Overlay)。隨着行業與公司自身的發展,咱們建設實施的項目愈來愈多,這讓咱們對容器網絡的思考也愈來愈深刻,從而觀點也愈來愈清晰:網絡
內外直通的Underlay網絡纔是容器網絡的正確打開方式。ide
01微服務
從需求出發,考慮容器網絡方案大數據
如上圖所示,這是目前企業微服務容器化部署的典型場景,也是驅動咱們作 Underlay網絡的直接緣由:中間件
服務部署在Kubernetes集羣內部(如圖:服務一、服務2);blog
數據庫、註冊中心、Redis、MQ等組件部署在集羣以外;路由
部分服務也可能部署在集羣以外, 好比容器平臺試用階段(如圖:服務3)部署
這些服務和組件,須要能直接互聯互通。get
如若須要知足以上需求,最簡單有效的方案就是直接把 Kubernetes 內外網絡打通,也就是採用 Underlay 網絡模式。
固然,如上需求也有別的辦法能夠解決。好比,細化分析服務和組件間的流量,採用ingress、egress,包括改寫應用代碼等方式,在特定狀況下,這也是能夠用的。然而,一方面,這些都是特定場景下的特定解決方案,缺少必定的通用性;另外一方面,容易出現配置複雜、引入額外風險、出錯難以定位等問題。遠遠沒有經過Underlay網絡直接將內外網打通這麼簡單有效。
還有另外的辦法就是將全部服務和組件都放入Kubernetes集羣內部,可是這種方案還是針對特定場景的非通用方案,很難保證企業全部的應用都在一個Kubernetes集羣裏。
一樣,對於容器內外網絡直接互聯互通的需求場景還有:
特定用途的Kubernetes集羣對外提供服務。好比專門用做提供PaaS中間件服務的Kubernetes集羣、專門用做CI/CD服務的Kubernetes集羣、專門用做提供大數據服務的Kubernetes集羣等;
跨多集羣的服務/組件互聯互通;
爲了在試點階段下降風險,部分服務跑在集羣內、部分服務跑在集羣外等場景。
02
與虛擬機對比,從容器本質考慮容器網絡方案
在容器的應用實踐過程當中,除了應用場景,咱們也從底層基礎設施的角度對容器進行了持續的思考。
從基礎設施的角度看容器:容器和虛擬機的本質都是同樣的,是上層應用的承載基礎設施。
所以,從底層角度看,對容器網絡的需求跟虛擬機是一致的。那麼,虛擬機網絡的落地模式是怎樣的呢?
如上圖右側部分所示,IaaS層的落地網絡方案能夠認爲是有行業標準的,不論是基於VMware 仍是 OpenStack,基本都是採用OVS(或相似OVS)的二層 Underlay 網絡方案。
所以,從基礎設施的角度往上看,容器網絡採用跟 IaaS 相似的方案,即將虛擬機和容器放到同一個網絡層面上,是最合理的選擇。
PS:在公有云上,虛擬機都在VPC裏,所以目前公有云的容器網絡方案,也是主要採用將容器和虛擬機放到同一個VPC中,能夠直接互聯互通的方案。這也是對上述判斷的典型證實。
同時,對於部分客戶反饋的 Unberlay 網絡佔用 IP 地址過多的問題,從虛擬機和容器的對比角度,也能夠得到合理的解釋:若是使用虛擬機部署,佔用 IP 地址數量與容器 Underlay 網絡是同樣的。IP 地址的數量是由應用數量決定的,使用容器並無引入多餘 IP 地址佔用。另外,Ipv6已經開始規模落地,在Ipv6時代,IP 地址數量將不會是問題。
03
技術方案選型
容器典型的開源 Unberlay 網絡選型方案有 Calico 和 MACVLAN,這兩個方案的問題也比較明顯:
Calico:須要在數據中心路由器(或三層交換機)打開 BGP 路由協議,而 BGP 是廣域網的路由協議,通常在數據中心內部不會啓動,低端三層交換機/路由器對齊的支持狀況也有風險。
MACVLAN:幾年前有部分客戶採用此容器網絡方案,MACVLAN最大的問題就是社區活躍度已經很低,一些問題長期沒有在社區中解決。同時,面向將來的擴展性也比較差。
以上也是博雲基於 OVS 自研 Underlay(也支持Overlay)網絡的緣由。
04
總結
在容器網絡方案中,Overlay網絡方案有着對底層網絡要求低(落地過程不須要跟網絡部門打交道)、落地容易、IP地址佔用少等特色,也有本身適用的特性需求場景。可是隨着愈來愈多的客戶將 Kubernetes 和容器大規模應用到生產環境中,博雲客戶中選擇使用 Underlay 網絡模式的比例也愈來愈高。這讓咱們更加明確認識到:
內外直通的Underlay網絡纔是容器網絡的正確打開方式。
點擊BoCloud博雲_以創新雲技術 爲效率而進化,獲取更多產品及案例信息。