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>

  • 从 NCP 3.0.2 开始,在策略模式下,支持不具有选择器的类型为 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