如何通过 vpn 实现本地电脑与 k8s 集群的 Pod 互通 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NipGeihou
V2EX    Kubernetes

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

  •  
  •   NipGeihou 2022-11-05 04:11:20 +08:00 3343 次点击
    div class="outdated">这是一个创建于 1120 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

    因为还要做其他工作,就先不折腾这个,先用 vpn+KtConnect 将流量转发到本地
    novolunt
        9
    novolunt  
       2022-11-06 13:21:59 +08:00
    你的网络使用的是 wg0 ,也就是原程,那就没办法转发到本地,除非你设定路由不让内网走远程
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     864 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 19:41 PVG 03:41 LAX 11:41 JFK 14:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86