一、概述
隨着數據中心網絡技術的革新,並伴隨容器的落地,如何在數據中心內部構建一個合理可用的網絡架構,以滿足不同形態的業務部署模式,成爲一個網絡人員越來越需要注重和考慮的方向。
二、業務背景
在互聯網公司的數據中心,通常你會越來越多的看到容器(k8s)作爲業務/服務的載體,各業務/服務之間(pod間)彼此調用,以下從pod間調用、容器網絡選型、容器網絡架構、網絡隔離幾個方面進行闡述。
三、pod間調用
-
同一node內pod間調用
pod間通過容器網絡純內部交互,這時外部網絡無感知。 - 不通node的pod間調用
pod間需要經過容器網絡→外部網絡進行交互,交互過程可提前將pod ip或cluster ip暴露到外網,具體依據業務需求和網絡模型而定。
四、容器網絡選型
容器網絡選型通常參照以下幾點:
- 業務實現方式;
- 網絡資源調配;
- 網絡擴展及靈活性;
- 對底層物理網絡的依賴度;
- 網絡資源的收放要求;
開源容器網絡組件按照網絡覆蓋類型大致可分爲:overlay和underlay,underlay相比overlay在傳輸效率、部署實現及維護等方面更有優勢(詳細的各種容器網絡組件橫向比較,可自行查詢學習,此處不詳細展開)。
以calico爲例,作爲underlay的容器網絡解決方案,依靠動態路由協議bgp實現網絡互通,並通過原生的network policy解決容器間網絡隔離。
calico介紹:
- felix: calico agent,運行在每個node節點上,負責配置各節點路由及 ACL信息來確保每個pod的連通狀態;
- etcd: 分佈式鍵值存儲,負責保存所有node節點的網絡狀態信息;
- bird: 負責把路由信息分發到當前calico網絡,確保node間通信的有效性;
- 簡單理解,calico可視作運行在node節點上的一個只有bgp功能的路由器(詳細的calico介紹,可參見calico官網:https://www.projectcalico.org)
- calico支持e/ibgp鄰接關係,支持next-hop-self/next-hop-unchanged,建議優化bgp timer,開啓graceful restart;
五、容器網絡架構
calico建議組網架構如下圖:
-
BGP-RR落在master節點,集羣內的其他node與RR建立iBGP,考慮到容器網絡穩定性,建議RR數量≥2:
- 集羣全部節點與外部物理網絡建立iBGP/eBGP:
上述兩種組網架構,結合實際業務場景進行選擇,但無論哪種結構,均需要做好網絡資源的科學合理規劃,包括但不限於:
- IP地址
- BGP鄰接關係選擇
- ASN規劃
- 路由收放策略
- 容器網絡與底層網絡的隔離需求
六、網絡隔離
環境隔離,例如:生產環境和測試環境隔離,這裏還需要考慮:
- 以node爲環境最小粒度——隔離策略部署在外部物理網絡,可通過ACLs、VRF等;
- 以pod爲環境最小粒度——通過calico原生的network policy進行環境隔離;
七、總結
當前數據中心隨着虛擬化/容器等技術的引進,對網絡結構提出更高、更精細的規劃需求,底層網絡的技術選取、架構模型將更多的影響虛擬/容器網絡的落地成本、實施難易度,因此需要網絡規劃者要在前期介入時,瞭解業務發展方向、技術發展方向及成本、靈活性等因素。