Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

云原生路由器用例和配置概述

阅读本章,查看在容器网络接口 (CNI) 模式下部署时各种瞻博网络云原生路由器用例的配置示例。

瞻博网络云原生路由器可以部署为虚拟交换机或中转路由器,也可以是纯容器网络功能 (CNF) 或容器网络接口 (CNI)。在 CNF 模式下,节点上没有运行应用 Pod,路由器仅通过系统上的各种接口执行数据包交换或转发。在 CNI 模式下,使用基于软件的网络接口(例如 veth-pair 或基于 DPDK vhost-user 的接口)的应用 Pod 连接到云原生路由器。本章提供将不同工作负载接口类型附加到云原生路由器 CNI 实例的配置示例。

配置示例

云原生路由器 CNI 与 Multus 一起部署为辅助 CNI,以便为应用 Pod 创建不同类型的辅助接口。Multus 使用网络附件定义 (NAD) 文件为应用程序 Pod 配置辅助接口。NAD 指定如何创建辅助接口、IP 地址分配、网络实例等。一个 Pod 可以有一个或多个 NAD,通常每个 Pod 接口有一个。这 config: NAD 文件中的字段定义了云原生路由器 CNI 配置。以下是NAD的通用格式: 为云原生路由器插件类型配置 NAD 时,支持以下密钥:
表1:NAD中支持的键
密钥 说明
实例名称 路由实例名称
实例类型 其中之一:

虚拟路由器 - 用于非 VPN 相关应用

vrf — 第 3 层 VPN 实施

virtual-switch — 第 2 层实施

接口类型 “veth”或“virtio”
vlanId 有效的 VLAN ID“1-4095”
桥接VlanId 有效的 VLAN ID“1-4095”
vlanIdList 分隔 vlan-id 的命令列表,例如:“1、5、7、10-20”
parentInterface 有效的接口名称,因为它应该显示在容器中。子接口/子接口的 parentInterface 前缀后跟 “.”,如果指定了 parentInterface,则必须显式指定子接口。
vrfTarget vrf 路由实例的路由目标
桥接域 在虚拟交换机实例中附加 Pod 接口的桥接域。
类型 (IPAM) 静态 — 为所有 Pod 分配相同的 IP,要为每个 Pod 分配唯一 IP,请为每个 Pod 定义每个接口的唯一 NAD

host-local — 同一主机上每个 Pod 接口的唯一 IP 地址。IP 地址在两个不同的节点上不是唯一的

whereabouts - 跨所有节点为每个 Pod 提供唯一的 IP 地址

https://github.com/k8snetworkplumbingwg/whereabouts

考虑第 2 层内核访问模式接口的示例 NAD: Pod 使用 Pod 连接到路由器实例 k8s.v1.cni.cncf.io/networks 注解。例如: 卷装载主机路径将 vhost-user 端口的 UNIX 域套接字公开给 DPDK 应用程序。DPDK 接口详细信息存储在 /dpdk/dpdk-interfaces.json 在应用程序容器内供 DPDK 应用程序使用。它也会作为 Pod 注释导出到 Pod 中。

创建用于云原生路由器的 Pod 时,名为 kubelet 的 Kubernetes 组件会调用 Multus CNI 来设置 Pod 网络和接口。Multus 读取 pod.yaml 文件的注释部分以引用相应的 NAD。如果 NAD 指向 jcnr CNI 插件,Multus 将调用 JCNR-CNI 来设置 pod 接口。JCNR-CNI 按照 NAD 中指定的方式创建接口。然后,JCNR-CNI 生成配置并将其推送到 cRPD 中。

故障 排除

由于各种原因,Pod main 无法出现:

  • 未找到图像

  • CNI 添加接口失败

  • CNI 无法将配置推送到 cRPD 中

  • CNI 无法调用 vRouter REST API

  • NAD 无效或未定义

以下命令可用于对 Pod 问题进行故障排除: