有两种方法可为 NCP 配置某些网络资源。本节介绍如何在管理器模式下配置资源。
在 NCP 配置文件 ncp.ini 中,您可以使用 UUID 或名称指定 NSX-T 资源。
逻辑路由器和逻辑交换机
- 为 Kubernetes 节点创建逻辑交换机,例如 LS1。
- 创建 Tier-0 逻辑路由器,例如 T0LR1。如果您没有共享的 Tier-1 拓扑,请在 ncp.ini 的 [nsx_v3] 部分使用逻辑路由器 ID 设置 tier0_router 选项。有关配置共享 Tier-1 拓扑的信息,请参见下文。如果您打算在此逻辑路由器上配置 NAT 规则,请将 HA 模式设置为活动-备用。否则,将其设置为活动-活动状态。启用路由重新分发。还要配置此路由器以访问外部网络。
- 创建 Tier-1 逻辑路由器,例如 T1LR1。将此逻辑路由器连接到 Tier-0 逻辑路由器。
- 为 T1LR1 配置路由器通告。至少,应启用 NSX 连接和 NAT 路由。
- 将 T1LR1 连接至 LS1。请确保逻辑路由器端口的 IP 地址与 Kubernetes 节点的 IP 地址不冲突。
- 对于每个节点虚拟机,请确保容器流量的 vNIC 连接到自动创建的逻辑交换机。您可以在网络选项卡中找到该 vNIC,其名称与逻辑交换机相同(即 LS1)。
标记 | 范围 |
---|---|
节点名称 | ncp/node_name |
集群名称 | ncp/cluster |
kubectl get nodes
如果要在 NCP 正在运行时扩展 Kubernetes 集群(例如,向集群中添加更多节点),必须在运行“kubeadm join”之前将标记添加到相应的交换机端口。如果您忘记在运行“kubeadm join”之前添加标记,新节点将不会连接。在这种情况下,您必须添加标记并重新启动 NCP 才能解决此问题。
/api/v1/fabric/virtual-machines
/api/v1/search -G --data-urlencode "query=(resource_type:VirtualMachine AND display_name:<node_vm_name>)"
/api/v1/search -G --data-urlencode \ "query=(resource_type:VirtualNetworkInterface AND external_id:<node_vm_ext_id> AND \ _exists_:lport_attachment_id)"
lport_attachment_id 属性是节点虚拟机的 VIF ID。然后,您可以找到此 VIF 的逻辑端口并添加所需的标记。
Kubernetes pod 的 IP 块
导航到ncp.ini 的 [nsx_v3] 部分的 container_ip_blocks 选项设置为 IP 块的 UUID。
以创建一个或多个 IP 块。使用 CIDR 格式指定 IP 块。将默认情况下,项目共享在 container_ip_blocks 中指定的 IP 块。您可以设置 ncp.ini 的 [nsx_v3] 部分中的 no_snat_ip_blocks 选项,专门为非 SNAT 命名空间(对于 Kubernetes)或集群(对于 TAS)创建 IP 块。
如果在 NCP 运行时创建非 SNAT IP 块,您必须重新启动 NCP。否则,NCP 将继续使用共享 IP 块,直到这些块用尽。
在创建 IP 块时,前缀不能大于 NCP 配置文件 ncp.ini 中的 subnet_prefix 选项值。默认值为 24。
如果最初分配的子网已用尽,NCP 将为命名空间分配额外的子网。
外部 IP 池
将使用外部 IP 池分配 IP 地址,这些地址将用于通过 SNAT 规则转换 pod IP 以及通过 SNAT/DNAT 规则公开 Ingress 控制器和 LoadBalancer 型服务,就像 Openstack 浮动 IP 一样。这些 IP 地址也称为外部 IP。
导航到ncp.ini 的 [nsx_v3] 部分的 external_ip_pools 选项设置为 IP 池的 UUID。
以创建 IP 池。将多个 Kubernetes 集群使用相同的外部 IP 池。每个 NCP 实例将该池的一部分用于它管理的 Kubernetes 集群。默认情况下,将使用 pod 子网的相同子网前缀。要使用不同的子网大小,请更新 ncp.ini 的 [nsx_v3] 部分中的 external_subnet_prefix 选项。
可以通过更改配置文件并重新启动 NCP 来更改为不同的 IP 池。
共享的 Tier-1 拓扑
- 将 top_tier_router 选项设置为 Tier-0 逻辑路由器或 Tier-1 逻辑路由器的 ID。如果它是 Tier-1 逻辑路由器,则需要将其连接到 Tier-0 逻辑路由器以实现外部连接。此选项将替换 tier0_router 选项。
- 如果启用了 Pod 流量的 SNAT,请将 T1LR1 与 LS1(Kubernetes 节点的逻辑交换机)断开连接,然后将 top_tier_router 中设置的 Tier-0 或 Tier-1 路由器连接到 LS1。
- 将 single_tier_topology 选项设置为 True。默认值为 False。
(可选)(仅适用于 Kubernetes)防火墙标记区域
要允许管理员创建防火墙规则且不干扰 NCP 基于网络策略创建的防火墙区域,请导航到
,并创建两个防火墙区域。通过在 ncp.ini 的 [nsx_v3] 部分中设置 bottom_firewall_section_marker 和 top_firewall_section_marker 选项来指定标记防火墙区域。
底部防火墙区域必须在顶部防火墙区域的下方。创建这些防火墙区域后,NCP 创建的用于隔离的所有防火墙区域将创建在底部防火墙区域的上方,NCP 创建的用于策略的所有防火墙区域将创建在顶部防火墙区域的下方。如果未创建这些标记区域,则将在底部创建所有隔离规则,在顶部创建所有策略区域。不支持每个集群中多个标记防火墙区域采用相同的值,这将会导致错误。