Minikube服务如何访问本地VPN

3

我如何让我的pod或minikube能够看到我所连接的VPN网络中的10.x网络?

配置: * minikube * 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: 我找到了一个提到我需要的内容的帖子,但我似乎无法使其正常工作:如何从Kubernetes Pod连接到私有IP

仍然无法通过主机的VPN访问私有IP。

1个回答

1
有几种方法可以实现这个目标。
如果您只想将一些服务从VPN暴露到minikube中,那么您可以利用SSH的反向隧道功能,如本文所述; 代理服务到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,完成!

希望这可以帮助。


我尝试在本地使用telnet连接我的GitLab,它在VPN后面,一切正常。但是当我从Minikube尝试时,它无法工作。我尝试了您在#1和#2中提供的解决方案,但没有成功。我该如何调试它?谢谢! - Sergey Pleshakov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接