第11章 ネットワーク
11.1. ネットワークの概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Virtualization は、カスタムリソースおよびプラグインを使用して高度なネットワーク機能を提供します。仮想マシン (VM) は、OpenShift Container Platform のネットワークおよびエコシステムと統合されています。
シングルスタック IPv6 クラスターに対する OpenShift Virtualization のサポートは、OVN-Kubernetes localnet および Linux ブリッジ Container Network Interface (CNI) プラグインに限定されています。
シングルスタック IPv6 クラスターへの OpenShift Virtualization のデプロイは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の図は、OpenShift Virtualization の一般的なネットワーク設定を示しています。他の設定も可能です。
図11.1 OpenShift Virtualization ネットワークの概要
				
				 Pod と仮想マシンは同じネットワークインフラストラクチャー上で実行するため、コンテナー化されたワークロードと仮想化されたワークロードを簡単に接続できます。
			
				
				 仮想マシンをデフォルトの Pod ネットワークおよび任意の数のセカンダリーネットワークに接続できます。
			
				
				 デフォルトの Pod ネットワークは、すべてのメンバー間の接続、サービス抽象化、IP 管理、マイクロセグメンテーション、およびその他の機能を提供します。
			
				
				 Multus は、互換性のある他の CNI プラグインを使用して、Pod または仮想マシンが追加のネットワークインターフェイスに接続できるようにする "メタ" CNI プラグインです。
			
				
				 デフォルトの Pod ネットワークはオーバーレイベースであり、基盤となるマシンネットワークを介してトンネリングされます。
			
				
				 マシンネットワークは、選択したネットワークインターフェイスコントローラー (NIC) のセットを介して定義できます。
			
				
				 セカンダリー仮想マシンネットワークは通常、VLAN カプセル化の有無にかかわらず、物理ネットワークに直接ブリッジされます。セカンダリーネットワーク用の仮想オーバーレイネットワークを作成することも可能です。
			
仮想マシンをアンダーレイネットワークに直接接続することは、Red Hat OpenShift Service on AWS、Azure for OpenShift Container Platform、または Oracle® Cloud Infrastructure (OCI) ではサポートされていません。
					パブリッククラウドでは、layer2 トポロジーを使用して仮想マシンをユーザー定義ネットワークに接続することを推奨します。
				
				
				 セカンダリー仮想マシンネットワークは、図 1 に示すように専用の NIC セットで定義することも、マシンネットワークを使用することもできます。
			
11.1.1. OpenShift Virtualization ネットワークの用語集 リンクのコピーリンクがクリップボードにコピーされました!
以下の用語は、OpenShift Virtualization ドキュメント全体で使用されています。
- Container Network Interface (CNI)
 - コンテナーのネットワーク接続に重点を置く Cloud Native Computing Foundation プロジェクト。OpenShift Virtualization は CNI プラグインを使用して基本的な Kubernetes ネットワーク機能を強化します。
 - Multus
 - 複数の CNI の存在を可能にし、Pod または仮想マシンが必要なインターフェイスを使用できるようにする "メタ" CNI プラグイン。
 - カスタムリソース定義 (CRD)
 - カスタムリソースの定義を可能にする Kubernetes API リソース、または CRD API リソースを使用して定義されるオブジェクト。
 - Network Attachment Definition (NAD)
 - Multus プロジェクトによって導入された CRD。Pod、仮想マシン、および仮想マシンインスタンスを 1 つ以上のネットワークに接続できるようにします。
 - UserDefinedNetwork (UDN)
 - ユーザー定義ネットワーク API によって導入された namespace スコープの CRD。これを使用して、テナント namespace を他の namespace から分離するテナントネットワークを作成できます。
 - ClusterUserDefinedNetwork (CUDN)
 - ユーザー定義ネットワーク API によって導入されたクラスタースコープの CRD。これは、クラスター管理者が複数の namespace 全体で共有ネットワークを作成するために使用できます。
 - Node Network Configuration Policy (NNCP)
 - 
								nmstate プロジェクトによって導入された CRD。ノード上で要求されるネットワーク設定を表します。
NodeNetworkConfigurationPolicyマニフェストをクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。 
11.1.2. デフォルトの Pod ネットワークの使用 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンをデフォルトの Pod ネットワークに接続する
 - 各仮想マシンは、デフォルトの内部 Pod ネットワークにデフォルトで接続されます。仮想マシン仕様を編集することで、ネットワークインターフェイスを追加または削除できます。
 - 仮想マシンをサービスとして公開する
 - 
								
Serviceオブジェクトを作成することで、クラスター内またはクラスター外に仮想マシンを公開できます。オンプレミスクラスターの場合、MetalLB Operator を使用して負荷分散サービスを設定できます。OpenShift Container Platform Web コンソールまたは CLI を使用して、MetalLB Operator をインストール できます。 
11.1.3. プライマリーユーザー定義ネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンをプライマリーユーザー定義ネットワークに接続する
 仮想マシン (VM) を、仮想マシンのプライマリーインターフェイス上のユーザー定義ネットワーク (UDN) に接続できます。プライマリー UDN は、デフォルトの Pod ネットワークを置き換えて、選択した namespace 内の Pod と仮想マシンを接続します。
