异构多集群通讯方案汇总
🕊️ 暂时只做方案汇总,优缺点分析先欠着。鸽鸽鸽~~~
🌟 许多大数据业务都在 Kubernetes 集群上运行。
🌟 为了使运行在不同 Kubernetes 集群上的大数据业务能够高效地访问彼此的数据,需要一种新的方式在异构多 Kubernetes 集群之间建立高性能、简单的网络通信。
需求 / Requirements
📄 Heterogeneous_multi-cluster_fullmesh_communication_practice_YangLi_and_WenfengLiu_110621_v1.pdf (3137 KB)(暂未托管,后续换成 Google Drive 分享链接)




技术关注点
-
本集群的POD互访流量走向、是否加密?
-
不同集群之间相互通讯,其中的链路是否安全?是否需要加密?
-
不同集群之间的网络通讯的安全策略是否满足?
-
不同集群之间是否需要采用隧道技术?若选用隧道技术,应当选取那种?VXLAN?IPIP?OR?
-
若采用隧道技术,隧道技术本身是否满足安全需求?
-
当MTU较小且性能有要求时,慎用隧道技术。
-
采用Services Mesh技术(istio、Linkerd)会对当前的集群带来一定的负担,网络时延提高。
-
不同的集群的Cluster IP Range、POD IP Range是否会引起冲突?
Method 1 — Antrea (Recommend)
Antrea Multi-cluster Controller only supports Service of type ClusterIP at this moment. In order to support multi-cluster Service access between member clusters, Antrea requires member clusters’ Pod IPs are reachable and no overlapping between all member clusters.(v1.5)
目前,Antrea多集群控制器仅支持ClusterIP类型的服务。为了支持成员集群之间的多集群服务访问,Antrea要求成员集群的Pod ip是可达的,并且所有成员集群之间的CIDR没有重叠。(v1.5)
🌟 Antrea v1.5
🌟 需要POD IP互通,那么需要underlay对每个集群中使用所有CIDR进行互联互通。
🌟 若需跨越中间网络,不同集群之间可以借助underlay中建立的隧道进行互联互通,则可用,否则需要考虑该方案是否适用你的场景。
📄 Heterogeneous_multi-cluster_fullmesh_communication_practice_YangLi_and_WenfengLiu_110621_v1.pdf (3137 KB)(暂未托管,后续换成 Google Drive 分享链接)
antrea/architecture.md at v1.5.0 · antrea-io/antrea
Kubernetes networking based on Open vSwitch. Contribute to antrea-io/antrea development by creating an account on GitHub.


Method 2 — Istio Multiple Networks
Describes the options and considerations when configuring your Istio deployment.

Method 3 — Linkerd Multi-cluster Communication
Linkerd can transparently and securely connect services that are running in different clusters./
Method 4 — kilo

Kilo is a multi-cloud network overlay built on WireGuard and designed for Kubernetes (k8s + wg = kg).
Kilo是建立在WireGuard上并为Kubernetes (k8s wg = kg) 设计的多云网络覆盖。
Kilo can operate both as a complete, independent networking provider as well as an add-on complimenting the cluster-networking solution currently installed on a cluster. This means that if a cluster uses, for example, Flannel for networking, Kilo can be installed on top to enable pools of nodes in different locations to join; Kilo will take care of the network between locations, while Flannel will take care of the network within locations.
Kilo既可以作为完整的独立网络提供商运行,也可以作为附加组件来补充当前安装在群集上的群集网络解决方案。这意味着,如果集群使用例如Flannel进行联网,则可以在顶部安装Kilo以使不同位置的节点池能够加入; Kilo将负责位置之间的网络,而Flannel将负责位置内的网络。
Method 5 — FabEdge
https://github.com/FabEdge/fabedge/blob/main/docs/install_zh.md
