18.10. ハードウェアオフロードの設定
クラスター管理者は、互換性のあるノードでハードウェアオフロードを設定して、データ処理パフォーマンスを向上させ、ホスト CPU の負荷を軽減できます。
次のドキュメントのタスクを実行する前に、SR-IOV Network Operator がインストールされている ことを確認してください。
18.10.1. ハードウェアのオフロードについて
Open vSwitch ハードウェアオフロードは、ネットワークタスクを CPU から迂回させ、ネットワークインターフェイスコントローラー上の専用プロセッサーにオフロードすることにより、ネットワークタスクを処理する方法です。その結果、クラスターは、データ転送速度の高速化、CPU ワークロードの削減、およびコンピューティングコストの削減の恩恵を受けることができます。
この機能の重要な要素は、SmartNIC と呼ばれる最新クラスのネットワークインターフェイスコントローラーです。SmartNIC は、計算量の多いネットワーク処理タスクを処理できるネットワークインターフェイスコントローラーです。専用のグラフィックカードがグラフィックパフォーマンスを向上させるのと同じように、SmartNIC はネットワークパフォーマンスを向上させることができます。いずれの場合も、専用プロセッサーにより、特定のタイプの処理タスクのパフォーマンスが向上します。
OpenShift Container Platform では、互換性のある SmartNIC を持つベアメタルノードのハードウェアオフロードを設定できます。ハードウェアオフロードは、SR-IOV Network Operator によって設定および有効化されます。
ハードウェアのオフロードは、すべてのワークロードまたはアプリケーションタイプと互換性があるわけではありません。次の 2 つの通信タイプのみがサポートされています。
- pod-to-pod
- pod-to-service。サービスは通常の Pod に基づく ClusterIP サービスです。
すべての場合において、ハードウェアのオフロードは、それらの Pod とサービスが互換性のある SmartNIC を持つノードに割り当てられている場合にのみ行われます。たとえば、ハードウェアをオフロードしているノードの Pod が、通常のノードのサービスと通信しようとしているとします。通常のノードでは、すべての処理がカーネルで行われるため、Pod からサービスへの通信の全体的なパフォーマンスは、その通常のノードの最大パフォーマンスに制限されます。ハードウェアオフロードは、DPDK アプリケーションと互換性がありません。
ノードでのハードウェアのオフロードを有効にし、使用する Pod を設定しないと、Pod トラフィックのスループットパフォーマンスが低下する可能性があります。OpenShift Container Platform で管理される Pod のハードウェアオフロードを設定することはできません。
18.10.2. サポートされるデバイス
ハードウェアオフロードは、次のネットワークインターフェイスコントローラーでサポートされています。
| 製造元 | モデル | ベンダー ID | デバイス ID | 
|---|---|---|---|
| Mellanox | MT27800 Family [ConnectX‑5] | 15b3 | 1017 | 
| Mellanox | MT28880 Family [ConnectX‑5 Ex] | 15b3 | 1019 | 
| Mellanox | MT2892 Family [ConnectX‑6 Dx] | 15b3 | 101d | 
| Mellanox | MT2894 ファミリー [ConnectX-6 Lx] | 15b3 | 101f | 
| Mellanox | ConnectX-6 NIC モードの MT42822 BlueField-2 | 15b3 | a2d6 | 
18.10.3. 前提条件
- クラスターに、ハードウェアのオフロードがサポートされているネットワークインターフェイスコントローラーを備えたベアメタルマシンが少なくとも 1 台ある。
- SR-IOV ネットワークオペレーターをインストール しています。
- クラスターで OVN-Kubernetes ネットワークプラグインを使用 している。
- 
							OVN-Kubernetes ネットワークプラグイン設定 で、gatewayConfig.routingViaHostフィールドがfalseに設定されています。
18.10.4. SR-IOV Network Operator の systemd モードへの設定
					ハードウェアオフロードをサポートするには、まず SR-IOV Network Operator を systemd モードに設定する必要があります。
				
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- すべての SR-IOV Operator コンポーネントをデプロイするには、 - SriovOperatorConfigカスタムリソース (CR) を作成します。- 次の YAML を含む - sriovOperatorConfig.yamlという名前のファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、リソースを作成します。 - oc apply -f sriovOperatorConfig.yaml - $ oc apply -f sriovOperatorConfig.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
18.10.5. ハードウェアオフロード用のマシン設定プールの設定
ハードウェアオフロードを有効にするには、専用のマシン設定プールを作成し、SR-IOV Network Operator と連携するように設定する必要があります。
前提条件
- 
							SR-IOV Network Operator がインストールされ、systemdモードに設定されている。
手順
- ハードウェアオフロードを使用するマシンのマシン設定プールを作成します。 - 次の例のようなコンテンツを含む - mcp-offloading.yamlなどのファイルを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- マシン設定プールの設定を適用します。 - oc create -f mcp-offloading.yaml - $ oc create -f mcp-offloading.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- マシン設定プールにノードを追加します。プールのノードロールラベルで各ノードにラベルを付けます。 - oc label node worker-2 node-role.kubernetes.io/mcp-offloading="" - $ oc label node worker-2 node-role.kubernetes.io/mcp-offloading=""- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- オプション: 新しいプールが作成されたことを確認するには、次のコマンドを実行します。 - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- このマシン設定プールを - SriovNetworkPoolConfigカスタムリソースに追加します。- 次の例のようなコンテンツを含むファイル ( - sriov-pool-config.yamlなど) を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- ハードウェアオフロード用のマシン設定プールの名前。
 
