Mutating the immutable: device hotplug in KubeVirt
summary
KubeVirt implements runtime device hotplug for QEMU/libvirt guests by preallocating PCI topology using placeholder devices so libvirt can generate the needed controllers, then removing placeholders before boot; that yields four placeholders (configurable later) giving empty hotplug slots on Q35 guests. The talk explains libvirt’s limitation that PCI root ports must exist at boot, compares alternatives (PCI bridge, manual addresses), shows how migration is used as a device-plugin workaround, and notes memory and boot-time tradeoffs.
AI-written summary · about
chapters (17)
- 0:00Hotplug in virtual machines
- 2:54Defining VMs in KubeVirt
- 4:21Why hotplug is necessary
- 6:30Kubernetes challenges for hotplug
- 8:42KubeVirt’s device plugin limits
- 10:12PCI hotplug in libvirt and QEMU
- 13:20PCI controller generation limits
- 14:24Placeholder devices for hotplug slots
- 16:12Alternative PCI hotplug approaches
- 19:03Future hotplug extensions
- 21:11Q&A on memory and PCI limits
- 22:16PCI slots during migrations
- 22:57PCI hotplug constraints
- 24:01CPU hotplug and features
- 26:12Shared virtualization limits
- 27:20Hotplugging volumes in pods
- 28:08Custom hooks for hotplug
related talks
24mKubeVirt: connect KVM-in-a-Pod to a host interface
13mUsing CPU & Memory Hotplug for VM Vertical Scaling
43mKubeVirt - Kubernetes, Virtualization and Your Future Data Center
37mHigh Performance Networking with Kubevirt
33mPlug & Play: Modular Networking for Kubernetes Virtualization
37mKubeVirt Deep Dive: Virtualized GPU Workloads on KubeVirt
36mIt’s All for the Users. More Durable, Secure, and Pluggable. KubeVirt v0.53
31mKubeVirt: What If Kubernetes Orchestrated Your VMs?
