是否可以让我的开发机器成为 Minikube 网络的一部分?
理想情况下,它应该双向工作:
- 在我的 IDE 中开发应用程序时,我可以使用与 pod 相同的地址访问 Minikube 中的 k8s 资源。
- 在 Minikube 中运行的 Pod 可以访问我在 IDE 中运行的应用程序,例如通过 HTTP 请求。
这听起来第一部分在 GCE 上使用网络路由是可行的,所以我想知道在本地使用 Minikube 是否可行。
是否可以让我的开发机器成为 Minikube 网络的一部分?
理想情况下,它应该双向工作:
这听起来第一部分在 GCE 上使用网络路由是可行的,所以我想知道在本地使用 Minikube 是否可行。
为了讨论该特定用例,上游存在一个问题(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