paulbouwer/hello-kubernetes

EXTERNAL-IP stays in <pending> state

dwschulze opened this issue · 3 comments

When I applied your .yaml to my two node cluster (one master, one worker) the external-ip stays in Here's the service and pod:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-kubernetes LoadBalancer 10.110.156.22 80:30210/TCP 18m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-kubernetes-594f6f475f-4s9nw 1/1 Running 0 18m
hello-kubernetes-594f6f475f-7zb4h 1/1 Running 0 28s
hello-kubernetes-594f6f475f-jlrwb 1/1 Running 0 28s

Browser requests to port 30210 on either host is successful, but I should still be able to get an external-ip to connect on port 8080.

Do I need to change something in the .yaml to run on my two node cluster?

Able to replicate on stock k3s install:

$ sudo kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
svclb-hello-kubernetes-npwb2        0/1     Pending   0          48s
hello-kubernetes-594f6f475f-gpfvs   1/1     Running   0          48s
hello-kubernetes-594f6f475f-tss77   1/1     Running   0          48s
hello-kubernetes-594f6f475f-kclvr   1/1     Running   0          48s

$ sudo kubectl get service
NAME               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP      10.43.0.1      <none>        443/TCP        13m
hello-kubernetes   LoadBalancer   10.43.160.18   <pending>     80:32474/TCP   90s

Am able to connect to https://:32474

Hey all,

I also just ran into this issue on my vanilla k3s install. From the docs:

If you try to create a Service LB that listens on port 80, the Service LB will try to find a free host in the cluster for port 80. If no host with that port is available, the LB will stay in Pending.

I switched the port for the load balancer in the yaml to 8080 and it works for me now. FYI.

The recently added Helm Chart and Ingress options should provide options that work across more platforms.