5.4. オールマルチキャストモード
特にルートレスアプリケーションのコンテキストでは、オールマルチキャストモードを有効にすることが重要です。このモードを有効にしない場合は、Pod のセキュリティーコンテキスト制約 (SCC) に NET_ADMIN ケイパビリティーを付与する必要があります。NET_ADMIN ケイパビリティーを使用して、特定の要件を超える変更を行う権限を Pod に付与すると、セキュリティーの脆弱性が露呈する可能性があります。
チューニング CNI プラグインは、オールマルチキャストモードを含め、いくつかのインターフェイス属性の変更をサポートしています。このモードを有効にすると、SR-IOV ネットワークデバイス上で設定された Virtual Function (VF) 上で実行されているアプリケーションは、接続されている物理機能が同じか異なるかにかかわらず、他の VF 上のアプリケーションからマルチキャストトラフィックを受信できます。
5.4.1. SR-IOV ネットワーク上でオールマルチキャストモードを有効にする リンクのコピーリンクがクリップボードにコピーされました!
SR-IOV インターフェイスでオールマルチキャストモードを有効にするには、次の方法があります。
-
SriovNetworkリソースのmetaPluginsパラメーターにチューニング設定を追加します。 チューニング設定で、
allmultiフィールドをtrueに設定します。注記信頼を有効にして Virtual Function (VF) を作成していることを確認してください。
SR-IOV Network Operator は追加ネットワークの定義を管理します。作成する追加ネットワークを指定する場合、SR-IOV Network Operator は NetworkAttachmentDefinition カスタムリソース (CR) を自動的に作成します。
SR-IOV Network Operator が管理する NetworkAttachmentDefinition カスタムリソースは編集しないでください。これを実行すると、追加ネットワークのネットワークトラフィックが中断する可能性があります。
このガイダンスに従って、SR-IOV ネットワーク上でオールマルチキャストモードを有効にします。
前提条件
- OpenShift Container Platform CLI (oc) がインストールされている。
-
cluster-admin権限を持つユーザーとして OpenShift Container Platform クラスターにログインしている。 - SR-IOV Network Operator がインストールされている。
-
適切な
SriovNetworkNodePolicyオブジェクトを設定している。
手順
Mellanox ConnectX-5 デバイスの
SriovNetworkNodePolicyオブジェクトを定義する次の設定を使用して、YAML ファイルを作成します。YAML ファイルをsriovnetpolicy-mlx.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オプション: SR-IOV 対応クラスターノードにラベルが付けられていない場合は、
SriovNetworkNodePolicy.Spec.NodeSelectorラベルを追加します。ノードのラベル付けの詳細は、「ノードのラベルを更新する方法について」を参照してください。 以下のコマンドを実行して
SriovNetworkNodePolicyオブジェクトを作成します。oc create -f sriovnetpolicy-mlx.yaml
$ oc create -f sriovnetpolicy-mlx.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定の更新を適用すると、
sriov-network-operatornamespace 内のすべての Pod が自動的にRunningステータスに移行します。次のコマンドを実行して、
enable-allmulti-testnamespace を作成します。oc create namespace enable-allmulti-test
$ oc create namespace enable-allmulti-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 追加の SR-IOV ネットワークアタッチメント用の
SriovNetworkカスタムリソース (CR) を作成し、次の CR YAML の例のようにmetaPlugins設定を挿入して、ファイルをsriov-enable-all-multicast.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- オブジェクトの名前を指定します。SR-IOV Network Operator は、同じ名前を持つ
NetworkAttachmentDefinitionオブジェクトを作成します。 - 2
- SR-IOV Network Operator がインストールされている namespace を指定します。
- 3
- この追加ネットワークの SR-IOV ハードウェアを定義する
SriovNetworkNodePolicyオブジェクトのspec.resourceNameパラメーター値を指定します。 - 4
SriovNetworkオブジェクトのターゲット namespace を指定します。ターゲット namespace の Pod のみを追加ネットワークに割り当てることができます。- 5
- IPAM CNI プラグインの設定オブジェクトを YAML ブロックスケーラーとして指定します。プラグインは、アタッチメント定義への IP アドレスの割り当てを管理します。
- 6
- オプション: 追加のネットワークの機能を設定します。IP アドレスのサポートを有効にするには、
"{ "ips": true }"を指定できます。または、MAC アドレスのサポートを有効にするには"{ "mac": true }"を指定します。 - 7
- Virtual Function の信頼モードを指定します。これは "on" に設定する必要があります。
- 8
metaPluginsパラメーターを使用して、デバイスにケイパビリティーをさらに追加します。このユースケースでは、typeフィールドをtuningに設定し、allmultiフィールドを追加してtrueに設定します。
次のコマンドを実行して、
SriovNetworkリソースを作成します。oc create -f sriov-enable-all-multicast.yaml
$ oc create -f sriov-enable-all-multicast.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
NetworkAttachmentDefinition CR の検証
以下のコマンドを実行して、SR-IOV Network Operator が
NetworkAttachmentDefinitionCR を作成していることを確認します。oc get network-attachment-definitions -n <namespace>
$ oc get network-attachment-definitions -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<namespace>を、SriovNetworkオブジェクトで指定したnetworkNamespaceの値に置き換えます。この例では、enable-allmulti-testです。予想される出力には、NAD CR の名前と作成後の経過時間 (分) が表示されます。
注記SR-IOV Network Operator が CR を作成するまでに遅延が生じる可能性があります。
次のコマンドを実行して、SR-IOV ネットワークリソースに関する情報を表示します。
oc get sriovnetwork -n openshift-sriov-network-operator
$ oc get sriovnetwork -n openshift-sriov-network-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
追加の SR-IOV ネットワークアタッチメントの検証
チューニング CNI が正しく設定されていること、および追加の SR-IOV ネットワークアタッチメントが割り当てられていることを確認するには、次の手順を実行します。
PodCR を作成します。次のサンプル YAML をexamplepod.yamlという名前のファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- SR-IOV network attachment definition CR の名前を指定します。
- 2
- オプション: SR-IOV network attachment definition CR で定義されるリソースタイプから割り当てられる SR-IOV デバイスの MAC アドレスを指定します。この機能を使用するには、SriovNetwork オブジェクトで
{"mac": true}も指定する必要があります。 - 3
- オプション: SR-IOV ネットワーク割り当て定義 CR で定義されるリソースタイプから割り当てられる SR-IOV デバイスの IP アドレスを指定します。IPv4 と IPv6 アドレスの両方がサポートされます。この機能を使用するには、
SriovNetworkオブジェクトで{ "ips": true }も指定する必要があります。
以下のコマンドを実行して
Podを作成します。oc apply -f examplepod.yaml
$ oc apply -f examplepod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod が作成されていることを確認します。
oc get pod -n enable-allmulti-test
$ oc get pod -n enable-allmulti-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE samplepod 1/1 Running 0 47s
NAME READY STATUS RESTARTS AGE samplepod 1/1 Running 0 47sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod にログインします。
oc rsh -n enable-allmulti-test samplepod
$ oc rsh -n enable-allmulti-test samplepodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod に関連付けられているすべてのインターフェイスをリスト表示します。
ip link
sh-4.4# ip linkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow