Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

CN2 群集间端点发现

总结 从版本 23.4 开始,云原生 Contrail 网络 (CN2) 支持群集间端点发现。

概述

CN2 提供基于 BGP 的控制平面,允许您互连多个 Kubernetes 集群以交换路由信息。这样可以实现跨集群容器到容器以及容器到服务通信。以前,此通信仅限于基于 IP 地址的访问。

Kubernetes 中的 DNS 会自动配置为根据约定 <service>.<namespace>.svc.<cluster-domain>通过 DNS 名称发现服务。例如, foo.default.svc.cluster.local.要在对等集群上启用服务发现,您需要使用相应的属性创建相应的服务,以便能够对远程 Pod 进行寻址。

此功能的好处是利用 CN2 中的 BGP 将有关可用服务的信息导出到有关 Pod 的对等 CN2 群集,以便(按名称)发现它们并从对等 BGP 群集进行访问。

配置 CN2 群集以共享路由

本节介绍如何配置两个 CN2 群集以相互泄漏路由。以下示例演示如何在两个群集之间完成此操作。

先决条件

此功能需要满足以下条件:

  • CN2 版本 23.4 已安装并运行。

  • 您正在使用 Kubernetes 编排在有效的云网络环境中运行。

  • 您有两个正在运行的 CN2 集群。

配置 BGP 对等互连

两个 CN2 群集中的每一个都应配置为具有唯一的自治系统 AS 编号,以标识 BGP 网络中的群集。在以下示例中,我们有两个 CN2 集群,第一个带有 AS 64513 ,第二个带有 AS 64514.

定义自定义路由目标 (RT)

要使服务地址可从 CN2 VirtualNetworkdefault-servicenetwork default-podnetwork路由,需要自定义 RT。在以下示例中,如果使用 , RT 42000000 如果启用了 32 位 ASN 支持,则在用户范围内。

为群集 1 上的群集 2 配置 BGPR 外部

请注意,在以下示例中,nameaddress、 和identifier字段应与群集 2 上部署时配置的值匹配。

为群集 2 上的群集 1 配置 BGPR 外部

请注意,在以下示例中,nameaddress、 和identifier字段应与群集 2 上部署时配置的值匹配。

验证 BGP 对等互连是否正常工作

在上面的示例中,群集 1 IP 地址是 10.74.190.74 并且可以使用以下 URL 进行验证:

群集 2 IP 地址是 10.74.190.55 并且可以使用以下 URL 进行验证:

从 URL 中,您应该会看到每个系统上列出了两个 BGP 邻接方, state 每个邻接方的 应为 Established

创建导出服务

在导出服务的集群(特此 cluster-export.local)上,创建一个要导出到一个集群中的服务,其中包含附加标签 core.juniper.net/serviceExport: <export-name>

创建导入服务

在导入服务的集群上(特此 cluster-import.local),创建具有附加标签 core.juniper.net/serviceImport: <export-name>的同名对应服务。

必须 clusterIP 设置为 None。这会将服务标识为“无外设”,并为其创建 no Endpoint 。还需要端口配置。 不要设置目标端口, 因为必须 targetPort 匹配 port

部署 YAML 文件后,您可以通过 中的 my-service.my-namespace.svc.cluster-import.localPod cluster-import.local 访问该服务。您现在有两个通过 BGP 交换路由的 CN2 集群。

示例 YAML 文件位于 feature_tests/tests/test-yaml/endpoint-discovery/中。