8

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

理想情况下,它应该双向工作:

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

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

4

1 回答 1

11

为了讨论该特定用例,上游存在一个问题(kubernetes/minikube#38 )。

kube-proxy已经在虚拟机内部添加了 IP 转发所需的 IPtables 规则minikube(这不是 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

库贝达什

这也允许您cluster.local通过集群 DNS(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
于 2017-03-07T21:47:45.370 回答