一句话核心定义

SriovNetwork 是 SR‑IOV‑Network‑Operator 的网络层 CR 资源,负责把已经开好的 VF 封装成一条可供 Pod 挂载的 Multus 辅助网卡,管控 VLAN、IP 地址、子网、MTU,自动生成 NetworkAttachmentDefinition,让 Pod 能够绑定 VF 网卡Red Hat。

最简单分工记忆

  1. SriovNetworkNodePolicy硬件层,操作 PF 网卡、创建 VF、绑定驱动、注册 k8s 硬件资源
  2. SriovNetworkCNI‑网络层,给 VF 配置二层网络、VLAN、IP,供给业务 Pod 使用

一、完整工作链路

  1. SriovNetworkNodePolicy 在节点网卡 ens5f0np0 生成 4 个 VF,注册资源名称(例如 sriov_left)
  2. 你创建 SriovNetwork,绑定该 resourceName
  3. Operator 自动生成 Multus‑CNI 需要的 NAD (NetworkAttachmentDefinition)
  4. Pod 通过注解 k8s.v1.cni.cncf.io/networks 引用这条 SR‑IOV 网络,调度后分配专属 VF

二、标准 Yaml 模板,结合你现在环境

yaml

apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
  name: sriov‑vlan1050
  namespace: openshift‑sriov‑network‑operator
spec:
  # 和 NodePolicy 的 resourceName 一一对应,绑定硬件VF资源池
  resourceName: sriov_left
  # 网络定义存放的命名空间,一般default或者业务ns
  networkNamespace: default
  # VF打上的VLAN标签,对应你ip‑link看到的 vlan 1050/1002/1003
  vlan: 1050
  mtu: 1800
  # ipam:IP分配,static/whereabouts/host‑local
  ipam: |-
    {
      "type":"whereabouts",
      "range":"192.168.10.0/24"
    }
  spoofChk: false
  trust: true

三、关键字段详解

  1. resourceName 绑定 SriovNetworkNodePolicy 暴露出的硬件资源池,最关键的关联字段
  2. networkNamespace 生成出来的 NAD 存放于哪个命名空间,Pod 必须在该 ns 才可以引用网络。
  3. vlan 下发给 VF 的 VLAN 标签,就是你 ip link 输出里面 vf 0, vlan 1050 的来源; Multus CNI 会在网卡直通时自动配置硬件 VLAN。
  4. spoofChk、trust 对应你 VF 参数:
  • spoof‑checking:是否禁止 VF 篡改 MAC
  • trust:开启高级网卡权限(DPDK 业务一般开启 trust‑on)
  1. ipam IP 地址管理,静态 IP、动态二层分配、whereabouts 跨节点子网管理
  2. mtu 设置 VF 网卡 MTU,你当前网卡 mtu=1800 在这里配置

四、和你刚才输出的现象对应

plaintext

vf 0     vlan 1050, spoof checking off, trust on
vf 1     vlan 1002, spoof checking on, trust off

每一组不一样的 VLAN、trust、spoof 配置,一般由多条独立的 SriovNetwork分别管控。

五、三大 SR‑IOV CR 完整对比

表格

CR 资源 层级 主要职责
SriovNetworkNodePolicy 节点硬件层 PF 网卡、创建 VF、驱动 (vfio‑pci/netdevice)、硬件资源注册、RDMA 开关
SriovNetwork 容器网络层 VLAN、IPAM、MTU、VF 安全开关、生成 Multus NAD
SriovNetworkNodeState 节点状态层 网卡实时状态、VF 数量、策略匹配结果、调试查看

六、Pod 如何使用这条 SR‑IOV 网络

yaml

annotations:
  k8s.v1.cni.cncf.io/networks: sriov‑vlan1050
resources:
  limits:
    ens5f0np0‑vf‑res: 1

七、日常排查命令

bash

# 查看所有sr‑iov网络
kubectl get sriovnetworks -n openshift-sriov-network-operator
# 查看自动生成的multus NAD
kubectl get net‑attach‑def

通俗总结

  • NodePolicy:把物理网卡劈开,造出一堆 VF 硬件设备
  • SriovNetwork:给 VF 装上网络配置(VLAN、IP),做成可以给 Pod 挂载的网线
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