- 設定を適用します。 - oc create -f <SriovNetworkPoolConfig_name>.yaml - $ oc create -f <SriovNetworkPoolConfig_name>.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- SriovNetworkPoolConfigオブジェクトで指定された設定を適用すると、SR-IOV Operator は、マシン設定プール内のノードをドレインして再起動します。- 設定の変更が適用されるまでに数分かかる場合があります。 
 
18.10.6. SR-IOV ネットワークノードポリシーの設定
					SR-IOV ネットワークノードポリシーを作成することにより、ノードの SR-IOV ネットワークデバイス設定を作成できます。ハードウェアオフロードを有効にするには、値 "switchdev" を使用して .spec.eSwitchMode フィールドを定義する必要があります。
				
次の手順では、ハードウェアをオフロードするネットワークインターフェイスコントローラー用の SR-IOV インターフェイスを作成します。
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- 次の例のようなコンテンツを含むファイル ( - sriov-node-policy.yamlなど) を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ポリシーの設定を適用します。 - oc create -f sriov-node-policy.yaml - $ oc create -f sriov-node-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- SriovNetworkPoolConfigオブジェクトで指定された設定を適用すると、SR-IOV Operator は、マシン設定プール内のノードをドレインして再起動します。- 設定の変更が適用されるまでに数分かかる場合があります。 
18.10.6.1. OpenStack の SR-IOV ネットワークノードポリシーの例
次の例は、Red Hat OpenStack Platform (RHOSP) でハードウェアオフロードを使用するネットワークインターフェイスコントローラー (NIC) の SR-IOV インターフェイスを示しています。
RHOSP でのハードウェアオフロードを備えた NIC の SR-IOV インターフェイス
18.10.7. Virtual Function を使用したネットワークトラフィックのパフォーマンスの向上
この手順に従って、OVN-Kubernetes 管理ポートに Virtual Function を割り当て、そのネットワークトラフィックパフォーマンスを向上させます。
この手順により 2 つのプールが作成されます。1 つ目には OVN-Kubernetes によって使用される Virtual Function があり、2 つ目は残りの Virtual Function で構成されます。
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- 次のコマンドを実行して、SmartNIC が存在する各ワーカーノードに - network.operator.openshift.io/smart-nicラベルを追加します。- oc label node <node-name> network.operator.openshift.io/smart-nic= - $ oc label node <node-name> network.operator.openshift.io/smart-nic=- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc get nodesコマンドを使用して、使用可能なノードのリストを取得します。
- 次の例のような内容を含む、管理ポート用の - sriov-node-mgmt-vf-policy.yamlという名前のポリシーを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次の例のような内容を含む - sriov-node-policy.yamlという名前のポリシーを作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- sriov-node-mgmt-vf-policy.yamlファイルには、- pfNamesキーと- resourceNameキーの値が- sriov-node-policy.yamlファイルとは異なります。
- 両方のポリシーの設定を適用します。 - oc create -f sriov-node-policy.yaml - $ oc create -f sriov-node-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - oc create -f sriov-node-mgmt-vf-policy.yaml - $ oc create -f sriov-node-mgmt-vf-policy.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 管理設定用にクラスター内に Cluster Network Operator (CNO) ConfigMap を作成します。 - 次の内容を含む - hardware-offload-config.yamlという名前の ConfigMap を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ConfigMap の設定を適用します。 - oc create -f hardware-offload-config.yaml - $ oc create -f hardware-offload-config.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
18.10.8. ネットワーク接続定義の作成
マシン設定プールと SR-IOV ネットワークノードポリシーを定義した後、指定したネットワークインターフェイスカードのネットワーク接続定義を作成できます。
前提条件
- 
							OpenShift CLI (oc) がインストールされている。
- 
							cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
手順
- 次の例のようなコンテンツを含むファイル ( - net-attach-def.yamlなど) を作成します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ネットワーク接続定義の設定を適用します。 - oc create -f net-attach-def.yaml - $ oc create -f net-attach-def.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
検証
- 次のコマンドを実行して、新しい定義が存在するかどうかを確認します。 - oc get net-attach-def -A - $ oc get net-attach-def -A- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - NAMESPACE NAME AGE net-attach-def net-attach-def 43h - NAMESPACE NAME AGE net-attach-def net-attach-def 43h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
18.10.9. ネットワーク接続定義を Pod へ追加
					マシン設定プール、SriovNetworkPoolConfig および SriovNetworkNodePolicy カスタムリソース、およびネットワーク接続定義を作成した後、ネットワーク接続定義を Pod 仕様に追加することにより、これらの設定を Pod に適用できます。
				
手順
- Pod 仕様で、 - .metadata.annotations.k8s.v1.cni.cncf.io/networksフィールドを追加し、ハードウェアオフロード用に作成したネットワーク接続定義を指定します。- .... metadata: annotations: v1.multus-cni.io/default-network: net-attach-def/net-attach-def- .... metadata: annotations: v1.multus-cni.io/default-network: net-attach-def/net-attach-def- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 値は、ハードウェアオフロード用に作成したネットワーク接続定義の名前と namespace である必要があります。