數據中心如何實現傳統網絡與容器網絡的架構共存

一、概述
隨着數據中心網絡技術的革新,並伴隨容器的落地,如何在數據中心內部構建一個合理可用的網絡架構,以滿足不同形態的業務部署模式,成爲一個網絡人員越來越需要注重和考慮的方向。

二、業務背景
在互聯網公司的數據中心,通常你會越來越多的看到容器(k8s)作爲業務/服務的載體,各業務/服務之間(pod間)彼此調用,以下從pod間調用、容器網絡選型、容器網絡架構、網絡隔離幾個方面進行闡述。

三、pod間調用

  1. 同一node內pod間調用
    數據中心如何實現傳統網絡與容器網絡的架構共存
    pod間通過容器網絡純內部交互,這時外部網絡無感知。

  2. 不通node的pod間調用
    數據中心如何實現傳統網絡與容器網絡的架構共存
    pod間需要經過容器網絡→外部網絡進行交互,交互過程可提前將pod ip或cluster ip暴露到外網,具體依據業務需求和網絡模型而定。

四、容器網絡選型
容器網絡選型通常參照以下幾點:

  1. 業務實現方式;
  2. 網絡資源調配;
  3. 網絡擴展及靈活性;
  4. 對底層物理網絡的依賴度;
  5. 網絡資源的收放要求;

開源容器網絡組件按照網絡覆蓋類型大致可分爲:overlay和underlay,underlay相比overlay在傳輸效率、部署實現及維護等方面更有優勢(詳細的各種容器網絡組件橫向比較,可自行查詢學習,此處不詳細展開)。
以calico爲例,作爲underlay的容器網絡解決方案,依靠動態路由協議bgp實現網絡互通,並通過原生的network policy解決容器間網絡隔離。
calico介紹:

  1. felix: calico agent,運行在每個node節點上,負責配置各節點路由及 ACL信息來確保每個pod的連通狀態;
  2. etcd: 分佈式鍵值存儲,負責保存所有node節點的網絡狀態信息;
  3. bird: 負責把路由信息分發到當前calico網絡,確保node間通信的有效性;
  4. 簡單理解,calico可視作運行在node節點上的一個只有bgp功能的路由器(詳細的calico介紹,可參見calico官網:https://www.projectcalico.org
  5. calico支持e/ibgp鄰接關係,支持next-hop-self/next-hop-unchanged,建議優化bgp timer,開啓graceful restart;

五、容器網絡架構
calico建議組網架構如下圖:

  • BGP-RR落在master節點,集羣內的其他node與RR建立iBGP,考慮到容器網絡穩定性,建議RR數量≥2:
    數據中心如何實現傳統網絡與容器網絡的架構共存

  • 集羣全部節點與外部物理網絡建立iBGP/eBGP:
    數據中心如何實現傳統網絡與容器網絡的架構共存

上述兩種組網架構,結合實際業務場景進行選擇,但無論哪種結構,均需要做好網絡資源的科學合理規劃,包括但不限於:

  1. IP地址
  2. BGP鄰接關係選擇
  3. ASN規劃
  4. 路由收放策略
  5. 容器網絡與底層網絡的隔離需求

六、網絡隔離
環境隔離,例如:生產環境和測試環境隔離,這裏還需要考慮:

  1. 以node爲環境最小粒度——隔離策略部署在外部物理網絡,可通過ACLs、VRF等;
  2. 以pod爲環境最小粒度——通過calico原生的network policy進行環境隔離;

七、總結
當前數據中心隨着虛擬化/容器等技術的引進,對網絡結構提出更高、更精細的規劃需求,底層網絡的技術選取、架構模型將更多的影響虛擬/容器網絡的落地成本、實施難易度,因此需要網絡規劃者要在前期介入時,瞭解業務發展方向、技術發展方向及成本、靈活性等因素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章