Last updated on

异构多集群通讯方案汇总


🕊️ 暂时只做方案汇总,优缺点分析先欠着。鸽鸽鸽~~~

🌟 许多大数据业务都在 Kubernetes 集群上运行。
🌟 为了使运行在不同 Kubernetes 集群上的大数据业务能够高效地访问彼此的数据,需要一种新的方式在异构多 Kubernetes 集群之间建立高性能、简单的网络通信。

需求 / Requirements

📄 Heterogeneous_multi-cluster_fullmesh_communication_practice_YangLi_and_WenfengLiu_110621_v1.pdf (3137 KB)(暂未托管,后续换成 Google Drive 分享链接)

image

image

image

image

技术关注点

  • 本集群的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

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.

image

image

Method 2 — Istio Multiple Networks

Deployment Models

Describes the options and considerations when configuring your Istio deployment.

image

image

image

image

image

Method 3 — Linkerd Multi-cluster Communication

Multi-cluster communication

Linkerd can transparently and securely connect services that are running in different clusters./

image

Method 4 — kilo

image

https://github.com/squat/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将负责位置内的网络。

image

Method 5 — FabEdge

https://github.com/FabEdge/fabedge/blob/main/docs/install_zh.md

image