有两种方法可为 NCP 配置某些网络资源。本节介绍如何在策略模式下配置资源。
在 NCP 配置文件 ncp.ini 中,您必须使用其资源 ID 指定 NSX-T 资源。通常,资源的名称和 ID 是相同的。要完全确定,请在 NSX Manager web UI 上,单击显示为三个点的图标,显示资源的选项,然后选择将路径复制到剪贴板。将路径粘贴到应用程序(如记事本)。路径的最后一部分是资源 ID。
网关和分段
- 为 Kubernetes 节点创建分段,例如 Segment1。
- 创建 Tier-0 网关,例如 T0GW1。如果您没有共享的 Tier-1 拓扑,请在 ncp.ini 的 [nsx_v3] 部分使用网关 ID 设置 top_tier_router 选项。有关配置共享 Tier-1 拓扑的信息,请参见下文。如果您打算在此网关上配置 NAT 规则,请将 HA 模式设置为活动-备用。否则,将其设置为活动-活动状态。启用路由重新分发。还要配置此网关以访问外部网络。
- 创建 Tier-1 网关,例如 T1GW1。将此网关连接到 Tier-0 网关。
- 为 T1GW1 配置路由器通告。至少,应启用 NSX 连接和 NAT 路由。
- 将 T1GW1 连接至 Segment1。请确保网关端口的 IP 地址与 Kubernetes 节点的 IP 地址不冲突。
- 对于每个节点虚拟机,请确保容器流量的 vNIC 连接到自动创建的逻辑交换机。您可以在网络选项卡中找到该 vNIC,其名称与分段相同(即 Segment1)。
标记 | 范围 |
---|---|
节点名称 | 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。如果希望 NCP 自动创建 IP 块,您可以使用 CIDR 格式的逗号分隔地址列表设置 container_ip_blocks 选项。请注意,不能将 container_ip_blocks 同时设置为 UUID 和 CIDR 地址。
以创建一个或多个 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 块。如果要使用其他块,请确保 NCP 未从该块分配任何地址。
外部 IP 池
将使用外部 IP 池分配 IP 地址,这些地址将用于通过 SNAT 规则转换 pod IP 以及通过 SNAT/DNAT 规则公开 Ingress 控制器和 LoadBalancer 型服务,就像 Openstack 浮动 IP 一样。这些 IP 地址也称为外部 IP。
导航到ncp.ini 的 [nsx_v3] 部分的 external_ip_pools 选项设置为 IP 池的 UUID。如果希望 NCP 自动创建 IP 池,您可以使用 CIDR 格式的以逗号分隔的地址列表或 IP 范围设置 external_ip_pools 选项。请注意,不能将 external_ip_pools 同时设置为 UUID 和 CIDR 地址。
以创建 IP 池。将多个 Kubernetes 集群使用相同的外部 IP 池。每个 NCP 实例将该池的一部分用于它管理的 Kubernetes 集群。默认情况下,将使用 pod 子网的相同子网前缀。要使用不同的子网大小,请更新 ncp.ini 的 [nsx_v3] 部分中的 external_subnet_prefix 选项。
可以通过更改配置文件并重新启动 NCP 来更改为不同的 IP 池。
如果 NCP 已开始从 IP 池分配 IP 地址,则不得修改该 IP 池。如果要使用其他池,请确保 NCP 未从该池分配任何地址。
共享的 Tier-1 拓扑
- 将 top_tier_router 选项设置为 Tier-1 网关的 ID。将 Tier-1 网关连接到 Tier-0 网关以实现外部连接。
- 如果启用了 Pod 流量的 SNAT,请将 Kubernetes 节点的分段的上行链路修改为在 top_tier_router 中设置的同一 Tier-0 或 Tier-1 网关。
- 将 single_tier_topology 选项设置为 True。默认值为 False。
- 如果希望 NCP 自动将顶层路由器配置为 Tier-1 网关,请取消设置 top_tier_router 选项并设置 tier0_gateway 选项。NCP 将创建一个 Tier-1 网关,并将其上行链接至 tier0_gateway 选项中指定的 Tier-0 网关。