10.11.2. CLI を使用したセカンダリーネットワークインターフェイスのホットプラグ
仮想マシンの実行中に、セカンダリーネットワークインターフェイスを仮想マシンにホットプラグします。
前提条件
- ネットワークアタッチメント定義が、仮想マシンと同じ namespace に設定されている。
- ネットワークインターフェイスをホットプラグする仮想マシンが実行中です。
-
virtctlツールがインストールされている。 -
VirtualMachineInstanceMigrationオブジェクトを作成およびリスト表示するパーミッションがある。 -
OpenShift CLI (
oc) がインストールされている。
手順
次の例に示すように、好みのテキストエディターを使用して
VirtualMachineマニフェストを編集します。仮想マシン設定の例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: vm-fedora template: spec: domain: devices: interfaces: - name: defaultnetwork masquerade: {} # new interface - name: <secondary_nic> bridge: {} networks: - name: defaultnetwork pod: {} # new network - name: <secondary_nic> multus: networkName: <nad_name> # ...-
spec.template.spec.domain.devices.interfaces.name は、新しいネットワークインターフェイスの名前を指定します。 -
spec.template.spec.networks.nameは、ネットワークの名前を指定します。これは、template.spec.domain.devices.interfacesリストで定義した新しいネットワークインターフェイスのnameと同じである必要があります。 -
spec.template.spec.networks.multus.networkNameは、NetworkAttachmentDefinitionオブジェクトの名前を指定します。
-
実行中の仮想マシンにネットワークインターフェイスを接続するには、次のコマンドを実行して仮想マシンのライブマイグレーションを行います。
$ virtctl migrate <vm_name>
検証
次のコマンドを使用して、仮想マシンのライブマイグレーションが成功したことを確認します。
$ 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-fedoraVMI ステータスをチェックして、新しいインターフェイスが仮想マシンに追加されていることを確認します。
$ 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", "queueCount": 1 } ]ホットプラグされたインターフェイスが VMI ステータスに表示されます。