8.8. OVN-Kubernetes セカンダリーネットワークへの仮想マシンの接続
仮想マシンを Open Virtual Network (OVN)-Kubernetes セカンダリーネットワークに接続できます。OpenShift Virtualization は、OVN-Kubernetes のレイヤー 2 およびローカルネットトポロジーをサポートします。
- レイヤー 2 トポロジーは、クラスター全体の論理スイッチでワークロードを接続します。OVN-Kubernetes Container Network Interface (CNI) プラグインは、Geneve (Generic Network Virtualization Encapsulation) プロトコルを使用してノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。
- ローカルネットトポロジーは、セカンダリーネットワークを物理アンダーレイに接続します。これにより、east-west クラスタートラフィックとクラスター外で実行されているサービスへのアクセスの両方が可能になります。ただし、クラスターノード上の基盤となる Open vSwitch (OVS) システムの追加設定が必要です。
OVN-Kubernetes セカンダリーネットワークは、マルチネットワークポリシー API と互換性があります。これにより、仮想マシンとの間のトラフィックフローの制御に MultiNetworkPolicy
カスタムリソース定義 (CRD) を使用できます。ipBlock
属性を使用して、特定の CIDR ブロックに対するネットワークポリシーの受信および送信ルールを定義できます。
OVN-Kubernetes セカンダリーネットワークを設定し、そのネットワークに仮想マシンを接続するには、次の手順を実行します。
ネットワークアタッチメント定義 (NAD) を作成して、OVN-Kubernetes セカンダリーネットワークの設定 を行います。
注記ローカルネットトポロジーの場合は、NAD を作成する前に
NodeNetworkConfigurationPolicy
オブジェクトを作成して OVS ブリッジを設定する 必要があります。- ネットワークの詳細を仮想マシン仕様に追加して、仮想マシンを OVN-Kubernetes セカンダリーネットワークに接続 します。
8.8.1. OVN-Kubernetes NAD の作成
OpenShift Container Platform Web コンソールまたは CLI を使用して、OVN-Kubernetes レイヤー 2 またはローカルネットネットワーク接続定義 (NAD) を作成できます。
仮想マシンのネットワークアタッチメント定義での IP アドレス管理 (IPAM) の設定はサポートされていません。
8.8.1.1. CLI を使用してレイヤー 2 トポロジーの NAD を作成する
Pod をレイヤー 2 オーバーレイネットワークに接続する方法を説明するネットワーク接続定義 (NAD) を作成できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
NetworkAttachmentDefinition
オブジェクトを作成します。apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: l2-network namespace: my-namespace spec: config: |2 { "cniVersion": "0.3.1", 1 "name": "my-namespace-l2-network", 2 "type": "ovn-k8s-cni-overlay", 3 "topology":"layer2", 4 "mtu": 1300, 5 "netAttachDefName": "my-namespace/l2-network" 6 }
- 1
- CNI 仕様のバージョン。必要な値は
0.3.1
です。 - 2
- ネットワークの名前。この属性には namespace がありません。たとえば、
l2-network
という名前のネットワークを、2 つの異なる namespace に存在する 2 つの異なるNetworkAttachmentDefinition
オブジェクトから参照させることができます。この機能は、異なる namespace の仮想マシンを接続する場合に役立ちます。 - 3
- 設定する CNI プラグインの名前。必要な値は
ovn-k8s-cni-overlay
です。 - 4
- ネットワークのトポロジー設定。必要な値は
layer2
です。 - 5
- オプション: 最大伝送単位 (MTU) の値。デフォルト値はカーネルによって自動的に設定されます。
- 6
NetworkAttachmentDefinition
オブジェクトのmetadata
スタンザ内のnamespace
およびname
フィールドの値。
注記上記の例では、サブネットを定義せずにクラスター全体のオーバーレイを設定します。これは、ネットワークを実装する論理スイッチがレイヤー 2 通信のみを提供することを意味します。仮想マシンの作成時に、静的 IP アドレスを設定するか、動的 IP アドレス用にネットワーク上に DHCP サーバーをデプロイすることによって、IP アドレスを設定する必要があります。
マニフェストを適用します。
$ oc apply -f <filename>.yaml
8.8.1.2. CLI を使用してローカルネットトポロジーの NAD を作成する
Pod を基盤となる物理ネットワークに接続する方法を説明するネットワーク接続定義 (NAD) を作成できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。 - Kubernetes NMState Operator がインストールされている。
-
OVN-Kubernetes セカンダリーネットワークを Open vSwitch (OVS) ブリッジにマップするための
NodeNetworkConfigurationPolicy
オブジェクトを作成している。
手順
NetworkAttachmentDefinition
オブジェクトを作成します。apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: localnet-network namespace: default spec: config: |2 { "cniVersion": "0.3.1", 1 "name": "localnet-network", 2 "type": "ovn-k8s-cni-overlay", 3 "topology": "localnet", 4 "netAttachDefName": "default/localnet-network" 5 }
- 1
- CNI 仕様のバージョン。必要な値は
0.3.1
です。 - 2
- ネットワークの名前。この属性は、OVS ブリッジマッピングを定義する
NodeNetworkConfigurationPolicy
オブジェクトのspec.desiredState.ovn.bridge-mappings.localnet
フィールドの値と一致する必要があります。 - 3
- 設定する CNI プラグインの名前。必要な値は
ovn-k8s-cni-overlay
です。 - 4
- ネットワークのトポロジー設定。必要な値は
localnet
です。 - 5
NetworkAttachmentDefinition
オブジェクトのmetadata
スタンザ内のnamespace
およびname
フィールドの値。
マニフェストを適用します。
$ oc apply -f <filename>.yaml
8.8.1.3. Web コンソールを使用してレイヤー 2 トポロジーの NAD を作成する
Pod をレイヤー 2 オーバーレイネットワークに接続する方法を記述したネットワーク接続定義 (NAD) を作成できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてクラスターにアクセスできる。
手順
-
Web コンソールで、Networking
NetworkAttachmentDefinitions に移動します。 - Create Network Attachment Definition をクリックします。ネットワーク接続定義は、それを使用する Pod または仮想マシンと同じ namespace にある必要があります。
- 一意の Name およびオプションの Description を入力します。
- Network Type リストで OVN Kubernetes L2 overlay network を選択します。
- Create をクリックします。
8.8.1.4. Web コンソールを使用してローカルネットトポロジーの NAD を作成する
OpenShift Container Platform Web コンソールを使用してネットワーク接続定義 (NAD) を作成し、ワークロードを物理ネットワークに接続できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてクラスターにアクセスできる。 -
nmstate
を使用して、ローカルネットから OVS ブリッジへのマッピングを設定します。
手順
-
Web コンソールで、Networking
NetworkAttachmentDefinitions に移動します。 - Create Network Attachment Definition をクリックします。ネットワーク接続定義は、それを使用する Pod または仮想マシンと同じ namespace にある必要があります。
- 一意の Name およびオプションの Description を入力します。
- Network Type リストで OVN Kubernetes secondary localnet network を選択します。
- Bridge mapping フィールドに、事前に設定されたローカルネット識別子の名前を入力します。
- オプション: MTU を指定した値に明示的に設定できます。デフォルト値はカーネルにより選択されます。
- オプション: VLAN 内のトラフィックをカプセル化します。デフォルト値は none です。
- Create をクリックします。
8.8.2. OVN-Kubernetes セカンダリーネットワークへの仮想マシンの接続
OpenShift Container Platform Web コンソールまたは CLI を使用して、仮想マシンを OVN-Kubernetes セカンダリーネットワークインターフェイスに接続できます。
8.8.2.1. CLI を使用した OVN-Kubernetes セカンダリーネットワークへの仮想マシンの接続
仮想マシン設定にネットワークの詳細を含めることで、仮想マシンを OVN-Kubernetes セカンダリーネットワークに接続できます。
前提条件
-
cluster-admin
権限を持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
次の例のように、
VirtualMachine
マニフェストを編集して OVN-Kubernetes セカンダリーネットワークインターフェイスの詳細を追加します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: vm-server spec: running: true template: spec: domain: devices: interfaces: - name: secondary 1 bridge: {} resources: requests: memory: 1024Mi networks: - name: secondary 2 multus: networkName: <nad_name> 3 # ...
VirtualMachine
マニフェストを適用します。$ oc apply -f <filename>.yaml
- オプション: 実行中の仮想マシンを編集している場合は、変更を有効にするためにこれを再起動する必要があります。