V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
NipGeihou

如何通过 vpn 实现本地电脑与 k8s 集群的 Pod 互通

  •  
  •   NipGeihou · Nov 5, 2022 · 3628 views
    This topic created in 1270 days ago, the information mentioned may be changed or developed.

    我将 nacos 、微服务网关部署在服务器上的 k8s 集群,又在集群中部署了 WireGuard 用来组网,但操作发现连上 vpn 后,本地电脑可以访问 k8s 上的资源,但 k8s 上的 pod 无法访问本地电脑。

    具体问题:在连接 vpn 下,本地电脑运行一个微服务,并注册到 k8s 上的 nacos ,请求微服务网关,无法转发到本地电脑。

    猜测原因:WireGuard 收不到微服务网关发送的数据,需要添加路由表将10.8.0.0/24转发到 WireGuard 容器 IP ,但没找到 Calico 添加路由表的文档。

    请教,怎么解决上述问题,似乎通过划分路由表也不太好,容器的 ip 改了就不行了

    9 replies    2022-11-06 13:21:59 +08:00
    uncat
        1
    uncat  
       Nov 5, 2022
    打通 k8s 集群所在局域网和家庭局域网. 分别在彼此局域网的路由表内添加路由规则.

    家庭局域网设备访问 pod: 本地设备 -> 默认网关 -> 本地 wireguard -> k8s 集群中的一台 node 服务器上的 wireguard -> pod
    pod 访问家庭局域网设备: pod -> 默认网关 -> k8s 集群中的一台 node 服务器上的 wireguard -> 本地 wireguard -> 本地设备
    maja
        2
    maja  
       Nov 5, 2022
    有个这玩意 https://www.telepresence.io/ 不知道是不是你想要的
    sujin190
        3
    sujin190  
       Nov 5, 2022 via Android
    宿主机能改路由表的话,其实流量都要经过宿主机,可以考虑把 vpn 放到外部直接改宿主机路由表或者 nat

    或者装个 demonset 给 root 权限来操作宿主机路由表也行吧
    sujin190
        4
    sujin190  
       Nov 5, 2022 via Android
    如果 vpn 不想装到外部,其实可以考虑固定到一台宿主机上,vpn 创建的虚拟网卡宿主机也看得到吧

    似乎 k8s 网络似乎只是用虚拟网卡和不同网络空间组了虚拟网络,路由和 nat 应该是由宿主机的网络栈提供的,所以操作宿主机路由表和 nat 就行吧
    NipGeihou
        5
    NipGeihou  
    OP
       Nov 5, 2022
    @sujin190 感谢,"vpn 创建的虚拟网卡宿主机也看得到吧"提示了我,才发现我把 node1 和 node2 的 ssh 连接名称对调了,连接到正确的宿主机后,确实能在 ip addr 看到那个 vpn 里的虚拟网卡 wg0 。

    但我发现即便在 vpn 的宿主机 ping 本地电脑 ip 也无法 ping 通,而在 vpn pod 里是可以的
    NipGeihou
        6
    NipGeihou  
    OP
       Nov 5, 2022
    @maja 我有试过 ktctl ,但我没有把 k8s 暴露在公网,我还是需要通过 vpn 连到 k8s 集群所在网络才可以使用,并且他需要 kubeconfig ,但我目前的场景只需要实现互通就可以了。
    sujin190
        7
    sujin190  
       Nov 5, 2022 via Android
    @NipGeihou 那估计 wg0 是在容器的网络空间创建的吧,宿主机看的时候是不是没 ip ,pod 里看有 ip ?但路由表配置逻辑应该是一样的吧,下一跳需要先到 pod 的 ip
    NipGeihou
        8
    NipGeihou  
    OP
       Nov 6, 2022
    @sujin190 又折腾了一天,发现宿主机的 wg0 是之前配置了 hostNetwork: true 出现的,后面改回 false 并没有自动删除,所以其实是不通的。

    后面我又改成了 hostNetwork: true ,在宿主机下能够 ping 通本地电脑 ip ,但其他 node 添加了路由表,还是无法 ping 通本地电脑,vpn 网络变得十分的差,但感觉方向应该是这个方向。

    因为还要做其他工作,就先不折腾这个,先用 vpn+KtConnect 将流量转发到本地
    novolunt
        9
    novolunt  
       Nov 6, 2022
    你的网络使用的是 wg0 ,也就是原程,那就没办法转发到本地,除非你设定路由不让内网走远程
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3360 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 00:34 · PVG 08:34 · LAX 17:34 · JFK 20:34
    ♥ Do have faith in what you're doing.