クラスター管理者は、プライマリー
UserDefinedNetworkCRD を設定して、ネットワークポリシーを必要とせずに、テナント namespace を他の namespace から分離するテナントネットワークを作成できます。さらに、クラスター管理者はClusterUserDefinedNetworkCRD を使用して、複数の namespace にわたって共有 OVNlayer2ネットワークを作成できます。layer2オーバーレイトポロジーを使用したユーザー定義ネットワークは、仮想マシンのワークロードに役立ち、物理ネットワークアクセスが制限されている環境 (例: パブリッククラウド) では、セカンダリーネットワークの適切な代替手段となります。layer2トポロジーにより、ネットワークアドレス変換 (NAT) を必要とせずに仮想マシンをシームレスに移行できるほか、再起動後やライブマイグレーション中に保持される永続的な IP アドレスも提供されます。
11.1.4. 仮想マシンのセカンダリーネットワークインターフェイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Linux ブリッジ、SR-IOV、OVN-Kubernetes CNI プラグインを使用して、仮想マシンをセカンダリーネットワークに接続できます。仮想マシン仕様では、複数のセカンダリーネットワークとインターフェイスをリストできます。セカンダリーネットワークインターフェイスに接続する場合、仮想マシン仕様でプライマリー Pod ネットワークを指定する必要はありません。
- OVN-Kubernetes セカンダリーネットワークへの仮想マシンの接続
 仮想マシンを OVN-Kubernetes セカンダリーネットワークに接続できます。OpenShift Virtualization は、OVN-Kubernetes の
layer2およびlocalnetトポロジーをサポートしています。localnetトポロジーは、VLAN カプセル化の有無にかかわらず、基盤となる物理ネットワークに仮想マシンを公開する方法として推奨されます。- 
										
layer2トポロジーは、クラスター全体の論理スイッチによってワークロードを接続します。OVN-Kubernetes CNI プラグインは、Geneve (Generic Network Virtualization Encapsulation) プロトコルを使用して、ノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。 - 
										
localnetトポロジーは、セカンダリーネットワークを物理アンダーレイに接続します。これにより、east-west クラスタートラフィックとクラスター外で実行されているサービスへのアクセスの両方が可能になります。ただし、クラスターノード上の基盤となる Open vSwitch (OVS) システムの追加設定が必要です。 
OVN-Kubernetes セカンダリーネットワークを設定し、そのネットワークに仮想マシンを接続するには、次の手順を実行します。
OVN-Kubernetes ネットワークトポロジーに基づいて、適切なオプションを選択します。
- ネットワークアタッチメント定義 (NAD) を作成して、OVN-Kubernetes レイヤー 2 セカンダリーネットワークを設定します。
 - 
												
ClusterUserDefinedNetwork(CUDN) CR を作成して、OVN-Kubernetes localnet セカンダリーネットワークを設定します。 
OVN-Kubernetes ネットワークトポロジーに基づいて、適切なオプションを選択します。
- 仮想マシン仕様にネットワークの詳細を追加して、仮想マシンを OVN-Kubernetes レイヤー 2 セカンダリーネットワークに接続します。
 - 仮想マシン仕様にネットワークの詳細を追加して、仮想マシンを OVN-Kubernetes localnet セカンダリーネットワークに接続します。
 
- 
										
 
- 仮想マシンの SR-IOV ネットワークへの接続
 高帯域幅または低レイテンシーを必要とするアプリケーション向けに、ベアメタルまたは Red Hat OpenStack Platform (RHOSP) インフラストラクチャーにインストールされた OpenShift Container Platform クラスター上の追加ネットワークで、Single Root I/O Virtualization (SR-IOV) ネットワークデバイスを使用できます。
SR-IOV ネットワークデバイスとネットワークアタッチメントを管理するには、クラスターに SR-IOV Network Operator をインストール する必要があります。
次の手順を実行すると、仮想マシンを SR-IOV ネットワークに接続できます。
- 
										
SriovNetworkNodePolicyCRD を作成して、SR-IOV ネットワークデバイスを設定 します。 - 
										
SriovNetworkオブジェクトを作成して、SR-IOV ネットワークを設定 します。 - 仮想マシン設定にネットワークの詳細を追加して、仮想マシンを SR-IOV ブリッジネットワークに接続 します。
 
- 
										
 
- Linux ブリッジネットワークへの仮想マシンの接続
 Kubernetes NMState Operator をインストール して、セカンダリーネットワークの Linux ブリッジ、VLAN、およびボンディングを設定します。基盤となる物理ネットワークに仮想マシンを接続する方法としては、OVN-Kubernetes の
localnetトポロジーが推奨されます。ただし、OpenShift Virtualization は Linux ブリッジネットワークもサポートしています。注記Linux ブリッジネットワークを使用する場合、デフォルトのマシンネットワークに直接接続することはできません。
次の手順を実行すると、Linux ブリッジネットワークを作成し、そのネットワークに仮想マシンを接続できます。
- 
										
