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 在 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 接口类型和模式。
接口模式 | 特征 | 注释 |
---|---|---|
访问 |
允许未标记的数据包遍历到 Pod 的链接 | 必须显式绑定到桥接域 |
虚拟交换机将访问模式用于非 DPDK 接口和应用程序,如 SSH 和 syslog | ||
树干 |
允许特定配置的 VLAN 范围内的数据包 | 隐式属于一个或多个桥接域 |
CNI 不分配 IP 地址 | 中继模式下的虚拟交换机可承载 DU 用户面流量 | |
如果需要 IP 地址,Pod 必须有自己的分配方法,例如 DHCP | 在 5G 环境中动态添加和删除网络切片,无需重启 Pod |