有个 K8s 跨集群通信的需求想请教下各位 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX    Kubernetes

有个 K8s 跨集群通信的需求想请教下各位

  •  
  •   zhoudaiyu
    PRO
    2023-12-08 20:20:43 +08:00 2282 次点击
    这是一个创建于 737 天前的主题,其中的信息能已经有所发展或是发生改变。

    如图所示,有两个在不同网段的 K8s 集群 cluster-A 与 cluster-B ,还有一个示例的两个集群外的客户端 hooc-172.1.2.1 ,这些集群的宿主机( phyhost-A 、phyhost-B )和客户端(hooc)都是三层互通的。现在的需求是:( 1 )两个集群之间的 Pod 可以通过对方的 Pod IP 互相访问;( 2 )某一个集群中的任何 Pod 或者再宿主机上可以访问另一集群的 service ( IP 形式);( 3 )集群外的客户端可以访问两个集群的任意 Service 或 Pod (都是 IP 形式)。请问目前有啥现成的方案可以支持吗?目前调研过:submariner 和 wireguard 。submariner 要求 kube-proxy 使用 iptables 模式,这个不太行,且项目较新,不知道有没有经过生产环境的考研;( 2 ) wiregurad 看上去应该能支持,也更成熟稳定一些。wireguard 也有几种模式,不知道 gateway 和 full mesh 选哪个好,而且 wireguard 貌似不是开箱即用的(配置较为复杂),而且对内核要求高。还有 2 个小需求如果满足最好:( 1 )对客户端和服务端的侵入尽可能小一些;( 2 )两个集群的 DNS 服务也能打通,可支持通过 DNS 访问不同集群的 Service 。
    13 条回复    2023-12-10 08:26:04 +08:00
    lrh3321
        1
    lrh3321  
       2023-12-08 21:19:01 +08:00
    Pod IP 互相访问,集群外的客户端通过 Pod IP 访问,都可以在上一级的网关上配静态路由规则来实现。service 的 Cluster IP 也是同理( Service-CIDR 要不重叠)。都在内网的,没有 IP 冲突的情况的话,不需要 wiregurad 。

    要 DNS 服务也能打通的话,那么最好两个集群的 cluster name 不一样,然后两边都根据 cluster name 来 forward 到对方
    suuuch
        2
    suuuch  
       2023-12-08 22:02:21 +08:00
    这个确实比较麻烦。。我这里的方案使用 API 网关直接替代掉 IP 访问。。缺点是侵入性比较大,各系统都要做调整。
    hallDrawnel
        3
    hallDrawnel  
       2023-12-08 23:01:01 +08:00
    不太确定,或许你需要 istio ?不过为了这个搞 istio 感觉不划算。
    tudou1514
        4
    tudou1514  
       2023-12-08 23:49:04 +08:00
    看了你的需求,我有个问题,两个集群的 pod 可以通过相互的 podip 访问?你怎么保证 pod 的 ip 是固定的?如果用 calico 来固定 podip ,那又怎么解决 pod 的 hpa 问题?我不太确定你的需求,但是如果是跨集群访问,为啥不用各自的 ingress 暴漏呢?
    defunct9
        5
    defunct9  
       2023-12-09 07:17:29 +08:00 via iPhone
    wg
    zhoudaiyu
        6
    zhoudaiyu  
    OP
    PRO
       2023-12-09 07:23:02 +08:00 via iPhone
    @tudou1514 有注册中心,服务端新上线或者销毁会通知客户端,就是 Dubbo 那套
    zhoudaiyu
        7
    zhoudaiyu  
    OP
    PRO
       2023-12-09 07:28:26 +08:00 via iPhone
    @lrh3321 就是两个宿主机网段之间的每跳路由都加上指向 Pod IP 的静态路由吧?这个确实可以考虑
    @suuuch 类似 apisix ?其实若是可以反向代理 dubbo 的请求就可以
    @hallDrawnel istio 的 multicluster 吧?这个也需要自己架 VPN
    @defunct9 这个和静态路由目前看还可以,有个问题就是需要服务端客户端的 Pod 改造吗? sidecar 这种
    suuuch
        8
    suuuch  
       2023-12-09 11:05:04 +08:00
    我们用的就是 api six ,这个优点是和 k8s 的集成度比较好。
    suuuch
        9
    suuuch  
       2023-12-09 11:07:33 +08:00
    这个场景上,对开发人员侵入小,就会让运维和平台人员的侵入比较大。。

    感觉上是一个取舍,目前我不知道有什么两全其美的办法,如果有的话,麻烦告诉我一下~
    zizon
        10
    zizon  
       2023-12-09 18:56:43 +08:00
    BGP 吧?
    ss098
        11
    ss098  
       2023-12-09 19:24:14 +08:00   1
    你想找的是不是:cilium cluster mesh
    CCIEliu
        12
    CCIEliu  
       2023-12-09 20:10:43 +08:00
    11 楼正确
    zhoudaiyu
        13
    zhoudaiyu  
    OP
    PRO
       2023-12-10 08:26:04 +08:00 via iPhone
    @suuuch 如果用 apisix ,dubbo 的客户端,服务端应该是要改造一下吧
    @zizon 不在一个二层网络里面呢,忘记强调这一点啦
    @ss098 这个我去调研一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5332 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:39 PVG 14:39 LAX 22:39 JFK 01:39
    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