开发机器作为 Minikube 网络的一部分?
Posted
技术标签:
【中文标题】开发机器作为 Minikube 网络的一部分?【英文标题】:Dev machine as part of Minikube's network? 【发布时间】:2017-07-27 22:13:11 【问题描述】:是否可以让我的开发机器成为 Minikube 网络的一部分?
理想情况下,它应该双向工作:
在我的 IDE 中开发应用程序时,我可以使用与 pod 相同的地址访问 Minikube 中的 k8s 资源。 在 Minikube 中运行的 Pod 可以访问我在 IDE 中运行的应用程序,例如通过 HTTP 请求。This 听起来第一部分在 GCE 上使用网络路由是可行的,所以我想知道在本地使用 Minikube 是否可行。
【问题讨论】:
你真的是指“能够访问网络”的“网络的一部分”吗? 首先,感谢您的出色回答(虽然还没有时间尝试)!据我了解,这种方法将有助于“访问网络”,例如在不公开的情况下与 Minikube 内的服务交谈。理想情况下,我也想成为“网络的一部分”,以便在 Minikube 中运行的 pod 可以向我在 IntelliJ 中运行的应用程序发出 HTTP 请求。 哦,我误解了这一点,抱歉,如果我将您的标题重命名为不是 100% 准确的名称!您介意在问题中添加该详细信息并更新(还原)标题以使意图更清晰吗? 【参考方案1】:为了讨论该特定用例,上游存在一个问题 (kubernetes/minikube#38)。
kube-proxy
已经在minikube
VM 中添加了 IP 转发所需的 IPtables 规则(这不是 minikube 特有的),所以您所要做的就是通过 minikube 的 IP 添加到容器网络的静态路由本地机器上的 eth1 接口:
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 虚拟机的 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
这还允许您通过集群 DNS(kube-dns
插件)解析 cluster.local
域中的名称:
❯ 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
【讨论】:
如果您在 macOS 上使用dnsmask
,请不要忘记配置解析器以使用 echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/cluster.local
向 dnsmask 发送 cluster.local
请求以上是关于开发机器作为 Minikube 网络的一部分?的主要内容,如果未能解决你的问题,请参考以下文章
在mac,ubunt上安装minikube作为开发折腾这些环境确实比较累,而且收益不高,但是相关的技术也要学习,使用minikube创建kubernate集群,使用dashboard操作
在mac,ubunt上安装minikube作为开发折腾这些环境确实比较累,而且收益不高,但是相关的技术也要学习,使用minikube创建kubernate集群,使用dashboard操作
如何远程访问本地 kubernetes minikube 仪表板
centos7.5安装minikube kubernetes