Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dev machine as part of Minikube's network?

Is it possible to have my development machine to be part of Minikube's network?

Ideally, it should work both ways:

  • While developing an application in my IDE, I can access k8s resources inside Minikube using the same addressing that pods would use.
  • Pods running in Minikube can access my application running in the IDE, for example via HTTP requests.

This sounds like the first part is feasible on GCE using network routes, so I wonder if it's doable locally using Minikube.

like image 225
otto.poellath Avatar asked Mar 07 '17 15:03

otto.poellath


1 Answers

There is an issue open upstream (kubernetes/minikube#38) in order to discuss that particular use case.

kube-proxy already adds the IPtables rules needed for IP forwarding inside the minikube VM (this is not specific to minikube), so all you have to do is add a static route to the container network via the IP of minikube's eth1 interface on your local machine:

ip route add 10.0.0.0/24 via 192.168.42.58 (Linux)
route -n add 10.0.0.0/24 192.168.42.58     (macOS)

Where 10.0.0.0/24 is the container network CIDR and 192.168.42.58 is the IP of your minikube VM (obtained with the minikube ip command).

You can then reach Kubernetes services from your local environment using their cluster IP. Example:

❯ kubectl get svc -n kube-system kubernetes-dashboard
NAME                   CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes-dashboard   10.0.0.56    <nodes>       80:30000/TCP   35s

kubedash

This also allows you to resolve names in the cluster.local domain via the cluster DNS (kube-dns addon):

❯ nslookup kubernetes-dashboard.kube-system.svc.cluster.local 10.0.0.10
Server:     10.0.0.10
Address:    10.0.0.10#53

Name:   kubernetes-dashboard.kube-system.svc.cluster.local
Address: 10.0.0.56

If you also happen to have a local dnsmasq running on you local machine you can easily take advantage of this and forward all DNS requests for the cluster.local domain to kube-dns:

server=/cluster.local/10.0.0.10
like image 175
Antoine Cotten Avatar answered Oct 13 '22 17:10

Antoine Cotten