10.10. 仮想マシンを OVN-Kubernetes レイヤー 2 セカンダリーネットワークに接続する
仮想マシンを OVN-Kubernetes のカスタムセカンダリーオーバーレイネットワークに接続できます。レイヤー 2 トポロジーは、クラスター全体の論理スイッチでワークロードを接続します。OVN-Kubernetes Container Network Interface (CNI) プラグインは、Geneve (Generic Network Virtualization Encapsulation) プロトコルを使用して、ノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。
OVN-Kubernetes のセカンダリーネットワークは、マルチネットワークポリシー API と互換性があり、仮想マシンとの間のトラフィックフローを制御するための MultiNetworkPolicy カスタムリソース定義 (CRD) を提供します。特定の CIDR ブロックのネットワークポリシーの Ingress および Egress ルールを定義するには、ipBlock 属性を使用する必要があります。仮想化ワークロードには Pod または namespace セレクターは使用できません。
OVN-Kubernetes のレイヤ 2 セカンダリーネットワークを設定し、そのネットワークに仮想マシンを接続するには、次の手順を実行します。
- 二次ネットワークを定義する
- 仮想マシンをセカンダリーネットワークに接続する
仮想マシンのネットワークアタッチメント定義で spec.config.ipam.subnet 属性を指定して IP アドレス管理 (IPAM) を設定することはサポートされていません。
10.10.1. CLI を使用してレイヤー 2 トポロジーの NAD を作成する リンクのコピーリンクがクリップボードにコピーされました!
Pod をレイヤー 2 オーバーレイネットワークに接続する方法を説明する Network Attachment Definition (NAD) を作成できます。
前提条件
-
cluster-admin権限を持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
NetworkAttachmentDefinitionオブジェクトを作成します。apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: l2-network namespace: my-namespace spec: config: |- { "cniVersion": "0.3.1",1 "name": "my-namespace-l2-network",2 "type": "ovn-k8s-cni-overlay",3 "topology":"layer2",4 "mtu": 1400,5 "netAttachDefName": "my-namespace/l2-network"6 }- 1
- Container Network Interface (CNI) 仕様のバージョン。必要な値は
0.3.1です。 - 2
- ネットワークの名前。この属性には namespace がありません。たとえば、
l2-networkという名前のネットワークを、2 つの異なる namespace に存在する 2 つの異なるNetworkAttachmentDefinitionオブジェクトから参照させることができます。この機能は、異なる namespace の仮想マシンを接続する場合に役立ちます。 - 3
- CNI プラグインの名前。必要な値は
ovn-k8s-cni-overlayです。 - 4
- ネットワークのトポロジー設定。必要な値は
layer2です。 - 5
- オプション: 最大伝送単位 (MTU) の値。この値を設定しなかった場合、Cluster Network Operator (CNO) が、プライマリーネットワークインターフェイスのアンダーレイ MTU、Geneve (Generic Network Virtualization Encapsulation) などの Pod ネットワークのオーバーレイ MTU、および IPsec などの有効な機能のバイト容量の差を計算して、デフォルトの MTU 値を設定します。
- 6
NetworkAttachmentDefinitionオブジェクトのmetadataスタンザ内のnamespaceおよびnameフィールドの値。注記前の例では、サブネットを定義せずにクラスター全体のオーバーレイを設定します。これは、ネットワークを実装する論理スイッチがレイヤー 2 通信のみを提供することを意味します。仮想マシンの作成時に、静的 IP アドレスを設定するか、動的 IP アドレス用にネットワーク上に DHCP サーバーをデプロイすることによって、IP アドレスを設定する必要があります。
次のコマンドを実行してマニフェストを適用します。
$ oc apply -f <filename>.yaml