10.3. 仮想マシンをプライマリーユーザー定義ネットワークに接続する


OpenShift Container Platform Web コンソールまたは CLI を使用して、仮想マシンを仮想マシンのプライマリーインターフェイス上のユーザー定義ネットワーク (UDN) に接続できます。プライマリーのユーザー定義ネットワークは、指定された namespace 内のデフォルトの Pod ネットワークを置き換えます。Pod ネットワークとは異なり、プロジェクトごとにプライマリー UDN を定義でき、各プロジェクトは特定のサブネットとトポロジーを使用できます。

OpenShift Virtualization は、namespace スコープの UserDefinedNetwork とクラスタースコープの ClusterUserDefinedNetwork カスタムリソース定義 (CRD) をサポートします。

クラスター管理者は、プライマリー UserDefinedNetwork CRD を設定して、ネットワークポリシーを必要とせずに、テナント namespace を他の namespace から分離するテナントネットワークを作成できます。さらに、クラスター管理者は ClusterUserDefinedNetwork CRD を使用して、複数の namespace にわたる共有 OVN ネットワークを作成できます。

注記

ユーザー定義ネットワークで使用する namespace を作成する場合は、k8s.ovn.org/ primary-user-defined-network ラベルを追加する必要があります。

レイヤー 2 トポロジーでは、OVN-Kubernetes はノード間にオーバーレイネットワークを作成します。このオーバーレイネットワークを使用すると、追加の物理ネットワークインフラストラクチャーを設定することなく、さまざまなノード上の仮想マシンを接続できます。

レイヤー 2 トポロジーでは、ライブマイグレーション中に永続的な IP アドレスがクラスターノード間で保持されるため、ネットワークアドレス変換 (NAT) を必要とせずに仮想マシンをシームレスに移行できます。

プライマリー UDN を実装する前に、次の制限を考慮する必要があります。

  • virtctl ssh コマンドを使用して仮想マシンへの SSH アクセスを設定できません。
  • oc port-forward コマンドを使用してポートを仮想マシンに転送できません。
  • ヘッドレスサービスを使用して仮想マシンにアクセスできません。
  • 仮想マシンヘルスチェックを設定するために readiness プローブと liveness プローブを定義できません。
注記

OpenShift Virtualization は現在、セカンダリーユーザー定義ネットワークをサポートしていません。

10.3.1. Web コンソールを使用したプライマリーユーザー定義ネットワークの作成

OpenShift Container Platform Web コンソールを使用して、プライマリー namespace スコープの UserDefinedNetwork またはクラスタースコープの ClusterUserDefinedNetwork CRD を作成できます。UDN は、ネットワークに関連付けられた namespace で作成する Pod と仮想マシンのデフォルトのプライマリーネットワークとして機能します。

10.3.1.1. Web コンソールを使用したユーザー定義ネットワークの namespace の作成

OpenShift Container Platform Web コンソールを使用して、プライマリーユーザー定義ネットワーク (UDN) で使用する namespace を作成できます。

前提条件

  • cluster-admin パーミッションを持つユーザーとして OpenShift Container Platform Web コンソールにログインしている。

手順

  1. Administrator パースペクティブから、Administration Namespaces をクリックします。
  2. Create Namespace をクリックします。
  3. Name フィールドに、namespace の名前を指定します。名前は、小文字の英数字または '-' で構成される必要があり、先頭と末尾は英数字でなければなりません。
  4. Labels フィールドに、k8s.ovn.org/primary-user-defined-network ラベルを追加します。
  5. オプション: namespace を既存のクラスタースコープ UDN で使用する場合は、ClusterUserDefinedNetwork カスタムリソースの spec.namespaceSelector フィールドで定義されている適切なラベルを追加します。
  6. オプション: デフォルトのネットワークポリシーを指定します。
  7. namespace を作成するには、Create をクリックします。

10.3.1.2. Web コンソールを使用したプライマリー namespace スコープのユーザー定義ネットワークの作成

OpenShift Container Platform Web コンソールで UserDefinedNetwork カスタムリソースを作成することにより、プロジェクト namespace に分離されたプライマリーネットワークを作成できます。

前提条件

  • cluster-admin パーミッションのあるユーザーとして OpenShift Container Platform Web コンソールにアクセスできる。
  • namespace を作成し、k8s.ovn.org/primary-user-defined-network ラベルを適用している。詳細は、「Web コンソールを使用したユーザー定義ネットワークの namespace の作成」を参照してください。

