Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

子接口支持 Multus

从版本 23.3 开始,云原生 Contrail® 网络™ (CN2) 使用 Multus“元”插件支持多个网络子接口。“元”指的是 Multus 多供应商支持。

先决条件

要使 Multus 处理子接口,父接口(物理或虚拟)必须可用。

VLAN 子接口概述

以下内容适用于 VLAN 子接口:

  • 始终定义子接口并与父接口关联。

  • 此子接口与不同于父接口的虚拟网络相关联。

  • 子接口应具有有效的 VLAN 标记 (1–4095)。

  • 子接口与常规接口一样,由 CN2 根据提供的网络注释为 Pod 创建。

有关 Multus 如何在云原生 Contrail 环境中工作的更多信息,请参阅 启用具有多个网络接口的 Pod在虚拟接口上启用 VLAN 子接口支持

在 Pod 上配置子接口

要在 Pod 上配置子接口,请使用网络定义标记 net.juniper.contrail.interfacegroupnet.juniper.contrail.vlan YAML 的注释 cni-args 部分。

  • net.juniper.contrail.interfacegroup 标记执行以下操作:

    • 接口将两个或多个接口组合在一起。

    • 父接口是仅与此标记关联的网络选择元素。

    • 子接口是与此标记和 VLAN 标记相关联的网络选择元素。

  • 标记指定 net.juniper.contrail.vlan 子接口上的 VLANID。

CN2 CNI 与 Multus

本节包括使用 Multus 配置 CN2 CNI 的示例 YAML。

子接口的网络附件定义示例

VLAN 子接口属于其父接口。您必须指定子接口连接到的命名空间。请参阅以下示例。

示例 Pod YAML

以下示例显示了 的 cni-args指定 Pod 注释。此示例配置将在容器中创建以下三个虚拟机接口 (VMI) 和三个接口 IP 地址 (IIP):

  • VMI、IIP for eth0 在默认 Pod 网络上

  • VMI、IIP for eth1 on multus-vn-1(父接口)

  • VMI, IIP for eth1.100 on multus-vn-2 (子接口)

Pod 创建流程概述

Kubemanager 监听 Pod 创建、删除和更新事件。检测新容器创建时:

  • Kubemanager 解析 Pod 信息并创建相应的虚拟机(pod)、VMI(Pod 接口)和 IIP(Pod 接口 IP)。

  • 此信息使用 Contrail 控制器和 vRouter 代理之间的 XMPP 通信通道传递到 vRouter 代理。

  • 在此通信的同时,kubelet 会获取一个设置 Pod 事件,并调用 CN2 CNI 来配置 Pod 网络。

API 调用和输出

以下步骤显示了创建和配置子接口时的 API 调用和输出。

  1. CN2 CNI 调用获取 vm-cfg (GET POD_CONFIG()) (示例获取网址 [<span class=“underline”>http://127.0.0.1:9091/vm-cfg/\_\_multus-vlan\_\_multus-pod-4</span>](http://127.0.0.1:9091/vm-cfg/__default__testpmd-pod)) API,以获取使用 Contrail 控制器配置的所有 VMI(虚拟机接口)的列表。

    示例输出:

  2. CN2 CNI 处理此信息并调用端口添加消息 (POST VMI)(示例 post api [<span class=“underline”>http://127.0.0.1:9091/vm</span>](http://127.0.0.1:9091/vm) )

    示例输出:

  3. 然后 CN2 CNI 确实将结果 (GET VM IP) 发送到 vrouter-agent (示例 API [<span class=“underline”>http://127.0.0.1:9091/vm/68627577-c1c5-4dac-acf1-3f4547b795e0/83fbe4ee-79ce-4d1a-972e-5420138eae7f</span>](http://127.0.0.1:9091/vm/68627577-c1c5-4dac-acf1-3f4547b795e0/83fbe4ee-79ce-4d1a-972e-5420138eae7f) )

    示例输出:

  4. 现在,CN2 CNI 获取要在 Pod 中配置的 IP 地址,根据需要执行配置,并将结果返回给 kubelet。

    • 如果配置请求是添加子接口,请检查父接口是否存在。如果没有,请创建父接口,然后创建子接口。

    • 如果配置请求要删除父接口,请删除子接口。

验证子接口

要确认子接口已创建,请执行以下操作:

  • 通过子接口在两个 Pod 之间执行 ping 操作。

  • 在 Pod 的单个父接口上创建多个子接口。

  • 在一个 Pod 中创建多个子接口和多个父接口。

您还可以运行命令以 kubectl exec 访问容器内部。然后运行 ip addr 命令以显示当前网络。

示例输出: