O comando que você forneceu funcionou para mim. Em uma primeira tentativa de expor o serviço, usei um endereço IP estático definido em uma região diferente de onde o Load Balancer estava sendo criado. Como resultado, o Balanceador de Carga não foi criado e o serviço mantido em um estado "Pendente".
$ kubectl get services | grep node3
hello-node3 10.3.242.65 <pending> 80/TCP 1m
$kubectl get events
48s 2m 5 hello-node3 Service Normal CreatingLoadBalancer {service-controller } Creating load balancer
47s 2m 5 hello-node3 Service Warning CreatingLoadBalancerFailed {service-controller } Error creating load balancer (will retry): Failed to create load balancer for service default/hello-node3: requested ip W.X.Y.Z is neither static nor assigned to LB a059cdb738ef911e6a83642010af001b(default/hello-node3): <nil>
Então eu usei um IP definido em us-central onde meus nodos vivem.
kubectl expose deployment hello-node3 --type="LoadBalancer" --target-port=8080 --load-balancer-ip='A.B.C.D'
Então:
$ kubectl get services | grep node3
hello-node3 10.3.241.0 A.B.C.D 80/TCP 20m
$ curl A.B.C.D
Hello World!
Sugiro que verifique se o IP existe na mesma região em que o cluster reside. Se isso falhar, para obter mais informações sobre o estado usando kubectl get events
. Isso pode lançar alguma luz.