手順

  1. Administrator パースペクティブから、Networking UserDefinedNetworks をクリックします。
  2. Create UserDefinedNetwork をクリックします。
  3. Project name リストから、以前に作成した namespace を選択します。
  4. Subnet フィールドに値を指定します。
  5. Create をクリックします。ユーザー定義ネットワークは、この namespace で作成する Pod と仮想マシンのデフォルトのプライマリーネットワークとして機能します。

10.3.1.3. Web コンソールを使用したプライマリークラスタースコープのユーザー定義ネットワークの作成

OpenShift Container Platform Web コンソールで ClusterUserDefinedNetwork カスタムリソースを作成することで、複数の namespace を同じプライマリーユーザー定義ネットワーク (UDN) に接続できます。

前提条件

  • cluster-admin パーミッションのあるユーザーとして OpenShift Container Platform Web コンソールにアクセスできる。

手順

  1. Administrator パースペクティブから、Networking UserDefinedNetworks をクリックします。
  2. Create リストから、ClusterUserDefinedNetwork を選択します。
  3. Name フィールドで、クラスタースコープの UDN の名前を指定します。
  4. Subnet フィールドに値を指定します。
  5. Project(s) Match Labels フィールドに適切なラベルを追加して、クラスター UDN が適用される namespace を選択します。
  6. Create をクリックします。クラスタースコープの UDN は、ステップ 5 で指定したラベルが含まれる namespace にある Pod および仮想マシンのデフォルトのプライマリーネットワークとして機能します。

10.3.2. CLI を使用したプライマリーユーザー定義ネットワークの作成

CLI を使用して、プライマリー UserDefinedNetwork または ClusterUserDefinedNetwork CRD を作成できます。

10.3.2.1. CLI を使用したユーザー定義ネットワークの namespace の作成

CLI を使用して、プライマリーユーザー定義ネットワーク (UDN) で使用する namespace を作成できます。

前提条件

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

手順

  1. 次の例のような YAML ファイルとして Namespace オブジェクトを作成します。

    Copy to Clipboard Toggle word wrap
    apiVersion: v1
    kind: Namespace
    metadata:
      name: udn_namespace
      labels:
        k8s.ovn.org/primary-user-defined-network: "" 
    1
    
    # ...
    1
    namespace を UDN に関連付けるには、このラベルが必要です。namespace を既存のクラスター UDN で使用する場合は、ClusterUserDefinedNetwork カスタムリソースの spec.namespaceSelector フィールドで定義されている適切なラベルも追加する必要があります。
  2. 次のコマンドを実行して、Namespace マニフェストを適用します。

    Copy to Clipboard Toggle word wrap
    oc apply -f <filename>.yaml

10.3.2.2. CLI を使用したプライマリー namespace スコープのユーザー定義ネットワークの作成

CLI を使用して、プロジェクト namespace に分離されたプライマリーネットワークを作成できます。仮想マシンライブマイグレーションのサポートを確保にするには、OVN-Kubernetes レイヤー 2 トポロジーを使用し、ユーザー定義ネットワーク (UDN) 設定で永続的な IP アドレスの割り当てを有効にする必要があります。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • namespace を作成し、k8s.ovn.org/primary-user-defined-network ラベルを適用している。

手順

  1. カスタムネットワーク設定を指定するには、UserDefinedNetwork オブジェクトを作成します。

    UserDefinedNetwork マニフェストの例

    Copy to Clipboard Toggle word wrap
    apiVersion: k8s.ovn.org/v1
    kind: UserDefinedNetwork
    metadata:
      name: udn-l2-net 
    1
    
      namespace: my-namespace 
    2
    
    spec:
      topology: Layer2 
    3
    
      layer2:
        role: Primary 
    4
    
        subnets:
          - "10.0.0.0/24"
          - "2001:db8::/60"
      ipam:
        lifecycle: Persistent 
    5

    1
    UserDefinedNetwork カスタムリソースの名前を指定します。
    2
    仮想マシンが配置されている namespace を指定します。namespace には k8s.ovn.org/primary-user-defined-network ラベルが必要です。namespace として defaultopenshift-* namespace は使用できません。また Cluster Network Operator (CNO) によって定義されたグローバル namespace と同じにすることはできません。
    3
    ネットワークのトポロジー設定を指定します。必要な値は Layer2 です。レイヤー 2 トポロジーは、すべてのノードで共有される論理スイッチを作成します。
    4
    UDN がプライマリーかセカンダリーかを指定します。OpenShift Virtualization は Primary ロールのみをサポートします。これは、UDN が仮想マシンのプライマリーネットワークとして機能し、すべてのデフォルトトラフィックがこのネットワークを通過することを意味します。
    5
    仮想ワークロードが再起動および移行後も、同じ IP アドレスが使用されるように指定します。ipam.lifecycle: Persistent が指定されている場合は、spec.layer2.subnets フィールドが必須です。
  2. 次のコマンドを実行して、UserDefinedNetwork マニフェストを適用します。

    Copy to Clipboard Toggle word wrap
    $ oc apply -f --validate=true <filename>.yaml

