11.3. 在 SR-IOV 网络中为 LACP 状态监控配置 PF Status Relay Operator
使用 PF Status Relay Operator 为使用 pod 级别绑定到 SR-IOV 网络的工作负载启用链路聚合控制协议(LACP)状态监控。Operator 监控物理功能(PF)上的 LACP 状态,并在检测到上游失败时更改附加虚拟功能(VF)的链接状态。使用此方法,您可以检测附加到 PF 的 VF 上的故障,以确保及时切换到备份网络路径,确保工作负载的高可用性。
以下场景演示了如何为 SR-IOV 网络配置和验证 LACP 状态监控:
- 在 worker 节点上创建主机级别的 NIC 绑定并配置 LACP。
- 定义 SR-IOV 网络策略以在绑定接口上创建虚拟功能(VF)。
- 部署 PF Status Relay Operator 以监控 PF 并监控 LACP 状态。
- 在进行上游交换机失败时,验证使用这些 VF 的 pod 是否自动切换到备份网络路径。
以下场景演示了如何为 SR-IOV 网络配置和验证 LACP 状态监控。此场景使用每个节点上有两个端口的 SR-IOV 网卡( worker-0
和 worker-1
),两个端口都连接到共享交换机,以支持 LACP 绑定。
先决条件
- 节点必须具有支持 SR-IOV 的 NIC。
- SR-IOV Network Operator 已安装。
- 已安装 PF Status Relay Operator。
- 连接到 worker 节点的物理交换机端口被配置为带有快速轮询率的 LACP。
-
linkState
设置为auto
或disable
用于您要监控的 SR-IOV VF。Operator 忽略了将linkState
设置为启用的VF
。SR-IOV VF 的默认值为linkState: auto
。
流程
通过创建一个
namespace.yaml
文件来创建项目命名空间,如下例所示:namespace.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 部署高可用性 pod 的命名空间。
运行以下命令来应用命名空间:
oc apply -f namespace.yaml
$ oc apply -f namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置主机级别的 LACP 绑定:
为
worker-0
节点上的ens5f0
接口定义NodeNetworkConfigurationPolicy
资源的 YAML 文件:nncpBondF0Worker0.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
worker-0
节点上的ens5f1
接口创建定义NodeNetworkConfigurationPolicy
资源的 YAML 文件:nncpBondF1Worker0.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用资源:
oc apply -f nncpBondF0Worker0.yaml oc apply -f nncpBondF1Worker0.yaml
$ oc apply -f nncpBondF0Worker0.yaml $ oc apply -f nncpBondF1Worker0.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
为绑定接口创建 SR-IOV 网络 VF:
为
worker-0
节点上的ens5f0
接口定义SriovNetworkNodePolicy
资源的 YAML 文件:sriovnetworkpolicy-port1.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
worker-0
节点上的ens5f1
接口定义SriovNetworkNodePolicy
资源的 YAML 文件:sriovnetworkpolicy-port2.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用资源:
oc apply -f sriovnetworkpolicy-port1.yaml oc apply -f sriovnetworkpolicy-port2.yaml
$ oc apply -f sriovnetworkpolicy-port1.yaml $ oc apply -f sriovnetworkpolicy-port2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置 PF Status Relay Operator:
创建定义
PFLACPMonitor
资源的 YAML 文件。这个示例文件将 Operator 配置为监控worker-0
节点上的ens5f0
和ens5f1
绑定接口:pflacpmonitor.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要仅使用一个
PFLACPMonitor
自定义资源来监控节点上的每个网络接口。如果您创建以同一接口为目标的多个资源,PF Status Relay Operator 不会处理冲突的配置。运行以下命令来应用
PFLACPMonitor
资源:oc apply -f pflacpmonitor.yaml
$ oc apply -f pflacpmonitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 PF Status Relay Operator 的日志,以验证它是否监控 LACP 状态:
oc logs -n openshift-pf-status-relay-operator <pf_status_relay_operator_pod_name>
$ oc logs -n openshift-pf-status-relay-operator <pf_status_relay_operator_pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"time":"2025-07-24T13:35:54.653201692Z","level":"INFO","msg":"lacp is up","interface":"ens5f0"} {"time":"2025-07-24T13:35:54.65347273Z","level":"INFO","msg":"vf link state was set","id":0,"state":"auto","interface":"ens5f0"} ...
{"time":"2025-07-24T13:35:54.653201692Z","level":"INFO","msg":"lacp is up","interface":"ens5f0"} {"time":"2025-07-24T13:35:54.65347273Z","level":"INFO","msg":"vf link state was set","id":0,"state":"auto","interface":"ens5f0"} ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用
SriovNetwork
资源,使 VF 可用于在sriov-operator-tests
命名空间中使用:为
ens5f0
上创建的 VF 定义SriovNetwork
资源的 YAML 文件:sriovnetwork-port1.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
ens5f1
上创建的 VF 定义SriovNetwork
资源的 YAML 文件:sriovnetwork-port2.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用资源:
oc apply -f sriovnetwork-port1.yaml oc apply -f sriovnetwork-port2.yaml
$ oc apply -f sriovnetwork-port1.yaml $ oc apply -f sriovnetwork-port2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
定义使用 SR-IOV VF 的高可用性 pod:
应用
NetworkAttachmentDefinition
资源,以使用两个 SR-IOV 网络创建active-backup
绑定:nad-bond.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
linksInContainer: true
在 pod 的网络命名空间中创建绑定。 -
mode:active-backup
将绑定配置为使用 active-backup 模式。 links
指定要包含在绑定中的 pod 级别接口。重要PF Status Relay Operator 为 pod 级别绑定提供 LACP 状态监控,且只为
mode: active-backup
配置。
-
运行以下命令来应用
NetworkAttachmentDefinition
资源:oc apply -f nad-bond.yaml
$ oc apply -f nad-bond.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义使用 active-backup 模式的绑定接口中的 VF 的
Pod
资源的 YAML 文件:client-bond.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 该注解请求三个网络:两个 SR-IOV VF、
net1
和net2
,以及一个绑定,bond0
使用它们。
运行以下命令来应用
Pod
资源:oc apply -f client-bond.yaml
$ oc apply -f client-bond.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查故障切换机制:
运行以下命令登录到
client-bond
pod:oc rsh -n sriov-operator-tests client-bond
$ oc rsh -n sriov-operator-tests client-bond
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 pod 级别绑定的初始状态:
cat /proc/net/bonding/bond0
sh-4.4# cat /proc/net/bonding/bond0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
net1
和net2
接口都已启动。
-
- 退出 pod shell。
- 在上游物理交换机上模拟 LACP 失败。要模拟此场景,您可以在要测试故障的交换机端口上过滤 LACP 流量。这样可确保物理链接在 LACP 轮询失败时保留。要执行此操作的命令取决于供应商。
通过重新登录
client-bond
pod 并再次检查绑定状态来验证 pod 中的故障切换:cat /proc/net/bonding/bond0
sh-4.4# cat /proc/net/bonding/bond0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow net1
接口已关闭,net2
接口现在是活跃的接口。client-bond pod 检测到链路状态更改,并切换到备份网络路径。