Minikube, and LoadBalancer in “Pending” status

Minikube, and LoadBalancer in “Pending” status

After running Pritunl in Minikube, it is not possible to connect to the VPN:


2022-10-03 13:50:32 TCP/UDP: Preserving recently used remote address: [AF_INET]194.168.3.100:1194
2022-10-03 13:50:32 UDP link local: (not bound)
2022-10-03 13:50:32 UDP link remote: [AF_INET]194.168.3.100:1194

We check its Kubernetes Service:

kubectl -n pritunl-local get svc

NAME              TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE

pritunl           LoadBalancer   10.102.129.25        1194:30166/TCP   47m

Type – LoadBalancerbut his EXTERNAL-IP – in status Pendingsince Minikube does not have a service with the LoadBalancer type, because they must be created at the infrastructure level – AWS, GCE, Azure, and then from them Kubernetes receives an IP or URL to which it will route requests to this load balancer.

There are several solutions for Minicube:

  • shove minikube tunnel – will create a tunnel between the host and the Service in Kubernetes
  • or minikube service – we get a direct URL for connection
  • or specify externalIPs for Kubenetes LoadBalancer Service – configure it manually

Let’s all try.

Minikube tunnel

We check the routes on the host machine:

route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0 192.168.3.1 0.0.0.0 AND 100 0 0 enp38s0

172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-9c291321e71a

192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 enp38s0

192.168.59.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0

Here we see the route to our VirtualBox – 192.168.59.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0.

Let’s start tunnel:

minikube tunnel

[sudo] password for setevoy:

Status:

machine: minikube

pid: 333552

route: 10.96.0.0/12 -> 192.168.59.107

minikube: Running

services: [pritunl]

errors:

minikube: no errors

router: no errors

loadbalancer emulator: no errors

We are checking the routes now – a new route to the network has appeared 10.96.0.0 (Kubernetes CIDR) via 192.168.59.107 is a virtual machine from VirtualBox, on which Minikube itself is running:

route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

0.0.0.0 192.168.3.1 0.0.0.0 AND 100 0 0 enp38s0

10.96.0.0 192.168.59.107 255.240.0.0 AND 0 0 0 vboxnet0

172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-9c291321e71a

192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 enp38s0

192.168.59.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0

Let’s test the Kubernetes LoadBalancer now:

kubectl -n pritunl-local get svc pritunl

NAME      TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE

pritunl   LoadBalancer   10.102.129.25   10.102.129.25   1194:30166/TCP   54m

“It works!” (c)

Minikube service

Let’s start minikube servicespecify the namespace and the name of the Service – Minicube will return the URL for connection:

minikube service -n pritunl-local pritunl

|—————|———|————–|—————————–|

|   NAMESPACE   |  NAME   | TARGET PORT  |             URL             |

|—————|———|————–|—————————–|

| pritunl-local | pritunl | openvpn/1194 |  |

|—————|———|————–|—————————–|

🎉  Opening service pritunl-local/pritunl in default browser…

Here 192.168.59.108 – the address of our VirtualBox server, a 32350 – The NodePort on which the Pritunl Server is running.

Also, it is possible to display all Kubernetes Service using list:

minikube service -n pritunl-local list

|—————|—————–|————–|—————————–|

|   NAMESPACE   |      NAME       | TARGET PORT  |             URL             |

|—————|—————–|————–|—————————–|

| pritunl-local | pritunl         | openvpn/1194 |  |

| pritunl-local | pritunl-mongodb | No node port |

| pritunl-local | pritunl-web     | No node port |

|—————|—————–|————–|—————————–|

Or get a URL with one string instead of a table:

kubectl -n priminikube service -n pritunl-local pritunl –url

Trying to connect:

telnet 192.168.59.108 32350

Trying 192.168.59.108…

Connected to 192.168.59.108.

Escape character is ‘^]’.

Pritunl logs:

“It works!” (c)

LoadBalancer externalIPs

Let’s get the IP of the VirtualBox machine:

minikube ip

192.168.59.108

We edit the LoadBalancer:

kubectl -n pritunl-local edit svc pritunl

We indicate externalIPs:

...
  externalIPs:
  - 192.168.59.108
...

Save, check the Service itself:

kubectl -n pritunl-local get svc pritunl

NAME      TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE

pritunl   LoadBalancer   10.104.33.93   192.168.59.108   1194:32350/TCP   81m

And connecting to it:

telnet 192.168.59.108 1194

Trying 192.168.59.108…

Connected to 192.168.59.108.

Escape character is ‘^]’.

“It works!” (c)

Done.

HOWTO’s,Kubernetes,Networking,Virtualization,Проблеми та рішення,minikube,

#Minikube #LoadBalancer #Pending #status

Leave a Comment

Your email address will not be published. Required fields are marked *