10.3.2.3. CLI を使用したプライマリークラスタースコープのユーザー定義ネットワークの作成

CLI を使用して、複数の namespace を同じプライマリーユーザー定義ネットワーク (UDN) に接続して、ネイティブテナント分離を実現できます。

前提条件

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

手順

  1. カスタムネットワーク設定を指定するには、ClusterUserDefinedNetwork オブジェクトを作成します。

    ClusterUserDefinedNetwork マニフェストの例

    Copy to Clipboard Toggle word wrap
    kind: ClusterUserDefinedNetwork
    metadata:
      name: cudn-l2-net 
    1
    
    spec:
      namespaceSelector: 
    2
    
        matchExpressions: 
    3
    
        - key: kubernetes.io/metadata.name
          operator: In 
    4
    
          values: ["red-namespace", "blue-namespace"]
      network:
        topology: Layer2 
    5
    
        layer2:
          role: Primary 
    6
    
          ipam:
            lifecycle: Persistent
          subnets:
            - 203.203.0.0/16

    1
    ClusterUserDefinedNetwork カスタムリソースの名前を指定します。
    2
    クラスター UDN が適用される namespace のセットを指定します。namespace セレクターは、defaultopenshift-* namespace、または Cluster Network Operator (CNO) によって定義されたグローバル namespace を参照できません。
    3
    セレクターのタイプを指定します。この例では、matchExpressions セレクターは、kubernetes.io/metadata.name ラベルと、値が red-namespace または blue-namespace のオブジェクトを選択します。
    4
    Operator の種類を指定します。可能な値は InNotInExists です。
    5
    ネットワークのトポロジー設定を指定します。必要な値は Layer2 です。レイヤー 2 トポロジーは、すべてのノードで共有される論理スイッチを作成します。
    6
    UDN がプライマリーかセカンダリーかを指定します。OpenShift Virtualization は Primary ロールのみをサポートします。これは、UDN が仮想マシンのプライマリーネットワークとして機能し、すべてのデフォルトトラフィックがこのネットワークを通過することを意味します。
  2. 次のコマンドを実行して、ClusterUserDefinedNetwork マニフェストを適用します。

    Copy to Clipboard Toggle word wrap
    $ oc apply -f --validate=true <filename>.yaml

10.3.3. CLI を使用して仮想マシンをプライマリーユーザー定義ネットワークにアタッチする

Pod ネットワークの割り当てを要求し、インターフェイスバインディングを設定することで、仮想マシン (VM) をプライマリーユーザー定義ネットワーク (UDN) に接続できます。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次の例のように、VirtualMachine マニフェストを編集して UDN インターフェイスの詳細を追加します。

    VirtualMachine マニフェストの例

    Copy to Clipboard Toggle word wrap
    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: my-namespace 
    1
    
    spec:
      template:
        spec:
          domain:
            devices:
              interfaces:
                - name: udn-l2-net 
    2
    
                  binding:
                    name: l2bridge 
    3
    
    # ...
          networks:
          - name: udn-l2-net 
    4
    
            pod: {}
    # ...

    1
    仮想マシンが配置されている namespace。この値は、UDN が定義されている namespace と一致する必要があります。
    2
    ユーザー定義ネットワークインターフェイスの名前。
    3
    インターフェイスを仮想マシンに接続するために使用されるバインディングプラグインの名前。必要な値は l2bridge です。
    4
    ネットワークの名前。これは、spec.template.spec.domain.devices.interfaces.name フィールドの値と一致する必要があります。
  2. 次のコマンドを実行して、VirtualMachine マニフェストを適用します。

    Copy to Clipboard Toggle word wrap
    $ oc apply -f <filename>.yaml

10.3.4. 関連情報

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.