Container Kubernetes DevOps Docker 軟體定義網路 網路虛擬化 雲端管理 K8S SDN 雲端

公私雲虛機容器複雜網路 NSX-T輕鬆除錯管理

2018-05-09
在生產環境橫跨數個實體設備的K8S環境中,若能夠結合VMware NSX-T一起運用,將可以讓多個Container順暢、自動且簡易地互相連通,而且還提供強大的工具來進行網路單位需求的除錯功能,本文先說明基本觀念,然後以實際操作來示範整個環境運作的情形。

透過NSX-T進行除錯

一般來說,當網路工程師需要進行網路的Troubleshooting時,會想要做以下幾件事情:

‧可不可以看到機器(Pod)間是怎麼連接的?

‧能不能在機器(Pod)間,一個點一個點去確認哪個地方出錯連接失敗?

‧可不可以直接接收一台機器(Pod)或一堆機器(Pods)的網路封包來分析?

‧可不可以把一台機器(Pod)或一堆機器(Pods)的網路流統計資訊收集起來做後續統計?

在NSX-T內,以上這些需求「全部都有考慮到」。可以用Port Connection、Traceflow、Port Mirror Session、IPFIX等等功能來進行。延續之前文章內的展示,把目前使用的Application內之所有Pods,以及在K8S預設環境所建立的Pods都顯示,如圖12所示,而其中將後續展示內會使用到的Pod特別標注出來。


▲ 圖12 找出會使用到的Pod。

其中,yelb-ui這個微服務是做前端網頁的UI,yelb-appserver是做投票的邏輯運算。而下面的Nginx則是在這個展示內建立的南北向Load-balancer容器。此外,這些Pod所在的K8S節點(k8s-node2/k8s-node1)在底層也都位於不同的vSphere上。

在NSX-T內,Port Connection可以快速地檢視各個虛機或是Pod(Logical Port)間的連接關係以及目前的狀態。

而Traceflow更進一步,除了Port Connection本身已經顯示的資料外,會以實際的封包測試兩個構件間各個接點是否運作正常。

直接使用Traceflow來進行k8s-cl1-yelb-ui-127081435-1tvt4與k8s-cl1-yelb-appserver-3315541501-s2vmj這兩個Pod之間的連線檢測,如圖13所示。

得到的結果是,左邊顯示的是構件間的邏輯與實體網路拓撲。在圖13的邏輯圖內,因為這兩個Pod都是在同一個應用內,在NSX-T環境內是接到同一個邏輯交換器,因此就顯示出兩個構件直接接在同一個交換器內。左邊下面是實體的vSphere設備資訊,可以把圖13右下方綠色標示的Tunnel點開,顯示出目前這兩台vSphere之間邏輯網路是採用GENEVE協定,狀態正常,以及對應的TEP介面資訊。


▲ 圖13 透過Traceflow進行兩個Pod之間的連線檢測。

右邊則是Traceflow一步一步的過程,可以看到這兩個Pod間的通訊由來源端微分段防火牆送到底層的TEP介面,由ESX-NSXT-3-TN轉送到ESX-NSXT-4-TN,又通過防火牆後到達目的容器。每段流程內節點都可以點擊看進一步資訊,例如防火牆規則是因為哪一條允許通過之類的。

至於圖13看來很簡單,再來看另一個Pod k8s-cl1-yelb-ui-127081435-90xvv與Load Balancer(nginx-ingress-rc-nq4zm)間怎麼連接的。

圖14就複雜多了!可以看到因為來源與目的地完全在不同的網段(這邊的網段是由/27切開),NSX-T上這兩個Pod也位於不同的邏輯交換器,因此邏輯架構內是通過了不同的路由器(圖片中間的藍色部分)才互通。邏輯圖內就好像大家用實體設備互接的感覺,兩個終端設備(圖中藍色像雲的部分)各自接到交換器,交換器又接到中間的路由器,而且每個介面都直接列出,也可以點擊確認對應的名稱。


▲圖14 檢視k8s-cl1-yelb-ui-127081435-90xvv與nginx-ingress-rc-nq4zm間的連接方式。

而下面與右邊則與前面的圖13類似,包含實體設備上怎麼連接,還有邏輯網路內一個一個節點的路徑到底為何。

接著,來看下一個工具Port Mirror。NSX-T內同時支援本地以及遠端的Port Mirror,以前如果需要實體環境內做封包分析很複雜的,網路Team得要在線路上連接一個實體的Tap或是在交換器上對於某個Port/vlan啟用SPAN功能,而如果是虛擬環境就更麻煩了。但在NSX-T內可以這樣做。如果要做Remote Port Mirror,首先設定一個Profile,定義要送往的IP地址,如圖15所示。


▲ 圖15 設定一個Profile並定義要送往的IP地址。

然後,到要啟用封包收集的虛機或是Pod上面,把剛剛所設定的Port Mirror Profile給設定上去。

圖16內,要求將k8s-cl1-yelb-ui-127081435-1tvt4這個Pod的進出封包都送到10.66.0.103去,此時相關的封包就都會複製一份,然後透過GRE Tunnel送往10.66.0.103。


▲ 圖16 將k8s-cl1-yelb-ui-127081435-1tvt4的進出封包都送到10.66.0.103。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!