Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用多个网络接口启用 Pods

云原生 Contrail® 网络™ (CN2) 支持 Kubernetes 内某个 Pod 的多个网络接口。

云原生 Contrail 网络本机支持 Pod 的多个网络接口。

您还可以使用 Multus 在云原生 Contrail 网络中启用多个网络接口。Multus 是 Kubernetes 网络管道工作组开发的用于 Kubernetes 的容器网络接口 (CNI) 插件。云原生 Contrail 可与 Multus 互操作,为 Pod 中多个 CNIS 提供的多个接口提供支持。

本文档提供了在 Kubernetes 编排环境中使用版本 22.1 或更高版本在环境中为 Pod 启用多个接口的步骤。其中包含有关何时以及如何启用多个网络接口的信息。

云原生 Contrail 优势中的多个网络接口

在许多云网络环境中,对多个网络接口的支持都是有用或必需的。一些常见示例:

  • Pods 通常需要一个数据接口来承载数据流量,并且需要单独的接口来管理流量。
  • 虚拟化网络功能 (VNF) 通常需要三个接口(一个左接口、一个右接口和管理接口)来提供网络功能。VNF 通常无法通过单个网络接口提供功能。

  • 云网络拓扑通常需要支持两个或更多网络接口,以便将管理网络与租户网络隔离。

  • 在自定义或大规模云网络环境中,您通常必须使用支持多个网络接口的云网络产品来满足各种特定于环境的要求。

使用默认 CNI 的 Kubernetes 群集中的一个 Pod 具有用于发送和接收网络流量的单个网络接口。云原生 Contrail 网络为多个网络接口提供本机支持。云原生 Contrail 还支持 Multus 集成,允许使用云原生 Contrail 进行联网的环境支持使用 Multus 的多个网络接口。

云原生 Contrail 中的多个网络接口概述

您可以使用 Multus 在云原生 Contrail 中启用多个网络接口,而无需使用 Multus。Multus 是用于 Kubernetes 的容器网络接口 (CNI) 插件,支持 Pod 上的多个网络接口以及 Pod 之间的多宿主。Multus 可同时支持来自多个委派 CNIS 的接口,从而能够使用云原生 Contrail 等不同供应商提供的 CNIS 创建互连的云网络环境。Multus 通常被称为“元插件”,因为这种多供应商支持。

出于以下原因,您应使用对多个接口的本机云原生 Contrail 网络支持启用多个网络接口;

  • 您不希望在环境中启用和维护 Multus 的开销。

  • 您将云原生 Contrail 网络用作您唯一的容器网络接口 (CNI)。

  • 您不希望创建和维护网络附件定义 (NAD) 对象以支持环境中的多个网络接口。

    您必须创建 NAD 对象才能使用 Multus 启用多个网络接口。如果您不使用 Multus,则无需配置 NAD 对象即可启用多个网络接口。

    每个 NAD 对象,特别是创建一个虚拟网络和一个必须监控和维护的子网。

出于以下原因,您应使用 Multus 启用多个网络接口:

  • 您正在使用已经在使用 Multus 的环境中的云原生 Contrail。在使用 Openshift 编排的环境中,Multus 尤为常见。

  • 您需要 Multus 提供的“元插件”功能。在 Pod 使用多个接口且多个接口由云原生 Contrail 和其他 CNIS 管理的环境中,您正在使用云原生 Contrail。

  • 您需要环境中的其他一些 Multus 功能。

云原生 Contrail 与 Multus 集成概述

Contrail vRouter 具有原生 Multus 感知能力。无需云原生 Contrail 网络特定配置即可实现与云原生 Contrail 的 Multus 互操作性。

此列表汇总了使用 Multus 的云原生 Contrail 支持互操作性选项。

  • 云原生 Contrail 与 Multus CNI 版本 0.3.1 兼容。

  • 云原生 Contrail 作为主要 CNI 与 Multus 配合使用。它不受 Multus 作为辅助 CNI 的支持。

  • 云原生 Contrail 作为 Multus 的代表 CNI 受支持。云原生 Contrail 在与 Multus 进行群集互操作时,应作为默认 CNI 或代表 CNI 之一。

  • 在 vRouter 内核模式或 DPDK 模式下,云原生 Contrail 支持与 Multus 的互操作性。

Multus 是第三方插件。您可在 Kubernetes 内启用和配置 Multus,但完全不在云原生 Contrail 之外。要启用 Multus,您可以应用 Kubernetes 网络管道工作组提供的 multus-daemonset.yml 文件。Kubernetes 网络管道工作组是开发 Multus 的开源组。

