18.4. 配置 SR-IOV InfiniBand 网络附加
您可以为集群中的单根 I/O 虚拟化(SR-IOV)设备配置 InfiniBand(IB)网络附加。
在执行以下文档中的任何任务前,请确保 安装了 SR-IOV Network Operator。
18.4.1. Infiniband 设备配置对象 复制链接链接已复制到粘贴板!
您可以通过定义 SriovIBNetwork
对象来配置 InfiniBand(IB)网络设备。
以下 YAML 描述了 SriovIBNetwork
对象:
- 1
- 对象的名称。SR-IOV Network Operator 创建一个名称相同的
NetworkAttachmentDefinition
对象。 - 2
- 安装 SR-IOV Operator 的命名空间。
- 3
- 用于为这个额外网络定义 SR-IOV 硬件的
SriovNetworkNodePolicy
对象中的spec.resourceName
参数的值。 - 4
SriovIBNetwork
对象的目标命名空间。只有目标命名空间中的 pod 可以附加到网络设备。- 5
- 可选:将 IPAM CNI 插件配置为 YAML 块 scalar。该插件管理附加定义的 IP 地址分配。
- 6
- 可选:虚拟功能(VF)的链接状态。允许的值是
enable
、disable
和auto
。 - 7
- 可选:为此网络配置功能。您可以指定
'{ "ips": true }'
来启用 IP 地址支持,或'{ "infinibandGUID": true }'
来启用 IB Global Unique Identifier (GUID)支持。
18.4.1.1. 为动态分配双栈 IP 地址创建配置 复制链接链接已复制到粘贴板!
双栈 IP 地址分配可使用 ipRanges
参数进行配置:
- IPv4 地址
- IPv6 地址
- 多个 IP 地址分配
流程
-
将
type
设置为whereabouts
。 使用
ipRanges
来分配 IP 地址,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将网络附加到 pod。如需更多信息,请参阅"将 pod 添加到额外网络"。
- 验证是否分配了所有 IP 地址。
运行以下命令,以确保 IP 地址被分配为元数据。
$ oc exec -it mypod -- ip a
$ oc exec -it mypod -- ip a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.1.2. 配置网络附加的 IP 地址分配 复制链接链接已复制到粘贴板!
IP 地址管理 (IPAM) Container Network Interface (CNI) 插件为其他 CNI 插件提供 IP 地址。
您可以使用以下 IP 地址分配类型:
- 静态分配。
- 通过 DHCP 服务器进行动态分配。您指定的 DHCP 服务器必须可从额外网络访问。
- 通过 Whereabouts IPAM CNI 插件进行动态分配。
18.4.1.2.1. 静态 IP 地址分配配置 复制链接链接已复制到粘贴板!
下表描述了静态 IP 地址分配的配置:
字段 | 类型 | 描述 |
---|---|---|
|
|
IPAM 地址类型。值必须是 |
|
| 指定分配给虚拟接口的 IP 地址的对象数组。支持 IPv4 和 IPv6 IP 地址。 |
|
| 指定要在 pod 中配置的路由的一组对象。 |
|
| 可选:指定 DNS 配置的对象数组。 |
address
数组需要带有以下字段的对象:
字段 | 类型 | 描述 |
---|---|---|
|
|
您指定的 IP 地址和网络前缀。例如,如果您指定了 |
|
| 出口网络流量要路由到的默认网关。 |
字段 | 类型 | 描述 |
---|---|---|
|
|
CIDR 格式的 IP 地址范围,如 |
|
| 路由网络流量的网关。 |
字段 | 类型 | 描述 |
---|---|---|
|
| 发送 DNS 查询的一个或多个 IP 地址的数组。 |
|
|
要附加到主机名的默认域。例如,如果将域设置为 |
|
|
在 DNS 查找查询过程中,附加到非限定主机名(如 |
静态 IP 地址分配配置示例
18.4.1.2.2. 动态 IP 地址(DHCP)分配配置 复制链接链接已复制到粘贴板!
pod 在创建时获取其原始 DHCP 租期。该租期必须由集群中运行的一个小型的 DHCP 服务器部署定期续订。
对于以太网网络附加,SR-IOV Network Operator 不会创建 DHCP 服务器部署。Cluster Network Operator 负责创建最小 DHCP 服务器部署。
要触发 DHCP 服务器的部署,您必须编辑 Cluster Network Operator 配置来创建 shim 网络附加,如下例所示:
shim 网络附加定义示例
- 1
- 为集群指定动态 IP 地址(DHCP)分配。
下表描述了使用 DHCP 进行动态 IP 地址地址分配的配置参数。
字段 | 类型 | 描述 |
---|---|---|
|
|
IPAM 地址类型。需要值 |
以下 JSON 示例描述了使用 DHCP 进行动态 IP 地址地址分配的配置 p。
动态 IP 地址(DHCP)分配配置示例
{ "ipam": { "type": "dhcp" } }
{
"ipam": {
"type": "dhcp"
}
}
18.4.1.2.3. 使用 Whereabouts 进行动态 IP 地址分配配置 复制链接链接已复制到粘贴板!
Whereabouts CNI 插件允许在不使用 DHCP 服务器的情况下动态地将 IP 地址分配给额外网络。
Whereabouts CNI 插件还支持在单独的 NetworkAttachmentDefinition
CRD 中多次出现同一 CIDR 范围的重叠 IP 地址范围和配置。这在多租户环境中提供了更大的灵活性和管理功能。
18.4.1.2.3.1. 动态 IP 地址配置对象 复制链接链接已复制到粘贴板!
下表描述了使用 Whereabouts 进行动态 IP 地址分配的配置对象:
字段 | 类型 | 描述 |
---|---|---|
|
|
IPAM 地址类型。需要 |
|
| CIDR 表示法中的 IP 地址和范围。IP 地址是通过这个地址范围来分配的。 |
|
| 可选: CIDR 标记中零个或更多 IP 地址和范围的列表。包含在排除地址范围中的 IP 地址。 |
|
| 可选:帮助确保每个 pod 的组或域都有自己的一组 IP 地址,即使它们共享相同的 IP 地址范围。设置此字段对于保持网络独立和组织非常重要,特别是在多租户环境中。 |
18.4.1.2.3.2. 使用 Whereabouts 的动态 IP 地址分配配置 复制链接链接已复制到粘贴板!
以下示例显示了使用 Whereabouts 的动态地址分配配置:
Whereabouts 动态 IP 地址分配
18.4.1.2.3.3. 使用 Whereabouts 带有重叠 IP 地址范围的动态 IP 地址分配 复制链接链接已复制到粘贴板!
以下示例显示了一个动态 IP 地址分配,它将重叠的 IP 地址范围用于多租户网络。
NetworkAttachmentDefinition 1
- 1
- 可选。如果设置,必须与
NetworkAttachmentDefinition 2
的network_name
匹配。
NetworkAttachmentDefinition 2
- 1
- 可选。如果设置,必须与
NetworkAttachmentDefinition 1
的network_name
匹配。
18.4.2. 配置 SR-IOV 额外网络 复制链接链接已复制到粘贴板!
您可以通过创建一个 SriovIBNetwork
对象来配置使用 SR-IOV 硬件的额外网络。创建 SriovIBNetwork
对象时,SR-IOV Network Operator 会自动创建一个 NetworkAttachmentDefinition
对象。
如果一个 SriovIBNetwork
对象已被附加到状态为 running
的 pod,则不要修改或删除它。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
创建一个
SriovIBNetwork
对象,然后在<name>.yaml
文件中保存 YAML,其中<name>
是这个额外网络的名称。对象规格可能类似以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建对象:
oc create -f <name>.yaml
$ oc create -f <name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这里的
<name>
指定额外网络的名称。可选: 要确认与您在上一步中创建的
SriovIBNetwork
对象关联的NetworkAttachmentDefinition
对象是否存在,请输入以下命令。将<namespace>
替换为您在SriovIBNetwork
对象中指定的 networkNamespace。oc get net-attach-def -n <namespace>
$ oc get net-attach-def -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.3. 基于 InfiniBand 的 SR-IOV 附加的运行时配置 复制链接链接已复制到粘贴板!
将 pod 附加到额外网络时,您可以指定运行时配置来为 pod 进行特定的自定义。例如,,您可以请求特定的 MAC 硬件地址。
您可以通过在 pod 规格中设置注解来指定运行时配置。注解键是 k8s.v1.cni.cncf.io/network
,它接受一个 JSON 对象来描述运行时配置。
以下 JSON 描述了基于 InfiniBand 的 SR-IOV 网络附加的运行时配置选项。
运行时配置示例
18.4.4. 将 pod 添加到额外网络 复制链接链接已复制到粘贴板!
您可以将 pod 添加到额外网络。pod 继续通过默认网络发送与集群相关的普通网络流量。
创建 pod 时会附加额外网络。但是,如果 pod 已存在,您无法为其附加额外网络。
pod 必须与额外网络处于相同的命名空间。
先决条件
-
安装 OpenShift CLI(
oc
)。 - 登录到集群。
流程
为
Pod
对象添加注解。只能使用以下注解格式之一:要在不自定义的情况下附加二级网络,请使用以下格式添加注解。将
<network>
替换为要与 pod 关联的二级网络的名称:metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]
metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要指定多个二级网络,请使用逗号分隔每个网络。逗号之间不可包括空格。如果您多次指定相同的二级网络,则该 pod 会将多个网络接口附加到该网络。
要通过自定义来附加二级网络,请添加具有以下格式的注解:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令来创建 pod。将
<name>
替换为 pod 的名称。oc create -f <name>.yaml
$ oc create -f <name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要确认
Pod
CR 中是否存在注解,请输入以下命令将<name>
替换为 pod 的名称。oc get pod <name> -o yaml
$ oc get pod <name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下示例中,
example-pod
pod 附加到net1
额外网络:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
k8s.v1.cni.cncf.io/network-status
参数是对象的 JSON 数组。每个对象描述附加到 pod 的额外网络的状态。注解值保存为纯文本值。