11.3. SR-IOV ネットワークにおける LACP 状態監視用の PF Status Relay Operator を設定する
PF Status Relay Operator を使用して、SR-IOV ネットワークによる Pod レベルのボンディングを使用するワークロードの Link Aggregation Control Protocol (LACP) 状態監視を有効にします。この Operator は、Physical Function (PF) 上の LACP 状態を監視し、アップストリーム障害を検出すると、アタッチされている Virtual Function (VF) のリンク状態を変更します。このアプローチにより、PF にアタッチされた VF の障害を検出し、バックアップネットワークパスへのタイムリーなフェイルオーバーを確実に実行して、ワークロードの高可用性を確保できます。
次のシナリオは、SR-IOV ネットワークの LACP 状態監視を設定および検証する方法を示しています。
- ワーカーノードにホストレベルの NIC ボンディングを作成し、LACP を設定します。
- 結合されたインターフェイス上に Virtual Function (VF) を作成するための SR-IOV ネットワークポリシーを定義します。
- PF Status Relay Operator をデプロイして、PF と LACP 状態を監視します。
- アップストリームスイッチに障害が発生した場合に、これらの VF を使用する Pod がバックアップネットワークパスに自動的にフェイルオーバーすることを確認します。
次のシナリオは、SR-IOV ネットワークの LACP 状態監視を設定および検証する方法を示しています。このシナリオでは、各ノードに 2 つのポート (worker-0 と worker-1) を持つ SR-IOV ネットワークカードを使用します。両方のポートは共有スイッチにアタッチされており、LACP ボンディングをサポートします。
前提条件
- ノードには SR-IOV をサポートする NIC がある。
- SR-IOV Network Operator がインストールされている。
- PF Status Relay Operator がインストールされている。
- ワーカーノードに接続された物理スイッチポートは、高速ポーリングレートの LACP 用に設定されています。
-
監視する SR-IOV VF の
linkStateは、autoまたはdisableに設定されます。Operator は、linkStateがenableに設定された VF を無視します。SR-IOV VF のデフォルト値はlinkState: autoです。
手順
次の例のような
namespace.yamlファイルを作成して、プロジェクト namespace を作成します。namespace.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 高可用性 Pod をデプロイする namespace。
以下のコマンドを実行して namespace を適用します。
oc apply -f namespace.yaml
$ oc apply -f namespace.yamlCopy 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.yamlCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
PF Status Relay Operator を設定します。
PFLACPMonitorリソースを定義する YAML ファイルを作成します。このサンプルファイルでは、Operator がworker-0ノード上のボンディングされたインターフェイスであるens5f0およびens5f1の LACP ステータスを監視するように設定します。pflacpmonitor.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ノード上の各ネットワークインターフェイスを監視するために、
PFLACPMonitorカスタムリソースを 1 つだけ使用します。同じインターフェイスを対象とする複数のリソースを作成すると、PF Status Relay Operator は競合する設定を処理しません。次のコマンドを実行して、
PFLACPMonitorリソースを適用します。oc apply -f pflacpmonitor.yaml
$ oc apply -f pflacpmonitor.yamlCopy 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リソースを適用して、sriov-operator-testsnamespace 内で VF を使用できるようにします。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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
SR-IOV VF を使用する高可用性 Pod を定義します。
NetworkAttachmentDefinitionリソースを適用し、2 つの SR-IOV ネットワークを使用してactive-backupボンディングを作成します。nad-bond.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
linksInContainer: trueは、Pod のネットワーク namespace 内にボンディングを作成します。 -
mode: active-backupは、active-backup モードを使用するようにボンディングを設定します。 linksは、ボンディングに含める Pod レベルのインターフェイスを指定します。重要PF Status Relay Operator は、
mode: active-backup設定のみに、Pod レベルのボンディングの LACP 状態監視を提供します。
-
次のコマンドを実行して、
NetworkAttachmentDefinitionリソースを適用します。oc apply -f nad-bond.yaml
$ oc apply -f nad-bond.yamlCopy 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
- アノテーションは、2 つの SR-IOV VF (
net1とnet2) と、それらを使用する 1 つのボンディングbond0、合計 3 つのネットワークを要求します。
次のコマンドを実行して、
Podリソースを適用します。oc apply -f client-bond.yaml
$ oc apply -f client-bond.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
フェイルオーバーメカニズムを確認します。
次のコマンドを実行して、
client-bondPod にログインします。oc rsh -n sriov-operator-tests client-bond
$ oc rsh -n sriov-operator-tests client-bondCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod レベルのボンディングの初期ステータスを確認します。
cat /proc/net/bonding/bond0
sh-4.4# cat /proc/net/bonding/bond0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
net1とnet2の両方のインターフェイスが稼働しています。
-
- Pod シェルを終了します。
- アップストリーム物理スイッチで LACP 障害をシミュレートします。このシナリオをシミュレートするには、障害をテストするスイッチポートで LACP トラフィックをフィルタリングできます。これにより、LACP ポーリングが失敗しても物理リンクは稼働状態で維持されます。そのために使用するコマンドは、ベンダーによって異なります。
client-bondPod に再度ログインし、ボンディングステータスを再度確認して、Pod 内のフェイルオーバーを確認します。cat /proc/net/bonding/bond0
sh-4.4# cat /proc/net/bonding/bond0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow net1インターフェイスはダウンしており、net2インターフェイスがアクティブインターフェイスになっています。client-bond Pod はリンク状態の変化を検出し、バックアップネットワークパスに切り替えます。