1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/virt-hot-plugging-bridge-network-interface-cli.adoc
2024-04-10 20:23:20 +00:00

124 lines
3.3 KiB
Plaintext

// Module included in the following assemblies:
//
// * virt/virtual_machines/vm_networking/virt-hot-plugging-network-interfaces.adoc
:_mod-docs-content-type: PROCEDURE
[id="virt-hot-plugging-bridge-network-interface_{context}"]
= Hot plugging a secondary network interface by using the CLI
Hot plug a secondary network interface to a virtual machine (VM) while the VM is running.
.Prerequisites
* A network attachment definition is configured in the same namespace as your VM.
* You have installed the `virtctl` tool.
* You have installed the OpenShift CLI (`oc`).
.Procedure
. If the VM to which you want to hot plug the network interface is not running, start it by using the following command:
+
[source,terminal]
----
$ virtctl start <vm_name> -n <namespace>
----
. Use the following command to add the new network interface to the running VM. Editing the VM specification adds the new network interface to the VM and virtual machine instance (VMI) configuration but does not attach it to the running VM.
+
[source,terminal]
----
$ oc edit vm <vm_name>
----
+
.Example VM configuration
[source,yaml]
----
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> Specifies the name of the new network interface.
<2> Specifies the name of the network. This must be the same as the `name` of the new network interface that you defined in the `template.spec.domain.devices.interfaces` list.
<3> Specifies the name of the `NetworkAttachmentDefinition` object.
. To attach the network interface to the running VM, live migrate the VM by running the following command:
+
[source,terminal]
----
$ virtctl migrate <vm_name>
----
.Verification
. Verify that the VM live migration is successful by using the following command:
+
[source,terminal]
----
$ oc get VirtualMachineInstanceMigration -w
----
+
.Example output
[source,terminal]
----
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
----
. Verify that the new interface is added to the VM by checking the VMI status:
+
[source,terminal]
----
$ oc get vmi vm-fedora -ojsonpath="{ @.status.interfaces }"
----
+
.Example output
[source,json]
----
[
{
"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> The hot plugged interface appears in the VMI status.