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

2023-12-08 20:20:43 +08:00
 zhoudaiyu

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

感觉上是一个取舍,目前我不知道有什么两全其美的办法,如果有的话,麻烦告诉我一下~
zizon
2023-12-09 18:56:43 +08:00
BGP 吧?
ss098
2023-12-09 19:24:14 +08:00
你想找的是不是:cilium cluster mesh
CCIEliu
2023-12-09 20:10:43 +08:00
11 楼正确
zhoudaiyu
2023-12-10 08:26:04 +08:00
@suuuch 如果用 apisix ,dubbo 的客户端,服务端应该是要改造一下吧
@zizon 不在一个二层网络里面呢,忘记强调这一点啦
@ss098 这个我去调研一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX