VMware Pivotal容器服务(PKS)入门,第3部分:NSX-T

在本文中,我们现在将开始配置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文档或者甚至可以利用我的《自动NSX-T实验室部署》脚本来设置基本环境并根据本文中的步骤进行修改。实际上,这是我用来为PKS部署我自己的NSX-T环境的脚本,但做了一些小的修改,我将在以后分享。

目录:

PKS支持支持以下网络部署拓扑:

  • 在NSX-T外部运行的PKS
* 将PKS VM(Ops Manager,BOSH,PKS Control Plane,Harbor)部署到VSS或VDS支持的端口组


* 通过物理或虚拟路由器在PKS VM,K8S群集管理和T0路由器之间建立连接


* NAT仅在T0上配置为提供POD网络访问相关K8S群集命名空间的权限

  • 在NSX-T内部运行的PKS
* 将PKS VM(Ops Manager,BOSH,PKS Control Plane,Harbor)部署到NSX-T逻辑交换机(位于T0之后)


* 通过物理或虚拟路由器在PKS VM,K8S群集管理和T0路由器之间建立连接


* PKS Admin Network和K8S Cluster Management Network Logical Switch均可路由或NAT

从操作和故障排除的角度来看,由于需要配置许多SNAT / DNAT规则以确保管理组件(NSX-T外部)与PKS之间的正确通信,因此NAT部署将是最复杂的Admin&K8S群集管理(在NSX-T内部)。无论是VSS / VDS还是NSX-T逻辑交换机,都有一个可供PKS VM驻留的可路由网络是首选。

注意:我要感谢来自CNABU的Francis Guillier(技术产品经理)和Gaetano Borione(PKS架构师),他们在从网络角度决定如何部署PKS时,确实帮助我理解了一些网络上的细微差别和限制。

步骤1-验证是否已准备好将用于部署K8S工作负载VM的ESXi主机。在下面的示例中,我有两个vSphere群集:Primp-Cluster(这是我的“管理”群集),将不附带NSX-T,而PKS-Cluster则附带NSX-T。

注意:确保的管理群集和计算群集都由同一vCenter Server管理,这将影响PKS管理VM的位置,无论这些VM位于专用管理群集中还是位于计算群集中。出于实验室和教育目的,请使用单个vCenter Server来管理“管理”和“计算群集”。

步骤2-创建一个新的IP池,该池将用于为公开的K8S服务分配虚拟IP(例如,用于应用程序部署的负载均衡器)。为此,请导航至“ 清单”->“组”->“ IP池”并提供以下内容:

  • Name: Load-Balancer-Pool
  • IP Range: 10.20.0.10 - 10.20.0.50
  • CIDR: 10.20.0.0/24


第3步 -创建一个新的IP块,PKS将按需使用它来分割成较小的/ 24网络并将其分配给每个K8S命名空间。此IP块的大小应足够大,以确保不会用完地址,并且当前建议使用/ 16网络(不可路由)。为此,请导航至DDI-> IPAM并提供以下内容:

  • Name: PKS-IP-Block
  • CIDR: 172.16.0.0/16


步骤4-创建一个新的T0路由器,该路由器将用于与的外部物理网络进行通信。确保已经创建了边缘群集(可以包含一个边缘),或者如果尚未创建新的边缘群集。由于K8S Management POD中的NCP服务使用NAT,因此HA模式必须为活动/备用。为此,请导航至“ 路由”->“路由器”并提供以下内容:

  • Name: T0-LR
  • Edge Cluster: Edge-Cluster-01
  • High Availability Mode: Active-Standby
  • Preferred Member: edge-01


第5步 -在T0上创建一条静态路由,这将使来自K8S管理POD的所有流量都能够与我们的管理组件进行出站通信。这是必需的,例如,NCP POD将需要与NSX-T对话,以便基于K8S群集中的应用程序部署来创建新的网络和/或负载均衡器服务。在我的示例中,172.30.50.1是中间网络的网关,它将用于将流量从T0内路由到我的虚拟路由器(pfSense)。为此,请单击刚刚创建的T0路由器,然后导航到“ 路由”->“静态路由”并提供以下内容:

  • Network: 0.0.0.0/0
  • Next Hop: 172.30.50.1


