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


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

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

クラスター管理者は、プライマリー UserDefinedNetwork CRD を設定して、ネットワークポリシーを必要とせずにテナント名前空間を他の名前空間から分離するテナントネットワークを作成できます。さらに、クラスター管理者は ClusterUserDefinedNetwork CRD を使用して、複数の名前空間にわたって共有 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 は現在、セカンダリーユーザー定義ネットワークをサポートしていません。

9.3.1. Web コンソールを使用してプライマリーユーザー定義ネットワークを作成する

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

9.3.1.1. Web コンソールを使用してユーザー定義ネットワークの名前空間を作成する

Red Hat OpenShift Service on AWS Web コンソールを使用して、プライマリーユーザー定義ネットワーク (UDN) で使用する名前空間を作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとして、Red Hat OpenShift Service on AWS Web コンソールにログインする。

手順

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

9.3.1.2. Web コンソールを使用してプライマリー名前空間スコープのユーザー定義ネットワークを作成する

Red Hat OpenShift Service on AWS Web コンソールで UserDefinedNetwork カスタムリソースを作成することにより、プロジェクト名前空間に分離されたプライマリーネットワークを作成できます。

前提条件

  • cluster-admin 権限を持つユーザーとして Red Hat OpenShift Service on AWS Web コンソールにアクセスできます。
  • namespace を作成し、k8s.ovn.org/ primary-user-defined-network ラベルを適用しておく。詳細は、Web コンソールを使用してユーザー定義ネットワークの名前空間を作成するを参照してください。

手順

  1. 管理者の 観点から、Networking UserDefinedNetworks をクリックします。
  2. [UserDefinedNetwork の作成] を クリックします。
  3. プロジェクト名 リストから、以前に作成した名前空間を選択します。
  4. サブネット フィールドに値を指定します。
  5. Create をクリックします。ユーザー定義ネットワークは、この名前空間で作成する Pod と仮想マシンのデフォルトのプライマリーネットワークとして機能します。

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

Red Hat OpenShift Service on AWS Web コンソールで ClusterUserDefinedNetwork カスタムリソースを作成することにより、複数の名前空間を同じプライマリーユーザー定義ネットワーク (UDN) に接続できます。

前提条件

  • cluster-admin 権限を持つユーザーとして Red Hat OpenShift Service on AWS Web コンソールにアクセスできます。

手順

  1. 管理者の 観点から、Networking UserDefinedNetworks をクリックします。
  2. [作成] リストから ClusterUserDefinedNetwork を選択します。
  3. [名前] フィールドに、クラスタースコープの UDN の名前を指定します。
  4. サブネット フィールドに値を指定します。
  5. プロジェクトの一致ラベル フィールドで、適切なラベルを追加して、クラスター UDN が適用される名前空間を選択します。
  6. Create をクリックします。クラスタースコープの UDN は、手順 5 で指定したラベルを含む名前空間にある Pod と仮想マシンのデフォルトのプライマリーネットワークとして機能します。

9.3.2. CLI を使用してプライマリーユーザー定義ネットワークを作成する

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

9.3.2.1. CLI を使用してユーザー定義ネットワークの名前空間を作成する

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

前提条件

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

手順

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

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

    oc apply -f <filename>.yaml

9.3.2.2. CLI を使用してプライマリー名前空間スコープのユーザー定義ネットワークを作成する

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

前提条件

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

手順

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

    UserDefinedNetwork マニフェストの例

    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 マニフェストを適用します。

    $ oc apply -f --validate=true <filename>.yaml

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

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

前提条件

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

手順

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

    ClusterUserDefinedNetwork マニフェストの例

    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 マニフェストを適用します。

    $ oc apply -f --validate=true <filename>.yaml

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

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

前提条件

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

手順

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

    VirtualMachine マニフェストの例

    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 マニフェストを適用します。

    $ oc apply -f <filename>.yaml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.