<p>I've been creating new microservices every roughly 2 months for past year, every time the same process.</p>
<p>Reserving private IP</p>
<pre class="lang-sh prettyprint-override"><code>gcloud compute addresses create my-internal-lb \
                                --region europe-west3 \
                                --addresses 10.223.0.192 \
                                --subnet &lt;subnet_name&gt;
</code></pre>
<p>and putting it in kubernetes service</p>
<pre class="lang-sh prettyprint-override"><code>apiVersion: v1
kind: Service
metadata:
  name: &lt;app_name_lb&gt;
  annotations:
    cloud.google.com/load-balancer-type: &quot;Internal&quot;
    networking.gke.io/internal-load-balancer-allow-global-access: &quot;true&quot;
  labels:
    app: &lt;app_name&gt;
    env: &lt;env&gt;
spec:
  type: LoadBalancer
  selector:
    app: &lt;app_name&gt;
    env: &lt;env&gt;
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
  loadBalancerIP: 10.223.0.192
  externalTrafficPolicy: Local
</code></pre>
<p>but right now I see my new service stuck in Pending state</p>
<pre class="lang-sh prettyprint-override"><code>$ kubectl get services
NAME                             TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                         AGE
&lt;app_name_lb&gt;                    LoadBalancer   10.190.93.199   &lt;pending&gt;      80:32767/TCP                    22m
</code></pre>
<p>and GCP sees the IP as <code>RESERVED</code> not <code>IN_USE</code> so there shouldn't be an issue with that, anyone have any idea why that happens?</p>
<pre class="lang-sh prettyprint-override"><code>$ gcloud compute addresses list | grep &quot;&lt;app_name_lb&gt;&quot;
&lt;app_name_lb&gt;      10.223.0.192     INTERNAL  GCE_ENDPOINT            europe-west3  &lt;subnet_name&gt;     RESERVED
</code></pre>
<p>I'll add that I've done it like so multiple times, and other applicaition works just fine</p>
<pre class="lang-sh prettyprint-override"><code>&lt;other_app_lb&gt;          LoadBalancer   10.190.86.56    10.223.0.209   80:&lt;32k port&gt;/TCP                    37d
</code></pre>
<hr />
<p>I'll add that I had this issue for few days now, and comming and leaving it all the time, tested on multiple subnets/zones, different IPs still the same Pending state, any help will be appreciated</p>
<hr />
<p>I think I might have hit the limit of IN_USE addresses -checking that</p>

<p>What do you see for kubectl describe svc &lt;app_name_lb&gt;? There should be an error.</p>
<p>Please note that if you are using the version 1.17+, it is now <code>networking.gke.io/load-balancer-type: &quot;Internal&quot;</code> instead of <code>cloud.google.com/load-balancer-type: &quot;Internal&quot;</code></p>
<p>Please also note the following: as per <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#restrictions_for_internal_tcpudp_load_balancers" rel="nofollow noreferrer">Restrictions for internal TCP/UDP load balancers</a>:</p>
<blockquote>
<p>For clusters running Kubernetes 1.7.X or later, while the clusterIP
remains unchanged, internal TCP/UDP load balancers cannot use reserved
IP addresses. The spec.loadBalancerIP field can still be defined using
an unused IP address to assign a specific internal IP.</p>
</blockquote>
