
如图所示,有两个在不同网段的 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 。
