开发机器作为 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

Minikube 将在 localhost 上运行的 MySQL 公开为服务

在Ubuntu20.04上安装Kubernetes-Kubeadm和Minikube