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

ott*_*ath 8 networking docker kubernetes minikube

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

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

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

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

Ant*_*ten 11

上游(kubernetes/minikube#38)存在一个问题,以便讨论该特定用例.

kube-proxy已经添加了minikubeVM 内部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)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

kubedash

这还允许您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
Run Code Online (Sandbox Code Playgroud)

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

server=/cluster.local/10.0.0.10
Run Code Online (Sandbox Code Playgroud)

  • 如果你在macOS上使用`dnsmask`,不要忘记配置解析器将`cluster.local`请求发送到带有`echo"nameserver 127.0.0.1的dnsmask"| sudo tee/etc/resolver/cluster.local` (3认同)