8.8. OVN-Kubernetes セカンダリーネットワークへの仮想マシンの接続


仮想マシン (VM) を OVN-Kubernetes セカンダリーネットワークに接続できます。OpenShift Virtualization は、OVN-Kubernetes の layer2 および localnet トポロジーをサポートしています。

  • layer2 トポロジーは、クラスター全体の論理スイッチによってワークロードを接続します。OVN-Kubernetes Container Network Interface (CNI) プラグインは、Geneve (Generic Network Virtualization Encapsulation) プロトコルを使用して、ノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。
  • localnet トポロジーは、セカンダリーネットワークを物理アンダーレイに接続します。これにより、east-west クラスタートラフィックとクラスター外で実行されているサービスへのアクセスの両方が可能になります。ただし、クラスターノード上の基盤となる Open vSwitch (OVS) システムの追加設定が必要です。
注記

OVN-Kubernetes セカンダリーネットワークは、マルチネットワークポリシー API と互換性があります。これにより、仮想マシンとの間のトラフィックフローの制御に MultiNetworkPolicy カスタムリソース定義 (CRD) を使用できます。ipBlock 属性を使用して、特定の CIDR ブロックに対するネットワークポリシーの受信および送信ルールを定義できます。

OVN-Kubernetes セカンダリーネットワークを設定し、そのネットワークに仮想マシンを接続するには、次の手順を実行します。

  1. ネットワークアタッチメント定義 (NAD) を作成して、OVN-Kubernetes セカンダリーネットワークの設定 を行います。

    注記

    localnet トポロジーの場合、NAD を作成する前に NodeNetworkConfigurationPolicy オブジェクトを作成して OVS ブリッジを設定 する必要があります。

  2. ネットワークの詳細を仮想マシン仕様に追加して、仮想マシンを OVN-Kubernetes セカンダリーネットワークに接続 します。

8.8.1. OVN-Kubernetes NAD の作成

OpenShift Container Platform Web コンソールまたは CLI を使用して、OVN-Kubernetes ネットワークアタッチメント定義 (NAD) を作成できます。

注記

仮想マシンのネットワークアタッチメント定義で spec.config.ipam.subnet 属性を指定して IP アドレス管理 (IPAM) を設定することはサポートされていません。

8.8.1.1. CLI を使用してレイヤー 2 トポロジーの NAD を作成する

Pod をレイヤー 2 オーバーレイネットワークに接続する方法を説明するネットワーク接続定義 (NAD) を作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 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 アドレスを設定する必要があります。

  2. マニフェストを適用します。

    $ oc apply -f <filename>.yaml

8.8.1.2. CLI を使用してローカルネットトポロジーの NAD を作成する

Pod を基盤となる物理ネットワークに接続する方法を説明するネットワーク接続定義 (NAD) を作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • Kubernetes NMState Operator がインストールされている。

手順

  1. NodeNetworkConfigurationPolicy オブジェクトを作成して、OVN-Kubernetes セカンダリーネットワークを Open vSwitch (OVS) ブリッジにマッピングします。

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: mapping 1
    spec:
      nodeSelector:
        node-role.kubernetes.io/worker: '' 2
      desiredState:
        ovn:
          bridge-mappings:
          - localnet: localnet-network 3
            bridge: br-ex 4
            state: present 5
    1
    設定オブジェクトの名前。
    2
    ノードネットワーク設定ポリシーを適用するノードを指定します。推奨されるノードセレクター値は node-role.kubernetes.io/worker: '' です。
    3
    トラフィックを OVS ブリッジに転送する追加ネットワークの名前。この属性は、OVN-Kubernetes 追加ネットワークを定義する NetworkAttachmentDefinition オブジェクトの spec.config.name フィールドの値と一致する必要があります。
    4
    ノード上の OVS ブリッジの名前。state 属性が present の場合、この値は必須です。
    5
    マッピングの状態。マッピングを追加するには present に、マッピングを削除するには absent にする必要があります。デフォルト値は present です。
    注記

    OpenShift Virtualization は、Linux ブリッジボンディングモード 0、5、および 6 をサポートしていません。詳細は、Which bonding modes work when used with a bridge that virtual machine guests or containers connect to? を参照してください。

  2. 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 フィールドの値。
  3. マニフェストを適用します。

    $ oc apply -f <filename>.yaml

8.8.1.3. Web コンソールを使用してレイヤー 2 トポロジーの NAD を作成する

Pod をレイヤー 2 オーバーレイネットワークに接続する方法を記述したネットワーク接続定義 (NAD) を作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてクラスターにアクセスできる。

手順

  1. Web コンソールで、Networking NetworkAttachmentDefinitions に移動します。
  2. Create Network Attachment Definition をクリックします。ネットワーク接続定義は、それを使用する Pod または仮想マシンと同じ namespace にある必要があります。
  3. 一意の Name およびオプションの Description を入力します。
  4. Network Type リストで OVN Kubernetes L2 overlay network を選択します。
  5. Create をクリックします。

8.8.1.4. Web コンソールを使用してローカルネットトポロジーの NAD を作成する

OpenShift Container Platform Web コンソールを使用してネットワーク接続定義 (NAD) を作成し、ワークロードを物理ネットワークに接続できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてクラスターにアクセスできる。
  • nmstate を使用して、ローカルネットから OVS ブリッジへのマッピングを設定します。

手順

  1. Web コンソールで、Networking NetworkAttachmentDefinitions に移動します。
  2. Create Network Attachment Definition をクリックします。ネットワーク接続定義は、それを使用する Pod または仮想マシンと同じ namespace にある必要があります。
  3. 一意の Name およびオプションの Description を入力します。
  4. Network Type リストで OVN Kubernetes secondary localnet network を選択します。
  5. Bridge mapping フィールドに、事前に設定されたローカルネット識別子の名前を入力します。
  6. オプション: MTU を指定した値に明示的に設定できます。デフォルト値はカーネルにより選択されます。
  7. オプション: VLAN 内のトラフィックをカプセル化します。デフォルト値は none です。
  8. 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) がインストールされている。

手順

  1. 次の例のように、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
          nodeSelector:
            node-role.kubernetes.io/worker: '' 4
    # ...
    1
    OVN-Kubernetes セカンダリーインターフェイスの名前。
    2
    ネットワークの名前。これは、spec.template.spec.domain.devices.interfaces.name フィールドの値と一致する必要があります。
    3
    NetworkAttachmentDefinition オブジェクトの名前。
    4
    仮想マシンをスケジュールできるノードを指定します。推奨されるノードセレクター値は node-role.kubernetes.io/worker: '' です。
  2. VirtualMachine マニフェストを適用します。

    $ oc apply -f <filename>.yaml
  3. オプション: 実行中の仮想マシンを編集している場合は、変更を有効にするためにこれを再起動する必要があります。

8.8.3. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.