6.4. オールマルチキャストモード
特にルートレスアプリケーションのコンテキストでは、オールマルチキャストモードを有効にすることが重要です。このモードを有効にしない場合は、Pod のセキュリティーコンテキスト制約 (SCC) に NET_ADMIN
ケイパビリティーを付与する必要があります。NET_ADMIN
ケイパビリティーを使用して、特定の要件を超える変更を行う権限を Pod に付与すると、セキュリティーの脆弱性が露呈する可能性があります。
チューニング CNI プラグインは、オールマルチキャストモードを含め、いくつかのインターフェイス属性の変更をサポートしています。このモードを有効にすると、SR-IOV ネットワークデバイス上で設定された Virtual Function (VF) 上で実行されているアプリケーションは、接続されている物理機能が同じか異なるかにかかわらず、他の VF 上のアプリケーションからマルチキャストトラフィックを受信できます。
6.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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定の更新を適用すると、
sriov-network-operator
namespace 内のすべての Pod が自動的にRunning
ステータスに移行します。次のコマンドを実行して、
enable-allmulti-test
namespace を作成します。oc create namespace enable-allmulti-test
$ oc create namespace enable-allmulti-test
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
NetworkAttachmentDefinition
CR の検証
以下のコマンドを実行して、SR-IOV Network Operator が
NetworkAttachmentDefinition
CR を作成していることを確認します。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-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
追加の SR-IOV ネットワークアタッチメントの検証
チューニング CNI が正しく設定されていること、および追加の SR-IOV ネットワークアタッチメントが割り当てられていることを確認するには、次の手順を実行します。
Pod
CR を作成します。次のサンプル 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod が作成されていることを確認します。
oc get pod -n enable-allmulti-test
$ oc get pod -n enable-allmulti-test
Copy 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 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod にログインします。
oc rsh -n enable-allmulti-test samplepod
$ oc rsh -n enable-allmulti-test samplepod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Pod に関連付けられているすべてのインターフェイスをリスト表示します。
ip link
sh-4.4# ip link
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow