VMware Pivotal Container Service(PKS)入門第3部分:NSX-T

TIFY2018-11-24 22:01:49

在本文中,我們現在將開始配置NSX-T,以便我們可以安裝PKS並使用NSX-T提供的和安全服務。結果是當新的Kubernetes(K8S)集群時,PKS可以自動提供所有NSX-T組件的按需配置:容器網絡接口(CNI),NSX-T容器插件(NCP)POD,NSX節點代理POD等)請求,所有操作都通過單個CLI或API調用完成。此外,PKS還通過與NSX-T的集成提供獨特的功能,以在K8S命名空間級別實現網絡微分段,從而允許雲/平臺運營商以更精細的粒度級別應用程序和/或租戶用戶之間的訪問比之前可能真的強大!

正如之前的文章中所提到的,將不再介紹NSX-T的逐步安裝,假設你已經部署了一個基本的NSX-T環境,其中包括一些預備為運輸節點的ESXi主機和至少1個NSX-T控制器和1個NSX-T Edge。如果您想逐步詳細瞭解,可以在此處參考NSX-T文檔或者你甚至可以利用我的Automated NSX-T實驗室部署腳本來設置基本環境並根據本文中的步驟進行修改。事實上,這是我用於為PKS部署我自己的NSX-T環境的相同腳本,稍作修改我將在以後分享。

如果你錯過了之前的任何文章,可以在此處找到完整列表:

  • VMware Pivotal Container Service(PKS)入門第1部分:概述

  • VMware Pivotal Container Service(PKS)入門第2部分:PKS客戶端

  • VMware Pivotal Container Service(PKS)入門第3部分:NSX-T

  • VMware Pivotal Container Service(PKS)入門第4部分:Ops Manager和BOSH

  • VMware Pivotal Container Service(PKS)入門第5部分:PKS控制平面

  • VMware Pivotal Container Service(PKS)入門第6部分:Kubernetes Go!

  • VMware Pivotal Container Service(PKS)入門第7部分:Harbour

  • VMware Pivotal Container Service(PKS)入門第8部分:監視工具概述

  • VMware Pivotal Container Service(PKS)入門第9部分:日誌記錄

  • VMware Pivotal Container Service(PKS)入門第10部分:基礎架構監控

  • VMware Pivotal Container Service(PKS)入門第11部分:應用程序監視

  • vGhetto自動化樞紐集裝箱服務(PKS)實驗室部署


PKS支持支持以下網絡部署拓撲:

  • PKS在NSX-T之外運行

    • PKS VM(Ops Manager,BOSH,PKS Control Plane,Harbor)部署到VSS或VDS支持的端口組

    • PKS VM,K8S管理和T0路由器之間的連接是通過物理或虛擬路由器實現的

    • NAT僅在T0上配置,以便為POD網絡提供對關聯K8S群集命名空間的訪問

  • PKS在NSX-T內部運行

    • PKS虛擬機(Ops Manager,BOSH,PKS控制平面,港口)部署到NSX-T邏輯交換機(T0後面)

    • PKS VM,K8S群集管理和T0路由器之間的連接是通過物理或虛擬路由器實現的

    • PKS管理網絡和K8S群集管理網絡邏輯交換機都可以路由或NAT


從操作和故障排除的角度來看,NAT部署將是最複雜的,因為需要配置許多SNAT / DNAT規則以確保管理組件(NSX-T之外)與PKS之間的正確通信Admin&K8S集群管理(NSX-T內部)。擁有PKS VM將駐留的可路由網絡,無論是VSS / VDS還是NSX-T邏輯交換機都是首選選項。

注意:我要感謝來自CNABU的Francis Guillier(技術產品經理)和Gaetano Borione(PKS架構師),他們在決定如何從網絡角度部署PKS時幫助我瞭解了一些網絡細微差別和限制因素。

步驟1 - 確認您已準備好將用於部署K8S工作負載VM的ESXi主機。在下面的示例中,我有兩個vSphere群集:Primp-Cluster,它是我的“管理”群集,不會準備NSX-T和PKS-Cluster,它們將使用NSX-T進行準備。

