8.9. ホットプラグ対応のセカンダリーネットワークインターフェイス


仮想マシンを停止せずに、セカンダリーネットワークインターフェイスを追加または削除できます。OpenShift Virtualization は、ブリッジバインディングと VirtIO デバイスドライバーを使用するセカンダリーインターフェイスのホットプラグとホットアンプラグをサポートします。OpenShift Virtualization は、SR-IOV バインディングを使用するセカンダリーインターフェイスのホットプラグもサポートします。

注記

ホットアンプラグは、Single Root I/O Virtualization (SR-IOV) インターフェイスではサポートされていません。

8.9.1. VirtIO の制限事項

各 VirtIO インターフェイスは、仮想マシン内の限られたペリフェラル接続インターフェイス (PCI) スロットの 1 つを使用します。合計 32 個のスロットが利用可能です。PCI スロットは他のデバイスでも使用され、事前に予約する必要があるため、オンデマンドでスロットを利用できない場合があります。OpenShift Virtualization は、ホットプラグインターフェイス用に最大 4 つのスロットを予約します。これには、接続されている既存のネットワークインターフェイスが含まれます。たとえば、仮想マシンにプラグインされた既存のインターフェイスが 2 つある場合は、さらに 2 つのネットワークインターフェイスをホットプラグできます。

注記

ホットプラグに使用できる実際のスロット数もマシンのタイプによって異なります。たとえば、q35 マシンタイプのデフォルトの PCI トポロジーは、1 台の追加 PCIe デバイスのホットプラグをサポートしています。PCI トポロジーとホットプラグのサポートの詳細は、libvirt のドキュメント を参照してください。

インターフェイスをホットプラグした後に仮想マシンを再起動すると、そのインターフェイスは標準ネットワークインターフェイスの一部になります。

8.9.2. CLI を使用したセカンダリーネットワークインターフェイスのホットプラグ

仮想マシンの実行中に、セカンダリーネットワークインターフェイスを仮想マシンにホットプラグします。

前提条件

  • ネットワークアタッチメント定義は、仮想マシンと同じ namespace で設定されます。
  • virtctl ツールがインストールされている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. ネットワークインターフェイスをホットプラグする仮想マシンが実行していない場合は、次のコマンドを使用して仮想マシンを起動します。

    $ virtctl start <vm_name> -n <namespace>
  2. 次のコマンドを使用して、実行中の仮想マシンに新しいネットワークインターフェイスを追加します。仮想マシン仕様を編集すると、新しいネットワークインターフェイスが仮想マシンおよび仮想マシンインスタンス (VMI) 設定に追加されますが、実行中の仮想マシンには接続されません。

    $ oc edit vm <vm_name>

    仮想マシン設定の例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-fedora
    template:
      spec:
        domain:
          devices:
            interfaces:
            - name: defaultnetwork
              masquerade: {}
            # new interface
            - name: <secondary_nic> 1
              bridge: {}
        networks:
        - name: defaultnetwork
          pod: {}
        # new network
        - name: <secondary_nic> 2
          multus:
            networkName: <nad_name> 3
    # ...

    1
    新しいネットワークインターフェイスの名前を指定します。
    2
    ネットワークの名前を指定します。これは、template.spec.domain.devices.interfaces リストで定義した新しいネットワークインターフェイスの name と同じである必要があります。
    3
    NetworkAttachmentDefinition オブジェクトの名前を指定します。
  3. 実行中の仮想マシンにネットワークインターフェイスを接続するには、次のコマンドを実行して仮想マシンのライブマイグレーションを行います。

    $ virtctl migrate <vm_name>

検証

  1. 次のコマンドを使用して、仮想マシンのライブマイグレーションが成功したことを確認します。

    $ oc get VirtualMachineInstanceMigration -w

    出力例

    NAME                        PHASE             VMI
    kubevirt-migrate-vm-lj62q   Scheduling        vm-fedora
    kubevirt-migrate-vm-lj62q   Scheduled         vm-fedora
    kubevirt-migrate-vm-lj62q   PreparingTarget   vm-fedora
    kubevirt-migrate-vm-lj62q   TargetReady       vm-fedora
    kubevirt-migrate-vm-lj62q   Running           vm-fedora
    kubevirt-migrate-vm-lj62q   Succeeded         vm-fedora

  2. VMI ステータスをチェックして、新しいインターフェイスが仮想マシンに追加されていることを確認します。

    $ oc get vmi vm-fedora -ojsonpath="{ @.status.interfaces }"

    出力例

    [
      {
        "infoSource": "domain, guest-agent",
        "interfaceName": "eth0",
        "ipAddress": "10.130.0.195",
        "ipAddresses": [
          "10.130.0.195",
          "fd02:0:0:3::43c"
        ],
        "mac": "52:54:00:0e:ab:25",
        "name": "default",
        "queueCount": 1
      },
      {
        "infoSource": "domain, guest-agent, multus-status",
        "interfaceName": "eth1",
        "mac": "02:d8:b8:00:00:2a",
        "name": "bridge-interface", 1
        "queueCount": 1
      }
    ]

    1
    ホットプラグされたインターフェイスが VMI ステータスに表示されます。

8.9.3. CLI を使用したセカンダリーネットワークインターフェイスのホットアンプラグ

実行中の仮想マシンから、セカンダリーネットワークインターフェイスを削除できます。

注記

ホットアンプラグは、Single Root I/O Virtualization (SR-IOV) インターフェイスではサポートされていません。

前提条件

  • 仮想マシンが実行している必要があります。
  • 仮想マシンは、OpenShift Virtualization 4.14 以降を実行しているクラスター上に作成する必要があります。
  • 仮想マシンにはブリッジネットワークインターフェイスが接続されている必要があります。

手順

  1. 仮想マシン仕様を編集して、セカンダリーネットワークインターフェイスをホットアンプラグします。インターフェイスの状態を absent に設定すると、ネットワークインターフェイスがゲストから切り離されますが、そのインターフェイスは Pod 内にまだ存在しています。

    $ oc edit vm <vm_name>

    仮想マシン設定の例

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-fedora
    template:
      spec:
        domain:
          devices:
            interfaces:
              - name: defaultnetwork
                masquerade: {}
              # set the interface state to absent
              - name: <secondary_nic>
                state: absent 1
                bridge: {}
        networks:
          - name: defaultnetwork
            pod: {}
          - name: <secondary_nic>
            multus:
              networkName: <nad_name>
    # ...

    1
    インターフェイスの状態を absent に設定して、実行中の仮想マシンから切り離します。仮想マシン仕様からインターフェイスの詳細を削除しても、セカンダリーネットワークインターフェイスはホットアンプラグされません。
  2. 仮想マシンを移行して、Pod からインターフェイスを削除します。

    $ virtctl migrate <vm_name>

8.9.4. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.