NodeNetworkConfigurationPolicyカスタムリソース定義 (CRD) を作成して、Linux ブリッジネットワークデバイスを設定 します。 - 
										
NetworkAttachmentDefinitionCRD を作成して、Linux ブリッジネットワークを設定 します。 - 仮想マシン設定にネットワークの詳細を追加して、仮想マシンを Linux ブリッジネットワークに接続 します。
 
- 
										
 
- セカンダリーネットワークインターフェースのホットプラグ
 - 仮想マシンを停止せずに、セカンダリーネットワークインターフェイスを追加または削除できます。OpenShift Virtualization は、ブリッジバインディングおよび VirtIO デバイスドライバーを使用するセカンダリーインターフェイスのホットプラグとホットアンプラグをサポートしています。OpenShift Virtualization は、SR-IOV バインディングを使用するセカンダリーインターフェイスのホットプラグもサポートしています。
 
- SR-IOV での DPDK の使用
 - Data Plane Development Kit (DPDK) は、高速パケット処理用のライブラリーとドライバーのセットを提供するものです。SR-IOV ネットワーク上で DPDK ワークロードを実行するようにクラスターと仮想マシンを設定できます。
 - ライブマイグレーション用の専用ネットワークの設定
 - ライブマイグレーション専用の Multus ネットワーク を設定できます。専用ネットワークは、ライブマイグレーション中のテナントワークロードに対するネットワークの飽和状態の影響を最小限に抑えます。
 
- クラスター FQDN を使用した仮想マシンへのアクセス
 - 完全修飾ドメイン名 (FQDN) を使用して、クラスターの外部からセカンダリーネットワークインターフェイスに接続されている仮想マシンにアクセスできます。
 - IP アドレスの設定と表示
 - 仮想マシンを作成するときに、セカンダリーネットワークインターフェイスの IP アドレスを設定できます。IP アドレスは、cloud-init でプロビジョニングされます。仮想マシンの IP アドレスは、OpenShift Container Platform Web コンソールまたはコマンドラインを使用して表示できます。ネットワーク情報は QEMU ゲストエージェントによって収集されます。
 
11.1.4.1. Linux ブリッジ CNI と OVN-Kubernetes localnet トポロジーの比較 リンクのコピーリンクがクリップボードにコピーされました!
						次の表は、Linux ブリッジ CNI を使用する場合と OVN-Kubernetes プラグインの localnet トポロジーを使用する場合に利用できる機能の比較を示しています。
					
| 機能 | Linux ブリッジ CNI で利用可能 | OVN-Kubernetes localnet で利用可能 | 
|---|---|---|
|   アンダーレイネイティブネットワークへのレイヤー 2 アクセス  |   セカンダリーネットワークインターフェイスコントローラー (NIC) のみ  |   はい  | 
|   アンダーレイ VLAN へのレイヤー 2 アクセス  |   はい  |   はい  | 
|   ネットワークポリシー  |   いいえ  |   はい  | 
|   管理された IP プール  |   いいえ  |   はい  | 
|   MAC スプーフィングフィルタリング  |   はい  |   はい  | 
11.1.5. OpenShift Service Mesh との統合 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンのサービスメッシュへの接続
 - OpenShift Virtualization は OpenShift Service Mesh と統合されています。Pod と仮想マシン間のトラフィックを監視、視覚化、制御できます。
 
11.1.6. MAC アドレスプールの管理 リンクのコピーリンクがクリップボードにコピーされました!
- ネットワークインターフェイスの MAC アドレスプールの管理
 - KubeMacPool コンポーネントは、共有 MAC アドレスプールから仮想マシンネットワークインターフェイスの MAC アドレスを割り当てます。これにより、各ネットワークインターフェイスに一意の MAC アドレスが確実に割り当てられます。その仮想マシンから作成された仮想マシンインスタンスは、再起動後も割り当てられた MAC アドレスを保持します。
 
11.1.7. SSH アクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
- 仮想マシンへの SSH アクセスの設定
 次の方法を使用して、仮想マシンへの SSH アクセスを設定できます。
SSH 鍵ペアを作成し、公開鍵を仮想マシンに追加し、秘密鍵を使用して
virtctl sshコマンドを実行して仮想マシンに接続します。cloud-init データソースを使用して設定できるゲストオペレーティングシステムを使用して、実行時または最初の起動時に Red Hat Enterprise Linux (RHEL) 9 仮想マシンに SSH 公開鍵を追加できます。
virtctl port-fowardコマンドを.ssh/configファイルに追加し、OpenSSH を使用して仮想マシンに接続します。サービスを作成し、そのサービスを仮想マシンに関連付け、サービスによって公開されている IP アドレスとポートに接続します。
セカンダリーネットワークを設定し、仮想マシンをセカンダリーネットワークインターフェイスに接続し、割り当てられた IP アドレスに接続します。