注意:確保管理和計算群集由同一vCenter Server管理,這將影響PKS管理VM的位置,無論其位於專用管理群集中還是駐留在計算群集中。出於實驗和教育目的,請使用管理管理和計算群集的單個vCenter Server。

步驟2 - 創建一個新的IP池,用於為公開的K8S服務分配虛擬IP(例如,用於應用程序部署的負載均衡器)。為此,請導航到Inventory-> Groups-> IP Pool並提供以下內容:

  • 名稱: Load-Balancer-Pool

  • IP範圍: 10.20.0.10 - 10.20.0.50

  • CIDR: 10.20.0.0/24


步驟3 - 創建一個新的IP塊,由PKS按需使用,以便分割成更小的/ 24個網絡並將其分配給每個K8S命名空間。此IP塊的大小應足以確保您不會耗盡地址,並且目前建議使用/ 16網絡(不可路由)。為此,請導航到DDI-> IPAM並提供以下內容:

  • 名稱: PKS-IP-Block

  • CIDR: 172.16.0.0/16


步驟4 - 創建一個新的T0路由器,用於與外部物理網絡通信。確保您已創建邊緣群集(可包含單個邊緣)或創建新的邊緣群集(如果尚未創建)。HA模式必須處於活動/待機狀態,因為N8服務在K8S管理POD中使用NAT。為此,請導航到Routing-> Routers並提供以下內容:


  • Name: T0-LR

  • Edge Cluster: Edge-Cluster-01

  • High AvailabilityMode: Active-Standby

  • Preferred Member: edge-01



步驟5 - 在T0上創建靜態路由,這將使來自K8S管理POD的所有流量能夠與我們的管理組件進行出站通信。這是必需的,例如,NCP POD將需要與NSX-T交談,以基於來自K8S群集的應用程序部署來創建新網絡和/或負載平衡器服務。在我的示例中,172.30.50.1是中間網絡的網關,用於將流量從T0內部路由到我的虛擬路由器(pfSense)。為此,請單擊剛剛創建的T0路由器,然後導航到Routing-> Static Routes並提供以下內容:

  • 網絡: 0.0.0.0 / 0

  • 下一跳: 172.30.50.1


步驟6 - 接下來,我們需要創建兩個邏輯交換機,一個用於T0上行鏈路,另一個用於K8S管理集群(也稱為K8S服務網絡),用於運行K8S管理POD。為此,請導航至Switching-> Switches並添加以下內容:

·        Name: Uplink-LS

·        Transport Zone: TZ-VLAN

·        VLAN: 0

·        Name: K8S-Management-Cluster-LS

·        TransportZone: TZ-Overlay

·        VLAN: 0


完成此步驟後,您應該有兩個邏輯交換機,如下面的屏幕截圖所示。Uplink-LS應該在TZ-VLAN上,而K8S-Management-Cluster-LS應該在TZ-Overlay上


步驟7  - 現在我們需要配置上行路由器端口併為其分配來自中間網絡的地址,以便我們可以從T0路由到物理或虛擬路由器。為此,請導航到Routing,然後單擊我們之前創建的T0路由器並選擇Configuration-> Router Ports並提供以下內容:

  • 名稱: Uplink-1

  • 類型:上行鏈路

  • 傳輸節點: edge-01

  • 邏輯交換機: Uplink-LS

  • 邏輯交換機端口: Uplink-1-Port

  • IP地址/掩碼: 172.30.50.2/24


步驟8  - 創建一個新的T1路由器,用於K8S管理集群POD。為此,請導航到Routing-> Routers並提供以下內容:

  • 名稱: T1-K8S-Mgmt-Cluster

  • 第0層路由器: T0-LR

  • 故障轉移模式:搶佔式

  • Edge Cluster: Edge-Cluster-01

  • Edge Cluster成員: edge-01

  • 首選會員: edge-01


