此插件支持在容器和 Kubernetes 等编排器中配置和使用 SR-IOV VF 网络。
具备 SR-IOV 功能的网络接口卡(NICs)通过物理功能(PFs)和虚拟功能(VFs)进行管理。PF 由主机使用,通常代表单个 NIC 端口。VF 配置通过 PF 应用。借助 SR-IOV CNI,每个 VF 可被视为独立的网络接口,分配给容器,并配置自己的 MAC、VLAN、IP 等。
SR-IOV CNI 插件与 https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin 配合使用,以在 Kubernetes 中分配 VF。元插件(如 https://github.com/intel/multus-cni%EF%BC%89%E8%8E%B7%E5%8F%96%E5%B7%B2%E5%88%86%E9%85%8D VF 的 deviceID(PCI 地址),并负责使用该 deviceID 调用 SR-IOV CNI 插件。
此插件使用 Go modules 进行依赖管理,需要 Go 1.17+ 版本进行构建。
构建插件二进制文件:
make
构建成功后,插件二进制文件将位于 build/sriov。
有关在 Kubernetes 中编排 SR-IOV 虚拟功能的完整指南,请参见 https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin#quick-start%E3%80%82
创建 VF 不在 SR-IOV CNI 插件的范围内。https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin/blob/master/docs/vf-setup.md
要在 Kubernetes 1.16+ 集群上单独部署 SR-IOV CNI:
kubectl apply -f images/sriov-cni-daemonset.yaml
[!NOTE] 上述部署不足以管理和配置 SR-IOV 虚拟功能。https://github.com/k8snetworkplumbingwg/sriov-network-device-plugin#sr-iov-network-device-plugin
SR-IOV CNI 网络通常使用 Multus 和 SR-IOV 设备插件通过网络附加定义(Network Attachment Definitions)进行配置。有关使用此模式配置 Kubernetes 网络的更多信息,请参见 https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/configuration.md%E3%80%82
SR-IOV CNI 的网络附加定义格式如下:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: sriov-net1
annotations:
k8s.v1.cni.cncf.io/resourceName: intel.com/intel_sriov_netdevice
spec:
config: '{
"type": "sriov",
"cniVersion": "0.3.1",
"name": "sriov-network",
"ipam": {
"type": "host-local",
"subnet": "10.56.217.0/24",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
}'
.spec.config 字段包含 SR-IOV CNI 使用的配置信息。
以下参数是通用参数,并非特定于 SR-IOV CNI 配置,但(除 ipam 外)需要包含在配置中。
cniVersion:使用的 CNI 规范版本。type:使用的 CNI 插件。"sriov" 对应 SR-IOV CNI。name:创建的网络名称。ipam(可选):IP 地址管理插件的配置。为内核接口指定 IP 时必需。以下示例显示了在容器中设置基本 SR-IOV 网络所需的配置。下面的每个 JSON 配置对象都可以放在网络附加定义的 .spec.config 字段中,以与 Multus 集成。
这是使用 SR-IOV 虚拟功能的内核驱动接口的最小配置。它使用 host-local IPAM 插件在提供的子网范围内应用 IP 地址。
{
"type": "sriov",
"cniVersion": "0.3.1",
"name": "sriov-network",
"ipam": {
"type": "host-local",
"subnet": "10.56.217.0/24",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
}
此配置设置了许多可能对 SR-IOV 网络至关重要的额外参数,包括 VLAN 标签、禁用欺骗检查和启用信任模式。这些参数通常在更高级的基于 SR-IOV VF 的网络中设置。
{
"cniVersion": "0.3.1",
"name": "sriov-advanced",
"type": "sriov",
"vlan": 1000,
"spoofchk": "off",
"trust": "on",
"ipam": {
"type": "host-local",
"subnet": "10.56.217.0/24",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
}
以下配置将使用用户空间驱动(uio/vfio)配置 VF,供容器使用。如果此插件与绑定到 dpdk 驱动的 VF 一起使用,IPAM 配置仍将被遵守,但只会使用指定的 IPAM 插件分配 IP 地址,不会将 IP 地址应用到容器接口。其他配置参数应适用,但实现可能因驱动而异。
{
"cniVersion": "0.3.1",
"name": "sriov-dpdk",
"type": "sriov",
"vlan": 1000
}
[!NOTE] https://github.com/containernetworking/plugins/tree/master/plugins/ipam/dhcp IPAM 插件不能用于绑定到 dpdk 驱动(uio/vfio)的 VF。
[!NOTE] 当网络附加定义中未指定 VLAN 或指定值为 0 时,连接到此网络的 VF 将没有 VLAN 标签。
SR-IOV CNI 允许设置其他 SR-IOV 选项,如链路状态和服务质量参数。要了解如何设置这些参数,请参阅 SR-IOV CNI 配置参考指南
要报告错误或请求功能,请使用可用模板在本仓库中打开 issue。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务