第5章 VRF へのセカンダリーネットワークの割り当て
クラスター管理者は、CNI VRF プラグインを使用して、Virtual Routing and Forwarding (VRF) ドメインのセカンダリーネットワークを設定できます。このプラグインが作成する仮想ネットワークは、指定した物理インターフェイスに関連付けられます。
VRF インスタンスでセカンダリーネットワークを使用すると、次の利点があります。
- ワークロードの分離
- セカンダリーネットワークの VRF インスタンスを設定して、ワークロードトラフィックを分離します。
- セキュリティーの向上
- VRF ドメイン内の分離されたネットワークパスを通じて、セキュリティーを向上させます。
- マルチテナンシーのサポート
- 各テナントの VRF ドメイン内で、一意のルーティングテーブルを使用したネットワークセグメンテーションを通じて、マルチテナントをサポートします。
VRF を使用するアプリケーションは、特定のデバイスに対してバインドする必要があります。一般的な使用方法として、ソケットに SO_BINDTODEVICE オプションを使用できます。SO_BINDTODEVICE オプションは、渡されたインターフェイス名 (例: eth1) で指定されたデバイスにソケットをバインドします。SO_BINDTODEVICE オプションを使用するには、アプリケーションに CAP_NET_RAW 機能が必要です。
ip vrf exec コマンドを使用した VRF の使用は、OpenShift Container Platform Pod ではサポートされません。VRF を使用するには、アプリケーションを VRF インターフェイスに直接バインドします。
5.1. CNI VRF プラグインを使用してセカンダリーネットワークアタッチメントを作成する リンクのコピーリンクがクリップボードにコピーされました!
Cluster Network Operator (CNO) は、セカンダリーネットワークの定義を管理します。クラスタースコープの Network カスタムリソース(CR)でセカンダリーネットワークを指定する場合、CNO は NetworkAttachmentDefinition CR を自動的に作成します。
Cluster Network Operator が管理する NetworkAttachmentDefinition CR は編集しないでください。これを行うと、セカンダリーネットワーク上のネットワークトラフィックが中断される可能性があります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてクラスターにログインしている。
手順
追加のネットワーク割り当て用の
NetworkCR を作成し、セカンダリーネットワークのrawCNIConfig設定を挿入します。additional-network-attachment.yamlファイルに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
plugins- リストを指定する必要があります。リストの最初の項目は、VRF ネットワークのベースとなるセカンダリーネットワークである必要があります。一覧の 2 つ目の項目は、VRF プラグイン設定です。
type-
このパラメーターは、
vrfに設定する必要があります。 vrfname- インターフェイスが割り当てられている VRF の名前。VRF が Pod に存在しない場合は、CNI は VRF を作成します。
tableオプションのパラメーター。ルーティングテーブル ID を指定します。デフォルトで、
tableidパラメーターが使用されます。テーブル ID を指定しない場合、CNI は空きルーティングテーブル ID を VRF に割り当てます。注記VRF は、リソースが
netdeviceタイプの場合にのみ正常に機能します。
Networkリソースを作成します。oc create -f additional-network-attachment.yaml
$ oc create -f additional-network-attachment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、CNO が
NetworkAttachmentDefinitionCR を作成していることを確認します。<namespace>を、ネットワーク割り当ての設定時に指定した namespace に置き換えます (例:additional-network-1)。予想される出力には、NAD CR の名前と作成後の経過時間 (分) が表示されます。oc get network-attachment-definitions -n <namespace>
$ oc get network-attachment-definitions -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CNO が CR を作成する前に、遅延が存在する可能性があります。
検証
Pod を作成し、VRF プラグイン設定を含むセカンダリーネットワークに Pod を割り当てます。
以下の
pod-additional-net.yamlファイルに示されるように、Podリソースを定義する YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
name- VRF プラグイン設定を含むセカンダリーネットワークの名前を指定します。
次のコマンドを実行して、
Podリソースを作成します。予想される出力には、Podリソースの名前と作成期間 (分) が表示されます。oc create -f pod-additional-net.yaml
$ oc create -f pod-additional-net.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod のネットワーク割り当てが VRF セカンダリーネットワークに接続されていることを確認します。Pod とのリモートセッションを開始し、次のコマンドを実行します。予想される出力には、VRF インターフェイスの名前とルーティングテーブル内の一意の ID が表示されます。
ip vrf show
$ ip vrf showCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、VRF インターフェイスがセカンダリーインターフェイスのコントローラーであることを確認します。
ip link
$ ip linkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP modeCopy to Clipboard Copied! Toggle word wrap Toggle overflow