第 3 章 配置 SR-IOV 以太网网络附加


您可以为集群中的单根 I/O 虚拟化(SR-IOV)设备配置以太网网络附加。

在执行以下文档中的任何任务前,请确保 安装了 SR-IOV Network Operator

3.1. 以太网设备配置对象

您可以通过定义 SriovNetwork 对象来配置以太网网络设备。

以下 YAML 描述了 SriovNetwork 对象:

apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
  name: <name> 
1

  namespace: openshift-sriov-network-operator 
2

spec:
  resourceName: <sriov_resource_name> 
3

  networkNamespace: <target_namespace> 
4

  vlan: <vlan> 
5

  spoofChk: "<spoof_check>" 
6

  ipam: |- 
7

    {}
  linkState: <link_state> 
8

  maxTxRate: <max_tx_rate> 
9

  minTxRate: <min_tx_rate> 
10

  vlanQoS: <vlan_qos> 
11

  trust: "<trust_vf>" 
12

  capabilities: <capabilities> 
13
Copy to Clipboard Toggle word wrap
1
对象的名称。SR-IOV Network Operator 创建一个名称相同的 NetworkAttachmentDefinition 对象。
2
安装 SR-IOV Network Operator 的命名空间。
3
用于为这个额外网络定义 SR-IOV 硬件的 SriovNetworkNodePolicy 对象中的 spec.resourceName 参数的值。
4
SriovNetwork 对象的目标命名空间。只有目标命名空间中的 pod 可以附加到额外网络。
5
可选:额外网络的虚拟 LAN(VLAN)ID。它需要是一个从 04095 范围内的一个整数值。默认值为 0
6
可选:VF 的 spoof 检查模式。允许的值是字符串 "on""off"
重要

指定的值必须由引号包括,否则 SR-IOV Network Operator 将拒绝对象。

7
为 IPAM CNI 插件指定一个配置对象做为一个 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
8
可选:虚拟功能(VF)的链接状态。允许的值是 enabledisableauto
9
可选:VF 的最大传输率(以 Mbps 为单位)。
10
可选:VF 的最低传输率(以 Mbps 为单位)。这个值必须小于或等于最大传输率。
注意

Intel NIC 不支持 minTxRate 参数。如需更多信息,请参阅 BZ#1772847

11
可选:VF 的 IEEE 802.1p 优先级级别。默认值为 0
12
可选:VF 的信任模式。允许的值是字符串 "on""off"
重要

您必须在引号中包含指定的值,或者 SR-IOV Network Operator 拒绝对象。

13
可选:为这个额外网络配置功能。您可以指定 '{ "ips": true }' 来启用 IP 地址支持,或指定 '{ "mac": true }' 来启用 MAC 地址支持。

3.1.1. 为动态分配双栈 IP 地址创建配置

双栈 IP 地址分配可使用 ipRanges 参数进行配置:

  • IPv4 地址
  • IPv6 地址
  • 多个 IP 地址分配

流程

  1. type 设置为 whereabouts
  2. 使用 ipRanges 来分配 IP 地址,如下例所示:

    cniVersion: operator.openshift.io/v1
    kind: Network
    =metadata:
      name: cluster
    spec:
      additionalNetworks:
      - name: whereabouts-shim
        namespace: default
        type: Raw
        rawCNIConfig: |-
          {
           "name": "whereabouts-dual-stack",
           "cniVersion": "0.3.1,
           "type": "bridge",
           "ipam": {
             "type": "whereabouts",
             "ipRanges": [
                      {"range": "192.168.10.0/24"},
                      {"range": "2001:db8::/64"}
                  ]
           }
          }
    Copy to Clipboard Toggle word wrap
  3. 将网络附加到 pod。如需更多信息,请参阅"将 pod 添加到二级网络"。
  4. 验证是否分配了所有 IP 地址。
  5. 运行以下命令,以确保 IP 地址被分配为元数据。

    $ oc exec -it mypod -- ip a
    Copy to Clipboard Toggle word wrap

3.1.2. 配置网络附加的 IP 地址分配

对于二级网络,可以使用 IP 地址管理(IPAM) CNI 插件来分配 IP 地址,该插件支持各种分配方法,包括动态主机配置协议(DHCP)和静态分配。

负责动态分配 IP 地址的 DHCP IPAM CNI 插件与两个不同的组件一起运行:

  • CNI 插件 :负责与 Kubernetes 网络堆栈集成,以请求和释放 IP 地址。
  • DHCP IPAM CNI 守护进程 :用于 DHCP 事件的监听程序,该事件与环境中的现有 DHCP 服务器协调,以处理 IP 地址分配请求。这个守护进程并不是 DHCP 服务器本身。

对于在 IPAM 配置中需要 type: dhcp 的网络,请确保以下内容:

  • DHCP 服务器可用并在环境中运行。DHCP 服务器是集群外部的,应该成为客户的现有网络基础架构的一部分。
  • DHCP 服务器被正确配置为为节点提供 IP 地址。

如果环境中 DHCP 服务器不可用,建议使用 Whereabouts IPAM CNI 插件。Whereabouts CNI 提供类似的 IP 地址管理功能,而无需外部 DHCP 服务器。

注意

当没有外部 DHCP 服务器或首选静态 IP 地址管理时,请使用 Whereabouts CNI 插件。Whereabouts 插件包含一个协调器守护进程来管理过时的 IP 地址分配。