步驟9  - 為K8S管理集群配置下行鏈路路由器端口,您將在其中定義NSX-T將用於這些VM的網絡。在我的示例中,我決定使用10.10.0.0/24。要執行此操作,請單擊剛剛創建的T1路由器,然後導航到Configuration-> Router Ports並提供以下內容:

  • 名稱:下行鏈路-1

  • 邏輯交換機: K8S-Mgmt-Cluster-LS

  • 邏輯交換機端口: Downlink-1-Port

  • IP地址/掩碼: 10.10.0.1/24

步驟10 - 為確保可從外部訪問K8S管理群集網絡,我們需要通告這些路由。為此,請單擊您之前創建的T1路由器,然後導航到Routing-> Route Advertisement並啟用以下命令:

  • 狀態:已啟用

  • 發佈所有NSX Connected Routes:是的

  • 發佈所有NAT路由:是的


步驟11 - 根據您配置物理網絡的方式,此步驟可能是可選的,在這種情況下,您需要使用BGP而不是靜態路由將物理/虛擬網絡連接到NSX-T的T0路由器。在我的環境中,我使用虛擬路由器(pfSense)和最簡單的方法從我的管理網絡以及託管我的vCenter Server,ESXi主機,NSX-T VM和PKS管理VM的網絡啟用連接以進行通信PKS正在建立一些靜態路由。我們需要創建兩條靜態路由來連接我們的K8S管理群集網絡(10.10.0.0/24)以及K8S負載均衡器網絡(10.20.0.0/24)。對於指向這10個網絡中任何一個網絡的所有流量,我們希望將它們轉發到我們T0的上行鏈路地址,如果您從第7步中回憶一下是172.30.50.2。根據物理或虛擬路由器解決方案,您需要按照產品文檔設置BGP或靜態路由。

步驟12 - 此時,我們已經完成了所有NSX-T配置,我們可以通過一些驗證檢查來確保當我們去部署PKS管理VMS(Ops Manager,BOSH和PKS控制平面)時,我們將沒有遇到網絡問題。這是一個非常關鍵的步驟,如果您在這裡不成功,您應該在繼續之前返回並進行故障排除。

要驗證ESXi主機與Edge VM之間的Overlay網絡連接,您應該能夠使用所有ESXi主機之間的VXLAN netstack以及Edge VM的覆蓋接口進行ping操作。下面是從VTEP的IP池自動分配的IP表,您可以通過登錄到ESXi主機來發現這些IP,但它們應該是從您定義的IP池的說明範圍開始的順序。還要確保將物理和虛擬交換機配置為使用MTU 1600進行覆蓋流量。

主辦IP地址
ESXi-01192.168.0.10
ESXi-02 192.168.0.11
ESXi-03 192.168.0.12
edge-01 192.168.0.13

可以通過SSH連接到每個ESXi主機並運行以下命令:

vmkping ++ netstack = vxlan [IP]

或者也可以通過運行以下命令通過ESXCLI遠程執行此操作:

esxcli network diag ping --netstack = vxlan --host = [IP]

要驗證與NSX-T網絡的連接以及物理/虛擬網絡與NSX-T之間的路由,請使用我們從第2部分部署的PKS客戶端VM,您應該能夠從該系統ping以下地址:

  • 10.10.0.1(到我們的K8S管理集群網絡的下行鏈路路由器端口)

  • 172.30.50.2(上行鏈路路由器端口)

  • 172.30.50.1(中間網絡網關)

如果無法訪問Edge VM的覆蓋接口和/或某些NSX-T接口,則一個非常常見的錯誤(我自己做過)會混淆我的Edge VM部署中的網絡。在配置邊緣傳輸節點並將其分配給正確的HostSwitch時,我認為fp-eth0 =網絡適配器1,fp-eth1 =網絡適配器2,等等。事實證明,NSX-T會自動忽略網絡適配器1的邊緣管理接口,因此fp-eth0在VM的第二個vNIC上啟動。因此,請確保您使用的任何網絡用於ESXi主機的覆蓋流量,它也在網絡適配器2上配置,如下面的屏幕截圖所示。第3個vNIC將用於連接到中間網絡的Edge Uplink流量,在我的情況下是VLAN 3250。


在下一篇中,我們將從Ops Manager和BOSH開始我們的PKS部署。敬請關注!


閱讀原文

TAGS: