【k8s】SriovNetwork详解
·
一句话核心定义
SriovNetwork 是 SR‑IOV‑Network‑Operator 的网络层 CR 资源,负责把已经开好的 VF 封装成一条可供 Pod 挂载的 Multus 辅助网卡,管控 VLAN、IP 地址、子网、MTU,自动生成 NetworkAttachmentDefinition,让 Pod 能够绑定 VF 网卡Red Hat。
最简单分工记忆
- SriovNetworkNodePolicy:硬件层,操作 PF 网卡、创建 VF、绑定驱动、注册 k8s 硬件资源
- SriovNetwork:CNI‑网络层,给 VF 配置二层网络、VLAN、IP,供给业务 Pod 使用
一、完整工作链路
- SriovNetworkNodePolicy 在节点网卡 ens5f0np0 生成 4 个 VF,注册资源名称(例如 sriov_left)
- 你创建 SriovNetwork,绑定该
resourceName - Operator 自动生成 Multus‑CNI 需要的 NAD (NetworkAttachmentDefinition)
- 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
三、关键字段详解
- resourceName 绑定 SriovNetworkNodePolicy 暴露出的硬件资源池,最关键的关联字段。
- networkNamespace 生成出来的 NAD 存放于哪个命名空间,Pod 必须在该 ns 才可以引用网络。
- vlan 下发给 VF 的 VLAN 标签,就是你
ip link输出里面vf 0, vlan 1050的来源; Multus CNI 会在网卡直通时自动配置硬件 VLAN。 - spoofChk、trust 对应你 VF 参数:
- spoof‑checking:是否禁止 VF 篡改 MAC
- trust:开启高级网卡权限(DPDK 业务一般开启 trust‑on)
- ipam IP 地址管理,静态 IP、动态二层分配、whereabouts 跨节点子网管理
- 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 挂载的网线
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)