步骤6-接下来,我们需要创建两个逻辑交换机,一个逻辑交换机将用于T0上行链路,另一个逻辑交换机将用于运行K8S管理POD的K8S管理集群(也称为K8S服务网络)。为此,请导航到Switching-> Switches并添加以下内容:

  • Name: Uplink-LS
  • Transport Zone: TZ-VLAN
  • VLAN: 0
  • Name: K8S-Management-Cluster-LS
  • *Transport Zone: *TZ-Overlay
  • VLAN: 0


完成此步骤后,将具有两个逻辑开关,如下面的屏幕快照所示。上行链路LS应该在TZ-VLAN上,而K8S-Management-Cluster-LS应该在TZ-Overlay上


步骤7- 现在我们需要配置上行链路路由器端口,并从中间网络分配一个地址,以便我们可以从T0路由到物理或虚拟路由器。为此,导航到“ 路由”,然后单击我们之前创建的T0路由器,然后选择“ 配置”->“路由器端口”,并提供以下内容:

  • Name: Uplink-1
  • Type: Uplink
  • Transport Node: edge-01
  • Logical Switch: Uplink-LS
  • Logical Switch Port: Uplink-1-Port
  • IP Address/mask: 172.30.50.2/24


步骤8- *创建一个新的T1路由器,该路由器将用于K8S管理集群POD。为此,请导航至“ *路由”->“路由器”并提供以下内容:

  • Name: T1-K8S-Mgmt-Cluster
  • Tier-0 Router: T0-LR
  • Failover Mode: Preemptive
  • Edge Cluster: Edge-Cluster-01
  • Edge Cluster Members: edge-01
  • Preferred Member: edge-01


步骤9- **为K8S管理群集配置下行路由器端口,将在其中定义NSX-T用于这些VM的网络。在我的示例中,我决定使用10.10.0.0/24,为此,请单击刚刚创建的T1路由器,然后导航到Configuration-> Router Ports**并提供以下内容:

  • Name: Downlink-1
  • Logical Switch: K8S-Mgmt-Cluster-LS
  • Logical Switch Port: Downlink-1-Port
  • IP Address/mask: 10.10.0.1/24


步骤10-为了确保可以从外部访问K8S管理集群网络,我们需要发布这些路由。为此,请单击之前创建的T1路由器,然后导航到“ 路由”->“路由广告”并启用以下功能:

  • Status: Enabled
  • Advertise All NSX Connected Routes: Yes
  • Advertise All NAT Routes: Yes


步骤11-此步骤可能是可选步骤,具体取决于配置物理网络的方式,在这种情况下,将需要使用BGP而非静态路由来将物理/虚拟网络连接到NSX-T的T0路由器。在我的环境中,我正在使用虚拟路由器(pfSense),并且是最简单的方法来启用来自管理网络以及vCenter Server,ESXi主机,NSX-T VM和PKS Management 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 Control Plane)时,我们将没有遇到网络问题。这是非常关键的一步,如果在这里没有成功,则应先进行故障排除并继续进行操作。

要验证ESXi主机与Edge VM之间的覆盖网络连接,应该能够使用所有ESXi主机之间以及边缘VM的覆盖接口之间的VXLAN网络堆栈进行ping操作。下表是从VTEP的IP池中自动分配的IP的表格,可以通过登录ESXi主机来发现这些IP,但它们应与定义的IP池的范围相继。另外,还要确保已将物理和虚拟交换机配置为使用MTU 1600进行叠加通信。

Host IP地址
esxi-01 192.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 Client 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主机的Overlay流量的网络是哪个,都已在Network Adapter 2上进行了配置,如下面的屏幕快照所示。第三个vNIC将用于边缘上行链路流量,该流量应连接到的中间网络,在我的情况下为VLAN 3250。


在下一篇博客文章中,我们将从Ops Manager和BOSH开始我们的PKS部署。敬请关注!