---
name: containers-ts-lb-vpc-no-ips
title: 'VPC clusters: Why does a Kubernetes `LoadBalancer` service fail with no IPs?'
description: You exposed your app by creating a Kubernetes `LoadBalancer` service in your VPC cluster, but the service fails to provision because no IP addresses are available on your subnets.
last-updated: 2026-07-07
---

> ## Documentation Index
> The table of contents for this documentation set is at https://cloud.ibm.com/docs/containers?format=markdown
> The index for all IBM Cloud docs is at: https://cloud.ibm.com/docs/llms.txt
> Use these files to discover more information as needed.

# VPC clusters: Why does a Kubernetes `LoadBalancer` service fail with no IPs?
{: #vpc_no_lb}
{: troubleshoot}
{: support}

[Virtual Private Cloud]{: tag-vpc}

You exposed your app by creating a Kubernetes `LoadBalancer` service in your VPC cluster, but the service fails to provision because no IP addresses are available on your subnets.
{: shortdesc}

You exposed your app by creating a Kubernetes `LoadBalancer` service in your VPC cluster.
{: tsSymptoms}

When you run `kubectl describe svc <kubernetes_lb_service_name>`, you see a warning message in the **Events** section similar to one of the following:
```sh
The subnet with ID(s) '<subnet_id>' has insufficient available ipv4 addresses.
```
{: screen}

When you create a Kubernetes `LoadBalancer` service in your cluster, a VPC load balancer is automatically created in your VPC.
{: tsCauses}

The VPC load balancer puts a floating IP address for your Kubernetes `LoadBalancer` service behind a hostname that you can access your app through.

In VPC clusters, both worker nodes and services are assigned IP addresses from the same subnets. Traffic routing is enabled between subnets, so when all IP addresses in a subnet for a zone are used by worker nodes or services, you can still create new worker nodes or services in that zone because they use IP addresses from subnets in other zones. However, if all IP addresses on all subnets are in use, a new Kubernetes `LoadBalancer` service can't be successfully provisioned.

After you create a VPC subnet, you can't resize it or change its IP range.
{: tsResolve}

Instead, you must create a larger VPC subnet in one or more zones where you have worker nodes. Then, you create a new worker pool using the larger subnets.

1. [Create a new VPC subnet](https://cloud.ibm.com/infrastructure/provision/network){: external} in the same VPC and in one or more zones where your cluster has worker nodes. Make sure that you create a subnet that can support both the number of worker nodes and services that you plan to create in your cluster. The default CIDR size of each VPC subnet is `/24`, which can support up to 253 worker nodes and services. To check your cluster's VPC and zones, run `ibmcloud ks cluster get --cluster <cluster_name_or_ID>`.

2. Create a new worker pool in your cluster.
    ```sh
    ibmcloud ks worker-pool create vpc-gen2 --name <name> --cluster <cluster_name_or_ID> --flavor <flavor> --size-per-zone <number_of_worker_nodes> --label <key>=<value>
    ```
    {: pre}

3. Using the IDs of the new subnets that you created in the previous step, add the zones to the worker pool. Repeat this command for each zone and subnet.
    ```sh
    ibmcloud ks zone add vpc-gen2 --zone <zone> --subnet-id <subnet_id> --cluster <cluster_name_or_ID> --worker-pool <worker_pool_name>
    ```
    {: pre}

4. After a few minutes, verify that your `LoadBalancer` service is successfully provisioned onto one of the new subnets. If the service is provisioned successfully, the **Events** section shows no `Warning` or `Error` events.
    ```sh
    kubectl describe svc <kubernetes_lb_service_name>
    ```
    {: pre}