NCP 将为每个服务端口创建一个第 4 层负载均衡器虚拟服务器和池。

有关此功能的详细信息:
  • TCP 和 UDP 均受支持。
  • 每个服务都将有一个唯一的 IP 地址。
  • 根据 LoadBalancer 定义中的 loadBalancerIP 字段,将从外部 IP 池中为服务分配一个 IP 地址。loadBalancerIP 字段可以为空,具有 IP 地址或具有 IP 池的名称或 ID。如果 loadBalancerIP 字段为空,则从 ncp.ini[nsx_v3] 部分中的 external_ip_pools_lb 选项指定的外部 IP 池中分配 IP。如果 external_ip_pools_lb 选项不存在,则使用 external_ip_pools 指定的池。将在此 IP 地址和服务端口上公开 LoadBalancer 服务。
  • 可以通过更改配置并重新启动 NCP 来更改为不同的 IP 池。
  • loadBalancerIP 指定的 IP 池必须具有标记 scope: ncp/owner, tag: cluster:<cluster_name>

  • 在策略模式下,支持不具有选择器的类型为 LoadBalancer 的服务。对于此类服务,NSX-T 负载均衡器的 SNAT IP 将是类型为 LoadBalancer 的服务的 IP。如果更新类型为 LoadBalancer 的服务的 IP,NSX-T 负载均衡器的 SNAT IP 也将更新。请注意,无法将不具有选择器的服务配置为另一个不具有选择器的服务的端点。
  • 错误作为注释添加到服务中。错误键为 ncp/error.loadbalancer。可能的错误包括:
    • ncp/error.loadbalancer: IP_POOL_NOT_FOUND

      该错误表示指定了 loadBalancerIP: <nsx-ip-pool>,但 <nsx-ip-pool> 不存在。服务将处于非活动状态。要解决此错误,请指定有效的 IP 池,然后删除并重新创建该服务。

    • ncp/error.loadbalancer: IP_POOL_EXHAUSTED

      该错误表示指定了 loadBalancerIP: <nsx-ip-pool>,但 IP 池已用尽其 IP 地址。服务将处于非活动状态。要解决此错误,请指定包含可用 IP 地址的 IP 池,然后删除并重新创建该服务。

    • ncp/error.loadbalancer: IP_POOL_NOT_UNIQUE

      此错误表示多个 IP 池具有 loadBalancerIP: <nsx-ip-pool> 指定的名称。服务将处于非活动状态。

    • ncp/error.loadbalancer: POOL_ACCESS_DENIED

      此错误表示 loadBalancerIP 指定的 IP 池不具有标记 scope: ncp/owner, tag: cluster:<cluster_name>,或标记中指定的集群与 Kubernetes 集群的名称不匹配。

    • ncp/error.loadbalancer: LB_VIP_CONFLICT

      此错误表示 loadBalancerIP 字段中的 IP 与活动服务的 IP 相同。服务将处于非活动状态。

  • 第 4 层负载均衡器支持自动调整。如果创建或修改 Kubernetes LoadBalancer 服务以便需要更多的虚拟服务器,而现有的第 4 层负载均衡器没有足够的容量,将创建新的第 4 层负载均衡器。NCP 也将删除不再连接虚拟服务器的第 4 层负载均衡器。默认情况下,将启用该功能。如果要禁用此功能,必须在 NCP ConfigMap 中将 l4_lb_auto_scaling 设置为 false
  • 在创建 LoadBalancer 类型的服务时,您可以指定 loadBalancerSourceRanges 参数。例如:
    kind: Service
    metadata:
      name: nginx-service-lb
      labels:
        app: nginx
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
        - "10.30.88.116/24"
      ports:
        - port: 80
          targetPort: 80
          protocol: TCP
          name: tcp
    ...

    创建的 NSX-T 负载均衡器将仅允许来自指定源 IP 地址的流量。您可以在 NSX Manager 中查看虚拟服务器的访问列表控制以验证这一点。它将允许特定的组进行访问。该组将包含 loadBalancerSourceRanges 中指定的 IP 地址。您可以导航到清单 > 以查看该组。