Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在云原生 Contrail 网络中部署虚拟网络路由器

总结 云原生 Contrail® 网络 支持 VirtualNetworkRouter (VNR) 结构。此结构提供两者之间 VirtualNetworks的连接。

虚拟网络路由器概述

通常, VirtualNetwork 流量是隔离的,以保持租户分离。在云原生 Contrail 网络中, VirtualNetworkRouter (VNR) 执行路由泄漏。路由泄漏通过导入路由实例 (RI) 与与这些实例关联的路由表来建立连接 VirtualNetworks 。因此,一个路由表上的设备可以从另一个路由表上的设备访问资源。

VNR 为以下两种通用网络模式提供连接:

  • 网格:所有连接的 VirtualNetworks Pod 之间相互通信。

  • 中心辐射型VirtualNetworks 连接到两种不同的 VNR 类型(辐射型、中心)。 VirtualNetworks 连接到辐射型 VNF 与 VirtualNetworks 连接到中心型 VNF 通信,反之亦然。 VirtualNetworks 连接到辐射型 VNF 不能与其他 VirtualNetworks 连接到辐射型 VNR 通信。

VNR 是部署在云原生 Contrail 网络内的 Kubernetes 结构。

虚拟网络路由器用例

以下示例是一些常见用例,展示了 VNR 在云原生 Contrail 网络中的功能。

网状 VNR,用于连接同一命名空间中的两个或多个虚拟网络

  1. 图 1:用户在命名空间 1 中创建 VN1 和 VN2。VN1 中的 Pod 无法连接到 VN2 中的 Pod。这是云原生 Contrail 网络的默认行为 VirtualNetworks
  2. 图 2:用户定义一个选择 VN1 和 VN2 的网格类型。这种 VNR 允许 VN1 中的 Pod 与 VN2 中的 Pod 通信,反之亦然。
  3. 图 3:VN1 中的 Pod 连接到 VN2 中的 Pod。VNR 的路由目标同时针对 importExported 两者 VirtualNetworks

返回虚拟网络路由器用例

将同一命名空间中的新虚拟网络添加到现有网状类型 VNR

  1. 图 1:两个 VirtualNetworks (VN1、VN2)连接到命名空间 1 中的 VNR。
  2. 图 2:用户创建两个新 VirtualNetworks (VN3、VN4)。
  3. 图 3:VN3 和 VN4 连接到 VNR。因此,所有 VirtualNetworks连接到 VNR 的 VNR 都会收到连接。

返回虚拟网络路由器用例

同一命名空间中的两个网状 VNR

  1. 图 1:命名空间 1 中已存在 VNR-web 和 VNR-db 类型的网格。只有连接到相应 VNR 的 VN 相互通信。
  2. 图 2:VNR-web 和 VNR-db 相互通信。
  3. 图 3:所有 VirtualNetworks 连接到 VNR-Web 和 VNR-db 的互连设备相互通信。

返回虚拟网络路由器用例

具有不同名称空间的两个网状 VNR

  1. 图 1:VNR-web 选择 VN1 和 VN2。VN1 和 VN2 中的 Pod 相互通信。VN1 和 VN2 无法与 VN3 和 VN4 通信。
  2. 图 2:VNR-db 选择 VN3 和 VN4。VN3 和 VN4 中的 Pod 相互通信。VN3 和 VN4 无法与 VN1 和 VN2 通信。
  3. 图 3:用户更新 VNR-web 以选择 VNR-db。
  4. 图 3:用户更新 VNR-db 以选择 VNR-web。
  5. 图 3:由于两个 VNR 相互选择,VNR-web 的 RT(路由目标)被添加到 VN3 和 VN4 中。VNR-db 的 RT 被添加到 VN1 和 VN2 中。VN1、VN2、VN3 和 VN4 中的 Pod 相互通信。

返回虚拟网络路由器用例

同一命名空间中的中心辐射型 VNR

  • 图 1:VN1 中的 Pod 无法与 VN2 中的 Pod 通信。VN1 和 VN2 无法与 VN3 通信。
  • 图 2:用户创建类型为“辐射”和“中心”的 VNR。VNR 辐射型和 VNR 中心相互导入对方的 RT。
  • 图 3:VNR 辐射型和 VNR-hub 的 RT 被添加到 VN1、VN2 和 VN3 中,因为它们相互导入了对方的 RT。因此,VN1 和 VN2 中的 Pod 会与 VN3 通信。VN1 和 VN2 中的 Pod 无法通信。

返回虚拟网络路由器用例

不同命名空间中的中心辐射型 VNR

返回虚拟网络路由器用例

多个 VNR 下的相同虚拟网络

  • 图 1:VN1 和 VN2 中的 Pod 无法相互通信。但 VN3、VN4关于 VN3、VN4 的资源也可以相互通信
  • 图 2:创建 VNR 辐射选择 VN1、VN2、VNR 中心选择 VN3、VN4、VNR 网格选择 VN3、VN4
  • 图 3:VNR 辐射确保 VN1、VN2 之间无法相互通信,VNR-hub 允许 VN1、VN2 到达 VN3、VN4,而 VNR 网状网络可实现 VN3、VN4 之间的通信

返回虚拟网络路由器用例

用例解释

本节包括以下两个 VNR 用例以及每个用例的端到端解释:

标准用例:单个 VNR 连接两个虚拟网络

此用例包括名称空间ns-single-mesh中的两个 VirtualNetworksvn-1vn-2)。两个虚拟网络均具有labelvn: web.每个 Pod 都包含VirtualNetwork一个 Pod。包含VirtualNetwork vn-1 pod-vn-1。包含VirtualNetwork vn-2 pod-vn-2。名称为type: mesh的 VNR 使用vn: webmatchExpressions在两VirtualNetworks者之间建立vnr-1连接。VNR 将 RI 和路由表vn-1导入到vn-2,反之亦然。由于vnr-1是网状型 VNR,因此所有连接的 VirtualNetworks Pod 相互通信。

更新用例:单个 VNR 连接两个附加虚拟网络

此用例类似于标准用例,只是在此用例中,用户使用额外的 type: mesh VNR 更新 YAML 以连接命名空间ns-single-mesh中的两个新 VirtualNetworksvn-3vn-4)。所示的 VNR 名称名称vnr-2ns-single-mesh matchExpressions: db, middlware。有VirtualNetworkvn-3标签vn: db,有vn-4标签vn: middleware。因此,vnr-2将 RI 和路由表vn-3导入到vn-4,反之亦然。

虚拟网络路由器配置

以下部分提供以下资源的 YAML 配置信息:

API 类型(架构)

网状 VNR

此 YAML 是一个网格 VNR 的示例,名称vnr-1在命名空间frontend中,带有labelsvnr: webns: frontend。此 VNR 将其路由目标导入命名空间backend中的任何 VNR,并随 matchLabel vnr: db

辐射型 VNR

此 YAML 是分支 VNR 的示例,名称vnr-1在命名空间vnrgroup: spokes frontend labels中带有 and。ns: frontend此 VNR 将其路由目标导入命名空间backend中的任何 VNR,并随 matchLabel vnrgroup: hubs

VNR 中心

此 YAML 是名称在命名空间backend中带有labelsvnrgroup: hubsns: backend的中枢 VNR vnr-2 的示例。此 VNR 将其路由目标导入命名空间frontend中的任何 VNR,并随 matchLabels vnrgroup: spokes