【问题标题】:Minikube - access host machine's portsMinikube - 访问主机的端口
【发布时间】:2019-03-13 22:41:28
【问题描述】:

我正在使用带有 hyperkit 驱动程序的 minikube,我需要从 minikube 集群内的 pod 访问主机上打开的端口。

我有两种方法可以做到这一点:

端口转发

我的本​​地端口的端口转发到minikube ip

ssh -i $(minikube ssh-key) docker@$(minikube ip) -R 8080:localhost:8080

然后我可以在 pod 中curl 172.17.0.1:8080

来源:https://medium.com/tarkalabs/proxying-services-into-minikube-8355db0065fd

本机IP

从我的主机上,我得到了 minikube 的网桥 IP:ifconfig bridge100

bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether 8e:85:90:2d:d5:64
    inet 192.168.64.1 netmask 0xffffff00 broadcast 192.168.64.255

然后我可以在 pod 中curl 192.168.64.1:8080

但是,我不确定这两种方法是否正确。 有没有办法静态引用主机以访问开放端口。 这里有什么解决办法?

【问题讨论】:

  • 查看alesnosek.com/blog/2017/02/14/… 的主机网络不建议这样做,因为您将只有一个具有此网络的 Pod 并打开给定端口,但这是一种选择。

标签: docker kubernetes minikube


【解决方案1】:

这里涉及的间接层太多,您必须将物理主机的 IP 地址作为环境变量或 ConfigMap 设置注入容器。 ExternalName 类型的服务也可以在这里工作。

这里的基本问题是每个层都可以找到紧接其后的层,但不能进一步。您有一个运行 Kubernetes Pod 的 VM 的主机。 Pod 可以使用downward API 来查找其节点的 IP 地址,但在您的情况下,这将是 VM,而不是它周围的主机。

(作为一个并行问题:你有一个普通的家用路由器,它是 192.168.1.1,你的本地系统是 192.168.1.2。你在路由器上运行一些服务器。同时,你有一个虚拟机在你的本地系统上运行, 它将主机视为 172.17.0.1 并认为它是 172.17.0.2。如果 VM 不知道其本地网络环境中的 192.168.1.0/24 网络,它如何访问路由器上的服务?)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2021-07-06
    • 2022-01-21
    • 2020-12-16
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多