使用 Kuma 运行 多云服务网格

Using Kuma to run a multi-cloud service mesh

如何使用 Kuma 到 运行 跨基于 VM 的环境以及基于 Kubernetes 的环境的多云服务网格?

具体来说,服务发现将如何以基于 VM 的工作负载发现基于 K8s 的工作负载的方式工作,反之亦然?

Kuma 将 so-called zone 定义为控制隔离域,即所有工作负载连接都由单个控制平面管理。这样的控制平面被称为remote。整体视图和策略管理在统一所有区域的 global 控制平面中完成。

当开始规划分布式部署时,他们必须获得以下项目:

  • Global 控制平面的部署位置及其类型。后者可以是 Universal (VM/BareMetal/Container) 或 Kubernetes(on-premise/cloud).
  • 要添加的区域的数量和类型。这些可以随着时间的推移而改变。

按照 instructions 安装 global 控制平面,具体步骤适用于所选部署类型。按照说明收集相关 IP address/ports。

安装 remote 控制平面相当简单。在整个 multi-zone 部署的生命周期内,可以根据需要重复此过程。

Cross-zone服务消费简述here。简而言之,我们建议使用以下语法来访问服务 echo-server,部署在 Kubernetes 命名空间 echo-example 中并暴露在端口 1010 上:

<kuma-enabled-pod>$ curl http://echo-server_echo-example_svc_1010.mesh

使用此语法,甚至可以从工作负载在 VM 中运行的相邻通用区域中找到和使用该服务。 Kuma 利用其自己的 DNS 服务,允许此服务发现。

建议在 VM 中声明的服务遵循相同的服务命名格式,这样如果需要在 Kubernetes 集群中有一个服务副本,它们可以轻松互换,而无需重新配置整个基础架构。