第18章 複数ネットワーク
18.1. 複数ネットワークについて
デフォルトでは、OVN-Kubernetes が OpenShift Container Platform クラスターの Container Network Interface (CNI) として機能します。OpenShift Container Platform の管理者またはユーザーは、OVN-Kubernetes をクラスターのデフォルトの CNI として使用すると、ユーザー定義ネットワーク (UDN) または NetworkAttachmentDefinition (NAD) を活用して、クラスターの通常のネットワークトラフィックすべてを処理する 1 つまたは複数のデフォルトネットワークを作成できます。ユーザー定義ネットワークとネットワークアタッチメント定義は、どちらも次のネットワークタイプとして機能できます。
- プライマリーネットワーク: Pod のプライマリーネットワークとして機能します。デフォルトでは、Pod のルートが他のネットワーク経由でトラフィックを送信するように設定されていない限り、すべてのトラフィックがプライマリーネットワークを通過します。
- セカンダリーネットワーク: Pod のデフォルト以外の追加ネットワークとして機能します。セカンダリーネットワークは、特定のトラフィックの種類または目的専用の個別のインターフェイスを提供します。セカンダリーネットワークを使用するように明示的に設定された Pod トラフィックのみが、そのインターフェイスを介してルーティングされます。
ただし、OpenShift Container Platform 管理者は、クラスターのインストール時に、Multus CNI プラグインを活用して、代替のデフォルトのセカンダリー Pod ネットワークを設定できます。Multus を使用すると、ipvlan、macvlan などの複数の CNI プラグインやネットワークアタッチメント定義を一緒に使用して、Pod のセカンダリーネットワークとして機能させることができます。
ユーザー定義ネットワークは、CNI として OVN-Kubernetes が使用されている場合にのみ使用できます。他の CNI での使用はサポートされていません。
利用可能な CNI プラグインに基づいて追加のネットワークを定義し、そのネットワークのうち 1 つ以上を Pod に割り当てることができます。必要に応じて、クラスターに複数の追加ネットワークを定義できます。これにより、スイッチングやルーティングなどのネットワーク機能を提供する Pod を設定する際に柔軟性が得られます。
サポートされている CNI プラグインの完全なリストについては、OpenShift Container Platform の追加ネットワーク を参照してください。
ユーザー定義ネットワークの詳細は、ユーザー定義ネットワーク (UDN) について を参照してください。
ネットワークアタッチメント定義の詳細は、NetworkAttachmentDefinition を使用したプライマリーネットワークの作成 を参照してください。
18.1.1. 追加ネットワークの使用シナリオ
データプレーンとコントロールプレーンの分離など、ネットワークの分離が必要な状況で追加のネットワークを使用できます。トラフィックの分離は、以下のようなパフォーマンスおよびセキュリティー関連の理由で必要になります。
パフォーマンス
トラフィック管理: 2 つの異なるプレーンでトラフィックを送信して、各プレーンのトラフィック量を管理できます。
セキュリティー
ネットワーク分離: セキュリティーを考慮して特別に管理されたネットワークプレーンに機密トラフィックを送信し、テナントまたは顧客間で共有してはならないプライベートデータを分離できます。
クラスターのすべての Pod はクラスター全体のデフォルトネットワークを依然として使用し、クラスター全体での接続性を維持します。すべての Pod には、クラスター全体の Pod ネットワークに割り当てられる eth0
インターフェイスがあります。Pod のインターフェイスは、oc exec -it <pod_name> -- ip a
コマンドを使用して表示できます。Multus CNI を使用するネットワークを追加する場合、それらの名前は net1
、net2
、…、netN
になります。
追加のネットワークを Pod に割り当てるには、インターフェイスの割り当て方法を定義する設定を作成する必要があります。各インターフェイスは、UserDefinedNetwork
カスタムリソース (CR) または NetworkAttachmentDefinition
CR のいずれかを使用して指定します。これらの CR のそれぞれにある CNI 設定は、インターフェイスの作成方法を定義します。
UserDefinedNetwork
CR の作成の詳細は、ユーザー定義ネットワークについて を参照してください。
NetworkAttachmentDefinition CR の作成の詳細は、NetworkAttachmentDefinition を使用したプライマリーネットワークの作成 を参照してください。
18.1.2. OpenShift Container Platform の追加ネットワーク
OpenShift Container Platform は、クラスターに追加のネットワークを作成するために使用する以下の CNI プラグインを提供します。
- bridge: ブリッジベースの追加ネットワークを設定 して、同じホスト上の Pod が相互に、およびホストと通信できるようにします。
- host-device: ホストデバイスの追加ネットワークを設定 して、Pod がホストシステム上の物理イーサネットネットワークデバイスにアクセスできるようにします。
- ipvlan: ipvlan ベースの追加ネットワークを設定 して、macvlan ベースの追加ネットワークと同様に、ホスト上の Pod が他のホストおよび他のホスト上の Pod と通信できるようにします。macvlan ベースの追加のネットワークとは異なり、各 Pod は親の物理ネットワークインターフェイスと同じ MAC アドレスを共有します。
- vlan: VLAN ベースの追加ネットワークを設定 して、VLAN ベースのネットワーク分離と Pod の接続を可能にします。
- macvlan: macvlan ベースの追加ネットワークを設定 して、ホスト上の Pod が物理ネットワークインターフェイスを使用して他のホストおよび他のホスト上の Pod と通信できるようにします。macvlan ベースの追加ネットワークに割り当てられる各 Pod には固有の MAC アドレスが割り当てられます。
- TAP: TAP ベースの追加ネットワークを設定 して、コンテナー namespace 内に TAP デバイスを作成します。TAP デバイスを使用すると、ユーザー空間プログラムがネットワークパケットを送受信できるようになります。
- SR-IOV: SR-IOV ベースの追加ネットワークを設定する ことで、Pod をホストシステム上の SR-IOV 対応ハードウェアの Virtual Function (VF) インターフェイスに割り当てることができます。