在整个容器生命周期中,必须定期更新 DHCP 租期,因此需要单独的守护进程 DHCP IPAM CNI 守护进程。要部署 DHCP IPAM CNI 守护进程,请修改 Cluster Network Operator (CNO)配置,以触发此守护进程的部署,作为二级网络设置的一部分。

3.1.2.1. 静态 IP 地址分配配置

下表描述了静态 IP 地址分配的配置:

Expand
表 3.1. ipam 静态配置对象
字段类型描述

type

string

IPAM 地址类型。值必须是 static

addresses

数组

指定分配给虚拟接口的 IP 地址的对象数组。支持 IPv4 和 IPv6 IP 地址。

Routes

数组

指定要在 pod 中配置的路由的一组对象。

dns

数组

可选:指定 DNS 配置的对象数组。

address 数组需要带有以下字段的对象:

Expand
表 3.2. ipam.addresses[] array
字段类型描述

address

string

您指定的 IP 地址和网络前缀。例如:如果您指定 10.10.21.10/24,那么会为二级网络分配 IP 地址 10.10.21.10,网掩码为 255.255.255.0

gateway

string

出口网络流量要路由到的默认网关。

Expand
表 3.3. ipam.routes[] array
字段类型描述

dst

string

CIDR 格式的 IP 地址范围,如 192.168.17.0/24 或默认路由 0.0.0.0/0

gw

string

网络流量路由的网关。

Expand
表 3.4. ipam.dns object
字段类型描述

nameservers

数组

用于发送 DNS 查询的一个或多个 IP 地址的数组。

domain

数组

要附加到主机名的默认域。例如,如果将域设置为 example.com,对 example-host 的 DNS 查找查询将被改写为 example-host.example.com

search

数组

在 DNS 查找查询过程中,附加到非限定主机名(如 example-host)的域名的数组。

静态 IP 地址分配配置示例

{
  "ipam": {
    "type": "static",
      "addresses": [
        {
          "address": "191.168.1.7/24"
        }
      ]
  }
}
Copy to Clipboard Toggle word wrap

3.1.2.2. 动态 IP 地址(DHCP)分配配置

pod 在创建时获取其原始 DHCP 租期。该租期必须由集群中运行的一个小型的 DHCP 服务器部署定期续订。

重要

对于以太网网络附加,SR-IOV Network Operator 不会创建 DHCP 服务器部署。Cluster Network Operator 负责创建最小 DHCP 服务器部署。

要触发 DHCP 服务器的部署,您必须编辑 Cluster Network Operator 配置来创建 shim 网络附加,如下例所示:

shim 网络附加定义示例

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: dhcp-shim
    namespace: default
    type: Raw
    rawCNIConfig: |-
      {
        "name": "dhcp-shim",
        "cniVersion": "0.3.1",
        "type": "bridge",
        "ipam": {
          "type": "dhcp"
        }
      }
  # ...
Copy to Clipboard Toggle word wrap

下表描述了使用 DHCP 进行动态 IP 地址地址分配的配置参数。

Expand
表 3.5. ipam DHCP 配置对象
字段类型描述

type

string

IPAM 地址类型。需要值 dhcp

以下 JSON 示例描述了使用 DHCP 进行动态 IP 地址地址分配的配置 p。

动态 IP 地址(DHCP)分配配置示例

{
  "ipam": {
    "type": "dhcp"
  }
}
Copy to Clipboard Toggle word wrap

Whereabouts CNI 插件允许在不使用 DHCP 服务器的情况下动态地将 IP 地址分配给二级网络。

Whereabouts CNI 插件还支持在单独的 NetworkAttachmentDefinition CRD 中多次出现同一 CIDR 范围的重叠 IP 地址范围和配置。这在多租户环境中提供了更大的灵活性和管理功能。

3.1.2.3.1. 动态 IP 地址配置参数

下表描述了使用 Whereabouts 进行动态 IP 地址分配的配置对象:

Expand
表 3.6. ipam whereabouts 配置参数
字段类型描述

type

string

IPAM 地址类型。需要 abouts 的值。

range

string

CIDR 表示法中的 IP 地址和范围。IP 地址是通过这个地址范围来分配的。

exclude

数组

可选: CIDR 标记中零个或更多 IP 地址和范围的列表。包含在排除地址范围中的 IP 地址。

network_name

string

可选:帮助确保每个 pod 的组或域都有自己的一组 IP 地址,即使它们共享相同的 IP 地址范围。设置此字段对于保持网络独立和组织非常重要,特别是在多租户环境中。

以下示例显示了使用 Whereabouts 的 NAD 文件中的动态地址分配配置:

Whereabouts 动态 IP 地址分配排除特定的 IP 地址范围

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/27",
    "exclude": [
       "192.0.2.192/30",
       "192.0.2.196/32"
    ]
  }
}
Copy to Clipboard Toggle word wrap

以下示例显示了一个动态 IP 地址分配,它将重叠的 IP 地址范围用于多租户网络。

NetworkAttachmentDefinition 1

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/29",
    "network_name": "example_net_common", 
1

  }
}
Copy to Clipboard Toggle word wrap

1
可选。如果设置,必须与 NetworkAttachmentDefinition 2network_name 匹配。

NetworkAttachmentDefinition 2

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/24",
    "network_name": "example_net_common", 
1

  }
}
Copy to Clipboard Toggle word wrap

1
可选。如果设置,必须与 NetworkAttachmentDefinition 1network_name 匹配。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat