In a vSphere Supervisor cluster environment that uses NSX-T and the NSX-NCP pod for load balancing, a new service of load balancer type shows the following symptoms:
kubectl get svc -n <namespace> | grep pending
NAMESPACE NAME TYPE INTERNAL IP EXTERNAL IP
<namespace> <loadbalancer service name> LoadBalancer <internal IP> <pending>
kubectl describe svc -n <namespace> <loadbalancer service name>
nsx-container-ncp LB Service <load balancer> limit exceeded: Unable to attach new resource <new member> to lbs <load balancer>: LBS exceeded limit of <LB limit>.
Annotations: ncp/error.loadbalancer: LBS_LIMIT_EXCEEDED
While connected to the Supervisor cluster context, the NSX-NCP pod log may show errors similar to the following:
kubectl get pods -n nsx-ncp
kubectl logs -n nsx-ncp <nsx ncp pod>The maximum size of pool members for <load balancer SIZE> load balancer service form factor is <load balancer size limit>, current size of pool members is <greater than or equal to the load balancer size limit>"
vSphere with Tanzu 7.0
vSphere with Tanzu 8.0
NSX 4.X
NCP (NSX-T Container Plugin) 4.X
The noted load balancer has reached its limit of members or the new load balancer will increase the member count beyond the load balancer's limit.
In a NSX-T load-balancer, pool-members are created to distribute the traffic between them. Every pool member is an object containing a unique pool-member-IP+Port combination.
vSphere Supervisor currently does not support changing the size of an existing load balancer. The only solutions are the following:
Changes made to the nsx-ncp-config configmap will be reverted on Supervisor control plane node recreation, such as a Supervisor cluster upgrade.
The following steps can be run from a machine that can reach the NSX manager to confirm on the status of the affected load balancer:
Retrieve the affected NSX load balancer's ID, replacing <load balancer> with the load balancer from the error message:
curl -k -u admin:'<password>' "https://<NSX_MANAGER>/api/v1/loadbalancer/services/" | grep -A4 "<load balancer>"
"resource_type" :"LbService",
"id": "<load balancer ID>"
"display_name" : "<load balancer>"
curl -k -u admin:'<PASSWORD>' "https://<NSX_MANAGER>/api/v1/loadbalancer/services/<load balancer ID>/usage"
{"service_id" : "<load balancer id>","service_size" : "<load balancer SIZE>","virtual_server_capacity" : ##,"pool_capacity" : ##,"pool_member_capacity" : <load balancer size limit>,"current_virtual_server_count : ##,"current_pool_count : ###,"current_pool_member_count : ###,"usage_percentage" : ##.#,"severity" : "RED"}
curl -k -u admin:'<password>' "https://<NSX_MANAGER>/api/v1/loadbalancer/services/<load balancer ID>/status?source=realtime"