Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

JCNR-CNI

阅读本章,了解有关 JCNR-CNI(JCNR 的主要容器网络接口)的详细信息。

JCNR-CNI 的优势

JCNR-CNI 管理 Pod 使用的辅助接口。它根据 YAML 格式的网络附件定义 (NAD) 文件中的配置创建所需的接口,在将某些接口传递到其最终位置或连接点之前对其进行配置,并为进一步的接口配置选项提供 API。

JCNR-CNI 实例化许多不同类型的 Pod 接口

  • 为利用 DPDK 数据平面的 Pod 创建基于 virtio 的高性能接口

  • 创建允许 Pod 使用 Linux 内核网络堆栈进行通信的虚拟对接口

  • 在接入或中继模式下创建 Pod 接口

  • 将 Pod 接口附加到桥接域

  • 支持 IPAM 插件进行动态 IP 地址分配

  • 为 virtio 接口分配唯一的套接字接口,

  • 将 L2 访问控制列表 (ACL) 应用于 JCNR-vRouter

  • 将 Pod 接口附加到桥接域

  • 管理 Pod 中的网络任务,例如分配 IP 地址以及在 Pod 和 Kubernetes 集群中的主机之间设置接口

  • 应用转换为防火墙过滤器规则的 K8s 网络策略。策略将发送到 JCNR-vRouter,以便在数据平面中应用

  • 将容器接口连接到网络:容器到容器和容器到网络

  • 与 JCNR-vRouter 集成以卸载数据包处理

内置云原生路由器的 JCNR-CNI

JCNR-CNI 是一个专门的容器网络接口,可以建立各种不同的网络连接。它与Multus CNI合作运作。下图显示了 JCNR-CNI 如何与瞻博网络云原生路由器中的其他组件进行交互。

JCNR-CNI Inside Cloud-Native Router

JCNR-CNI 在 Pod 创建中的作用

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

网络附件定义

网络附件定义 (NAD) 文件是 CNI 在创建 Pod 的接口创建阶段使用的 Kubernetes (K8s) 文件。NAD 指定接口 MAC 地址、分配 IP 地址等。每个 Pod 可以使用一个或多个 NAD,通常每个 Pod 接口一个。在 Pod YAML 文件中,用于创建 Pod 的 NAD 列在网络注释部分下。除了在 Pod 上创建接口之外,NAD 还可以创建虚拟交换机。NAD 将 Pod 接口连接到 L2 交换实例。下表描述了支持的 L2 接口类型和模式。

表 1:NAD - L2 接口模式
接口模式 特征 注释

访问

允许未标记的数据包遍历到 Pod 的链接 必须显式绑定到桥接域
虚拟交换机将访问模式用于非 DPDK 接口和应用程序,如 SSH 和 syslog

树干

允许特定配置的 VLAN 范围内的数据包 隐式属于一个或多个桥接域
CNI 不分配 IP 地址 中继模式下的虚拟交换机可承载 DU 用户面流量
如果需要 IP 地址,Pod 必须有自己的分配方法,例如 DHCP 在 5G 环境中动态添加和删除网络切片,无需重启 Pod