The Cloud Controller Manager

Controllers that call a cloud provider's API live in the cloud-controller-manager, maintained by each provider outside the core (the in-tree cloud code was removed in 1.31). Its node controller labels nodes with instance type and zone and deletes Nodes whose machines are gone; its route controller programs the cloud network; its service controller creates a load balancer for each type: LoadBalancer Service. kind 14,561 runs none, and each node's providerID just names its Docker 514 container:

Provider IDs on a cluster with no cloudShell
kubectl get nodes -o custom-columns=NAME:.metadata.name,PROVIDER-ID:.spec.providerID
Output
NAME                        PROVIDER-ID
l3-booknest-control-plane   kind://docker/l3-booknest/l3-booknest-control-plane
l3-booknest-worker          kind://docker/l3-booknest/l3-booknest-worker

So a LoadBalancer Service on kind keeps its external IP <pending>, unless you run cloud-provider-kind 508 (github.com/kubernetes-sigs/cloud-provider-kind (https://github.com/kubernetes-sigs/cloud-provider-kind 508 )) on the host; Local Feature Comparison compares it with k3s 51,195 's ServiceLB.