有关 Multus 的详细信息,请参阅 Kubernetes 网络管道工作组的 Multus CNI 使用指南

创建网络附件定义对象

您无需创建 网络连接定义 (NAD) 对象,即可使用云原生 Contrail 网络中支持的本机多接口启用多个接口。如果您未使用 Multus 在您的环境中启用多个网络接口,则可以跳过此部分。如果您未使用 NAD 对象,但需要创建虚拟网络,请 参阅 https://www.juniper.net/documentation/us/en/software/cn-cloud-native22/cn-cloud-native-feature-guide/cn-cloud-native-network-feature/topics/concept/Contrail_Network_Policy_Implementation_in_CN2.html

本节说明了如何使用 YAML 文件创建 NAD 对象。您可使用以下内容将云原生 Contrail 配置到 NAD 对象中: juniper.net/networks 注释。我们提供了一个 YAML 文件的代表性示例,用于创建 NAD 对象,并在本节的后面创建字段说明表。

创建网络连接定义对象时,请务必包含 juniper.net/networks 注释。如果在不使用 juniper.net/networks 注释的情况下定义 YAML 文件以创建网络连接定义对象,则网络连接定义对象将被视为第三方对象。网络中不会创建与 Contrail 相关的对象,包括虚拟网络对象和子网对象。

您可使用网络附件定义 (NAD) 控制器在 Kubernetes 环境中创建网络连接定义对象。NAD 控制器在 kube-manager 中运行,并在成功创建网络连接定义时创建虚拟网络对象或更新现有虚拟网络对象。NAD 控制器默认启用,但您可以将其禁用;请参阅 禁用网络附件定义控制器

以下是用于创建 网络连接定义 对象的 YAML 文件的代表示例:

NetworkAttachmentDefinition Object Fields 表提供了网络连接定义对象文件中变量的使用详细信息。

表 1:网络连接定义对象字段
可变 使用情况
ipamV4Subnet

(可选)指定虚拟网络的 IPv4 子网地址。

ipamV6Subnet (可选)指定虚拟网络的 IPv6 子网地址。
路由Target 列表 (可选)提供同时用作导入和导出路由的路由目标列表。
导入路由Target 列表 (可选)提供用作导入路由的路由目标列表。
导出路由Target 列表 (可选)提供用作导出路由的路由目标列表。
交换矩阵SNAT

(可选)指定是否希望使用交换矩阵源 NAT 提供的端口映射功能切换到底层网络的连接。

将此参数设置为 。默认情况下,设置为 错误

您应注意以下与 网络连接定义 对象相关的网络活动:

  • 网络附件定义控制器在 kube-manager 中工作,并处理所有网络附件定义对象的处理。
  • 您可以在 juniper.net/network-status 中监控网络附件定义控制器更新。
  • 网络附件定义对象不允许进行 IPAM 更新。

网络附件定义对象创建虚拟网络。 网络附件定义对象对虚拟网络表的影响 提供了与网络附件定义对象相关的事件如何影响虚拟网络的概述。

表 2:网络附件定义对象对虚拟网络的影响
如果定义 ,则

单个群集拓扑中网络附件定义对象的名称空间,

虚拟网络与网络附件定义在同一名称空间中创建。

此虚拟网络的名称与网络附件定义对象相同。NAD 对象使用元数据中的名称命名:元数据中的字段:层次结构。

多群集拓扑中网络附件定义对象的名称空间,

VirtualNetwork 名称区是群集名称 ns.

如果未为多群集拓扑中的网络附件定义对象定义名称空间,

VirtualNetwork 名称空间是群集名称默认设置

如果删除网络附件定义资源,

相关联 的 VirtualNetwork 对象也已删除。

如果删除由网络附件定义资源创建的虚拟网络,

网络附件定义控制器调和问题并重新创建虚拟网络。

配置 Pod 以使用多个接口

您可在 Pod 对象中配置多个接口。如果您使用 Multus,还必须按照 “创建网络附件定义对象”中概述的 NAD 对象来配置。

在以下示例中,您可以为 juniper-pod-1 Pod 中的网络流量创建两个接口; 点击1点击2

禁用网络附件定义控制器

网络附件定义控制器是 kube-manager 对象的一部分。您可使用 enableNad 启用和禁用此控制器:用于定义 kubemanager 对象的 YAML 文件中的变量。默认情况下,网络附件定义控制器已启用。

您可能希望禁用网络附件定义控制器,以防止网络 连接定义 对象的应用。

在以下示例中,将禁用网络附件定义控制器: