Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
在此页面上
 

JCNR 用例和配置概述

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

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

配置示例

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

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

vrf — 第 3 层 VPN 实施

虚拟交换机 — 第 2 层实施

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

主机本地 - 同一主机上每个容器接口的唯一 IP 地址。IP 地址在两个不同的节点上不是唯一的

位置 — 跨所有节点的每个 Pod 的唯一 IP 地址

https://github.com/k8snetworkplumbingwg/whereabouts

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

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

故障 排除

由于各种原因,Pod 主要无法启动:

  • 未找到图像

  • CNI 无法添加接口

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

  • CNI 无法调用 vRouter REST API

  • NAD 无效或未定义

以下命令可用于排查 Pod 问题: