On this page
You create a LoadBalancer service in your Kind cluster, run kubectl get svc, and EXTERNAL-IP is stuck at <pending>. You wait. Still pending. You Google it. Still pending.
This is not a misconfiguration. It is expected behaviour. Kind runs inside Docker and has no cloud provider, so nothing responds to the LoadBalancer request. This walkthrough takes you from that stuck state to a fully functional LoadBalancer with verified traffic distribution across pods, step by step.
The Problem
Kind nodes are Docker containers running on a private bridge network, typically in the 172.20.0.0/16 range. When you create a LoadBalancer service, Kubernetes waits for a cloud controller to provision an external IP. In a managed cloud like EKS, GKE, or AKS, that happens automatically. In Kind, nothing is there to respond.
kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
alpaca-prod LoadBalancer 10.96.96.10 <pending> 8080:31291/TCP 35m
The service controller is just sitting there waiting for a cloud provider that does not exist.
A lot of people reach for kubectl port-forward at this point, but that bypasses the Service entirely and pins every request to a single pod. You can use it to reach your app, but you cannot use it to test load balancing.