第10章 ネットワーク
10.1. ネットワークの概要 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) をクラスターネットワークに接続するには、OpenShift Virtualization でデフォルトおよびユーザー定義のネットワークオプションを設定します。
シングルスタック IPv6 クラスターに対する OpenShift Virtualization のサポートは、OVN-Kubernetes localnet および Linux ブリッジ Container Network Interface (CNI) プラグインに限定されています。
シングルスタック IPv6 クラスターへの OpenShift Virtualization のデプロイは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の図は、OpenShift Virtualization の一般的なネットワーク設定を示しています。他の設定も可能です。
図10.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、Google Cloud、または Oracle® Cloud Infrastructure (OCI) ではサポートされていません。
パブリッククラウドでは、layer2 トポロジーを使用して仮想マシンをユーザー定義ネットワークに接続することを推奨します。
セカンダリー仮想マシンネットワークは、図 1 に示すように専用の NIC セット上に定義することも、マシンネットワークを使用することもできます。
10.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 リソースを使用して定義されるオブジェクト。
NetworkAttachmentDefinition- Multus プロジェクトによって導入された CRD。Pod、仮想マシン、および仮想マシンインスタンスを 1 つ以上のネットワークに接続できるようにします。
UserDefinedNetwork- ユーザー定義ネットワーク (UDN) API によって導入された namespace スコープの CRD。これを使用して、テナント namespace を他の namespace から分離するテナントネットワークを作成できます。
ClusterUserDefinedNetwork- ユーザー定義ネットワーク API によって導入されたクラスタースコープの CRD。これは、クラスター管理者が複数の namespace 全体で共有ネットワークを作成するために使用できます。
NodeNetworkConfigurationPolicy-
nmstate プロジェクトによって導入された CRD。ノード上で要求されるネットワーク設定を表します。
NodeNetworkConfigurationPolicyマニフェストをクラスターに適用して、インターフェイスの追加および削除など、ノードネットワーク設定を更新します。
10.1.2. オーバーレイネットワークを管理する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) が標準の OpenShift Container Platform ネットワークモデルを使用して確実に接続できるようにするには、クラスター全体の接続性を確保するために、デフォルトの Pod ネットワークを設定します。
オーバーレイネットワークは、物理ネットワークの上に柔軟なソフトウェア定義の接続レイヤーを提供し、基盤となるハードウェアを変更することなく、ネットワークのセグメンテーション、カスタムルーティング、簡素化された管理などのサービスを可能にします。
- 仮想マシンをデフォルトの Pod ネットワークに接続する
各仮想マシンは、デフォルトの内部 Pod ネットワークにデフォルトで接続されます。仮想マシン仕様を編集することで、ネットワークインターフェイスを追加または削除できます。
ヘッドレスサービスを使用すると、安定した完全修飾ドメイン名 (FQDN) 上のデフォルトの内部 Pod ネットワークに接続されている仮想マシン (VM) にアクセスできます。
- 仮想マシンをカスタムプライマリーオーバーレイネットワークに接続する
ワークロードに対して、分離された柔軟なトラフィックパスを提供するために、マルチネームスペース接続をサポートするプライマリーユーザー定義ネットワーク (UDN) を設定します。
クラスター管理者は、プライマリー
UserDefinedNetworkCRD を設定して、ネットワークポリシーを必要とせずに、テナント namespace を他の namespace から分離するテナントネットワークを作成できます。さらに、クラスター管理者はClusterUserDefinedNetworkCRD を使用して、複数の名前空間にまたがる共有 OVN レイヤ 2 ネットワークを作成できます。レイヤ 2 オーバーレイトポロジーを持つユーザー定義ネットワークは、仮想マシンワークロードに有用であり、パブリッククラウドなど、物理的なネットワークアクセスが制限されている環境におけるセカンダリーネットワークの良い代替手段となります。レイヤー 2 トポロジーにより、ネットワークアドレス変換 (NAT) を必要とせずに仮想マシンをシームレスに移行できるだけでなく、再起動後やライブマイグレーション中にも保持される永続的な IP アドレスも提供されます。
- 仮想マシンをカスタムセカンダリーオーバーレイネットワークに接続する
- レイヤー 2 トポロジーを持つセカンダリー UDN を設定して、異なるノードにまたがる仮想マシングループ間でプライベートな隔離された通信チャネルを作成します。レイヤー 2 トポロジーは、クラスター全体の論理スイッチでワークロードを接続します。OVN-Kubernetes CNI プラグインは、Geneve (Generic Network Virtualization Encapsulation) プロトコルを使用して、ノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。
- 仮想マシンをサービスとして公開することで、外部 Ingress を設定します。
-
Serviceオブジェクトを作成することで、クラスター内またはクラスター外に仮想マシンを公開できます。オンプレミスクラスターの場合、MetalLB Operator を使用して負荷分散サービスを設定できます。MetalLB Operator は、OpenShift Container Platform の Web コンソールまたは CLI を使用してインストールできます。 - サービスメッシュに仮想マシンを追加する
- OpenShift Virtualization は、Red Hat OpenShift Service Mesh と統合されています。IPv4 を使用したデフォルトの Pod ネットワークでは、Pod と仮想マシン間のトラフィックを監視、視覚化、制御できます。
10.1.3. プロバイダーの物理ネットワークに接続する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (仮想マシン) がインターネットや他の物理デバイスにアクセスできるようにするには、ノードネットワークを設定し、セカンダリーネットワークを定義し、仮想マシンをセカンダリーネットワークに接続します。
- Open vSwitch ブリッジを使用して仮想マシンを物理ネットワークに接続する
OVN-Kubernetes のセカンダリーユーザー定義ネットワーク (UDN) を localnet トポロジーで設定することで、仮想マシンを物理ネットワークインフラストラクチャーに接続できます。
localnet トポロジーは、セカンダリーネットワークを物理アンダーレイに接続します。これにより、東西方向のクラスタートラフィックとクラスター外で実行されているサービスへのアクセスが可能になりますが、クラスターノード上の基盤となる Open vSwitch (OVS) ブリッジに追加の設定が必要になります。
クラスター管理者は、以下の手順を使用してローカルネット UDN を設定できます。
- クラスターノード全体にわたって状態駆動型のネットワーク設定を提供する Kubernetes NMState Operator をインストールします。
-
NodeNetworkConfigurationPolicyカスタムリソース (CR) を使用して OVS ブリッジを設定し、ノードに適切なブリッジマッピングを追加します。 -
UDN API の
ClusterUserDefinedNetworkCR を使用して、前の手順で設定した OVS ブリッジを介してワークロードをアンダーレイネットワークに接続します。
- Linux ブリッジを使用して仮想マシンを物理ネットワークに接続する
Kubernetes NMState Operator をインストールして、セカンダリーネットワークの Linux ブリッジ、VLAN、およびボンディングを設定します。基盤となる物理ネットワークに仮想マシンを接続する方法としては、OVN-Kubernetes の
localnetトポロジーが推奨されます。ただし、OpenShift Virtualization は Linux ブリッジネットワークもサポートしています。注記Linux ブリッジネットワークを使用する場合、デフォルトのマシンネットワークに直接接続することはできません。
次の手順を実行すると、Linux ブリッジネットワークを作成し、そのネットワークに仮想マシンを接続できます。
- Linux ブリッジノードネットワーク設定ポリシー (NNCP) を作成して、ノードネットワークを準備します。
- ネットワークアタッチメント定義 (NAD) を作成することで、セカンダリー Linux ブリッジネットワークを定義します。
- 仮想マシンを Linux ブリッジネットワークに接続します。
- 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 ネットワークに接続できます。
-
SriovNetworkNodePolicyCR を作成して、SR-IOV 物理ネットワークデバイスを設定します。 -
SriovNetworkオブジェクトを作成して、SR-IOV セカンダリーネットワークを定義します。 - 仮想マシン設定にネットワークの詳細を含めることで、仮想マシンを SR-IOV ネットワークに接続します。
-
- SR-IOV ハードウェアと DPDK ドライバーを使用して、仮想マシンを物理ネットワークに接続します。
Data Plane Development Kit (DPDK) は、高速パケット処理用のライブラリーとドライバーのセットを提供するものです。以下の手順を実行することで、クラスターと仮想マシンを設定して、SR-IOV ネットワーク上で DPDK ワークロードを実行できます。
- ノードのハードウェアを設定します。
- DPDK 用に仮想マシンの名前空間を設定します。
- DPDK アプリケーションを実行するように、仮想マシンとゲスト OS を設定します。
10.1.3.1. Linux ブリッジ CNI と OVN-Kubernetes localnet トポロジーの比較 リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、OVN-Kubernetes プラグインにおいて、Linux ブリッジ CNI を使用する場合と localnet トポロジーを使用する場合で利用可能な機能を比較したものです。
| 機能 | Linux ブリッジ CNI で利用可能 | OVN-Kubernetes localnet で利用可能 |
|---|---|---|
| アンダーレイネイティブネットワークへのレイヤー 2 アクセス | セカンダリーネットワークインターフェイスコントローラー (NIC) のみ | はい |
| アンダーレイ VLAN へのレイヤー 2 アクセス | はい | はい |
| レイヤー 2 トランクアクセス | はい | いいえ |
| ネットワークポリシー | いいえ | はい |
| MAC スプーフィングフィルタリング | はい | はい (常時オン) |
10.1.4. 仮想マシンネットワークインターフェイス設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) のネットワーク設定を管理し、アプリケーションのダウンタイムを発生させることなく接続性を拡張し、ネットワーク遅延のトラブルシューティングを行い、MAC アドレスプールの定義と管理の自動化、IP アドレスの設定、およびライブマイグレーショントラフィックの分離を行います。
- ホットプラグ対応セカンダリーネットワークインターフェイス
- 仮想マシンを停止せずに、セカンダリーネットワークインターフェイスを追加または削除できます。OpenShift Virtualization は、ブリッジバインディングおよび VirtIO デバイスドライバーを使用するセカンダリーインターフェイスのホットプラグとホットアンプラグをサポートしています。OpenShift Virtualization は、SR-IOV バインディングを使用するセカンダリーインターフェイスのホットプラグもサポートしています。
- 外部 FQDN を使用して仮想マシンにアクセスする
-
完全修飾ドメイン名 (FQDN) を使用して、クラスターの外部からセカンダリーネットワークインターフェイスに接続されている仮想マシン (VM) にアクセスできます。外部 FQDN を使用して仮想マシンに接続するには、DNS サーバーを設定し、クラスター FQDN を取得してから、
sshコマンドを使用して仮想マシンに接続する必要があります。 - 仮想マシンネットワークインターフェイスのリンク状態を管理する
OpenShift Container Platform の Web コンソールまたはコマンドラインを使用して、プライマリーまたはセカンダリー仮想マシンネットワークインターフェイスのリンク状態を管理できます。リンク状態を指定することで、仮想ネットワークインターフェイスコントローラー (vNIC) をネットワークに論理的に接続または切断できます。
注記OpenShift Virtualization は、Single Root I/O Virtualization (SR-IOV) セカンダリーネットワークインターフェイスのリンク状態管理をサポートしておらず、それらのリンク状態は報告されません。
- 仮想マシン IP アドレスの設定と表示
- 仮想マシンを作成する際に、セカンダリーネットワークインターフェイスの IP アドレスを設定できます。IP アドレスは、cloud-init でプロビジョニングされます。仮想マシンの IP アドレスは、OpenShift Container Platform Web コンソールまたはコマンドラインを使用して表示できます。ネットワーク情報は QEMU ゲストエージェントによって収集されます。
- 仮想マシンネットワークインターフェイスの MAC アドレスプールを管理する
- KubeMacPool コンポーネントは、共有 MAC アドレスプールから仮想マシンネットワークインターフェイスの MAC アドレスを割り当てます。これにより、各ネットワークインターフェイスに一意の MAC アドレスが確実に割り当てられます。その仮想マシンから作成された仮想マシンインスタンスは、再起動後も割り当てられた MAC アドレスを保持します。
- ライブマイグレーション専用のネットワークを設定する
- ライブマイグレーション専用の Multus ネットワークを設定できます。専用ネットワークは、ライブマイグレーション中のテナントワークロードに対するネットワークの飽和状態の影響を最小限に抑えます。
10.1.5. 仮想マシンの SSH アクセスを設定する リンクのコピーリンクがクリップボードにコピーされました!
SSH を使用すると、コマンドラインから仮想マシン (VM) に安全にアクセスできます。
SSH 設定を行うには、以下のいずれかの方法を使用してください。
virtctl sshコマンドを使用しますSSH 鍵ペアを作成し、公開鍵を仮想マシンに追加し、秘密鍵を使用して
virtctl sshコマンドを実行して仮想マシンに接続します。cloud-init データソースを使用して設定できるゲストオペレーティングシステムを使用して、実行時または最初の起動時に Red Hat Enterprise Linux (RHEL) 9 仮想マシンに SSH 公開鍵を追加できます。
virtctl port-forwardコマンドを使用します-
virtctl port-fowardコマンドを.ssh/configファイルに追加し、OpenSSH を使用して仮想マシンに接続します。 - サービス
- サービスを作成し、そのサービスを仮想マシンに関連付け、サービスによって公開されている IP アドレスとポートに接続します。
- セカンダリーネットワーク
- セカンダリーネットワークを設定し、仮想マシンをセカンダリーネットワークインターフェイスに接続し、割り当てられた IP アドレスに接続します。