Dev机器是Minikube网络的一部分?

时间:2017-03-07 15:59:30

标签: networking docker kubernetes minikube

是否可以让我的开发机器成为Minikube网络的一部分?

理想情况下,它应该兼顾两种方式:

  • 在我的IDE中开发应用程序时,我可以使用pod将使用的相同地址访问Minikube内的k8s资源。
  • 在Minikube中运行的Pod可以访问我在IDE中运行的应用程序,例如通过HTTP请求。

This听起来第一部分在使用网络路由的GCE上是可行的,所以我想知道它是否可以在本地使用Minikube。

1 个答案:

答案 0 :(得分:11)

上游(kubernetes/minikube#38)打开了一个问题,以便讨论该特定用例。

kube-proxy已经在minikube VM中添加了IP转发所需的IPtables规则(这不是minikube特有的),因此您所要做的就是通过静态路由添加到容器网络本地机器上minikube的eth1接口的IP:

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)

其中10.0.0.0/24是容器网络CIDR,192.168.42.58是您的minikube VM的IP(使用minikube ip命令获得)。

然后,您可以使用其群集IP从本地环境访问Kubernetes服务。例如:

❯ 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

这也允许您通过群集DNS(cluster.local插件)解析kube-dns域中的名称:

❯ 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

如果您在本地计算机上碰巧运行了本地dnsmasq,则可以轻松利用此功能并将cluster.local域的所有DNS请求转发至kube-dns

server=/cluster.local/10.0.0.10