8.8. 보조 네트워크 인터페이스 핫플러그
VM(가상 머신)을 중지하지 않고 보조 네트워크 인터페이스를 추가하거나 제거할 수 있습니다. OpenShift Virtualization에서는 VirtIO 장치 드라이버를 사용하는 보조 인터페이스에 대한 핫 플러그를 지원합니다.
SR-IOV(Single Root I/O Virtualization) 인터페이스에 핫 연결 해제는 지원되지 않습니다.
8.8.1. virtio 제한 사항
각 VirtIO 인터페이스는 VM의 제한된 PCI(Peripheral Connect Interface) 슬롯 중 하나를 사용합니다. 총 32개의 슬롯이 준비되어 있습니다. PCI 슬롯은 다른 장치에서도 사용되며 미리 예약해야 하므로 필요에 따라 슬롯을 사용할 수 없습니다. OpenShift Virtualization은 핫플러그 인터페이스를 위해 최대 4개의 슬롯을 예약합니다. 여기에는 기존의 플러그인 네트워크 인터페이스가 포함됩니다. 예를 들어 VM에 두 개의 기존 인터페이스가 있는 경우 두 개의 네트워크 인터페이스를 핫플러그할 수 있습니다.
핫 플러그에 사용할 수 있는 실제 슬롯 수는 머신 유형에 따라 다릅니다. 예를 들어 q35 시스템 유형의 기본 PCI 토폴로지는 핫 플러그를 하나의 추가 PCIe 장치를 지원합니다. PCI 토폴로지 및 핫 플러그 지원에 대한 자세한 내용은 libvirt 설명서 를 참조하십시오.
인터페이스를 핫플러그한 후 VM을 다시 시작하면 해당 인터페이스가 표준 네트워크 인터페이스의 일부가 됩니다.
8.8.2. CLI를 사용하여 보조 네트워크 인터페이스 핫플러그
VM이 실행되는 동안 보조 네트워크 인터페이스를 VM(가상 머신)에 핫플러그합니다.
사전 요구 사항
- 네트워크 연결 정의는 VM과 동일한 네임스페이스에 구성됩니다.
-
virtctl
툴을 설치했습니다. -
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
네트워크 인터페이스를 핫플러그할 VM이 실행되지 않는 경우 다음 명령을 사용하여 시작합니다.
$ virtctl start <vm_name> -n <namespace>
다음 명령을 사용하여 실행 중인 VM에 새 네트워크 인터페이스를 추가합니다. VM 사양을 편집하면 새 네트워크 인터페이스가 VM 및 VMI(가상 머신 인스턴스) 구성에 추가되지만 실행 중인 VM에 연결되지는 않습니다.
$ oc edit vm <vm_name>
VM 구성 예
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 # ...
실행 중인 VM에 네트워크 인터페이스를 연결하려면 다음 명령을 실행하여 VM을 실시간 마이그레이션합니다.
$ virtctl migrate <vm_name>
검증
다음 명령을 사용하여 VM 실시간 마이그레이션이 성공했는지 확인합니다.
$ 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
VMI 상태를 확인하여 새 인터페이스가 VM에 추가되었는지 확인합니다.
$ 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.8.3. CLI를 사용하여 보조 네트워크 인터페이스 핫플러그
실행 중인 VM(가상 머신)에서 보조 네트워크 인터페이스를 제거할 수 있습니다.
SR-IOV(Single Root I/O Virtualization) 인터페이스에 핫 연결 해제는 지원되지 않습니다.
사전 요구 사항
- VM이 실행 중이어야 합니다.
- OpenShift Virtualization 4.14 이상을 실행하는 클러스터에서 VM을 생성해야 합니다.
- VM에 브리지 네트워크 인터페이스가 연결되어 있어야 합니다.
프로세스
VM 사양을 편집하여 보조 네트워크 인터페이스를 핫플러그합니다. 인터페이스 상태를
absent
로 설정하면 게스트에서 네트워크 인터페이스를 분리하지만 인터페이스는 여전히 Pod에 있습니다.$ oc edit vm <vm_name>
VM 구성 예
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
로 설정하여 실행 중인 VM에서 분리합니다. VM 사양에서 인터페이스 세부 정보를 제거해도 보조 네트워크 인터페이스를 핫플러그하지 않습니다.
VM을 마이그레이션하여 Pod에서 인터페이스를 제거합니다.
$ virtctl migrate <vm_name>