【问题标题】:Minikube services access local VPNMinikube 服务访问本地 VPN
【发布时间】:2019-09-12 17:55:49
【问题描述】:

如何让我的 pod 或 minikube 能够查看我的笔记本电脑通过 VPN 连接到的 10.x 网络?

设置: * 迷你库 * php 容器

php 代码访问私有存储库,10.x 地址。东西是在本地找到的,但是在 pod 中时我无法访问同一个 10.x 地址。

如何让我的 pod/minikube 访问我的 VPN 路由?

my-pod-99dc9d9d4-6thdj# 
my-pod-99dc9d9d4-6thdj# wget https://private.network.host.com/
Connecting to private.network.host.com (10.x.x.x:443)
^C
my-pod-99dc9d9d4-6thdj# 

(显然已消毒)

PS:我确实找到了一篇提到我所追求的帖子,但我似乎无法让它发挥作用:How to connect to a private IP from Kubernetes Pod

仍然无法访问私有 ip(通过我主机的 vpn)。

【问题讨论】:

    标签: kubernetes vpn minikube


    【解决方案1】:

    有几种方法可以实现这一目标。

    如果您只想将一些服务从 VPN 公开到 minikube,那么您可以利用 SSH 的反向隧道,如本文所述; Proxying services into minikube。这会将服务显示为 minikube VM 上的端口,因此本质上就像一个 nodePort,然后 SSH 会将这些隧道传输出去,主机会为您通过 VPN 路由它们。

    但是,如果您确实需要访问 VPN 背后的整个网络,那么您将需要使用不同的方法。以下假设您的 VPN 配置为拆分隧道,它使用 NAT,并且没有使用冲突的 IP 范围。

    最简单的选择是在 minikube 中运行 VPN 客户端,从而提供对 VPN 和网络的一流访问,并且不需要设置任何路由。另一种选择是自己设置路由以访问主机上的 VPN。这意味着确保涵盖以下内容:

    1. pod 网络的主机路由; sudo ip route add $REPLACE_WITH_POD_NETWORK} via $(minikube ip) 例如就我而言,这是sudo ip route add 10.0.2.0/24 via 192.168.99.119
    2. 从主机ping到pod网络地址(你必须用kubectl查找这个,例如kubectl get pod -n kube-system kube-apiserver-minikube -o yaml

    这应该可以工作,因为 pod/service/kubelet 中的网络/路由是由默认路由处理的,它涵盖了所有内容。然后当流量到达主机时,VPN 和它暴露的任何网络都会有相应的路由,主机会知道将其路由到 VPN,并对其进行 NAT 以处理返回路径。当流量返回时,它会因为 NAT 到达你的主机,它会查找路由表,查看你之前添加的条目,然后将流量转发到 minikube,然后转发到 pod/service,瞧!

    希望这会有所帮助。

    【讨论】:

    • 我尝试在本地到我的 gitlab telnet,它位于 VPN 后面,这很好。当我从 minikube 执行此操作时,它不起作用。我从 #1 和 #2 尝试您的解决方案,但没有运气。我该如何调试它?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 2022-08-08
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2015-09-18
    • 2017-08-18
    相关资源
    最近更新 更多