- 虚拟机热迁移要求虚拟机的主网卡是masquerade,其他网卡可以是bridge模式,也可以是其他模式
在热迁移过程中,libvirt需要基于主网卡做内存拷贝,要求网络不能断开。
KubeVirt 的热迁移在网络方面面临很大的挑战,尤其是在固定 IP 的场景下,如何保证 IP 不冲突就变的更为复杂。由于 KubeVirt 在热迁移中使用 default network 进行状态的同步,通过结合 multus-cni 将业务网络和迁移网络分离,我们可以在功能层面实现热迁移过程中的地址固定。
bridge¶
In bridge
mode, virtual machines are connected to the network backend through a linux "bridge". The pod network IPv4 address is delegated to the virtual machine via DHCPv4. The virtual machine should be configured to use DHCP to acquire IPv4 addresses.
网桥模式,即pod内部会再建一个linux bridge,eth0桥接到linux bridge上,然后再创建一个比如veth-pair,一端连到linux bridge,另一端放到虚拟机里面。
masquerade¶
In masquerade
mode, KubeVirt allocates internal IP addresses to virtual machines and hides them behind NAT. All the traffic exiting virtual machines is "NAT'ed" using pod IP addresses. A guest operating system should be configured to use DHCP to acquire IPv4 addresses.
伪装模式,基于iptables nat来将流量转发入虚拟机。
ps: kube-ovn 1.10 dpdk feature 尚未进行虚拟机热迁移的测试
- kube-ovn 关于 vm 场景的支持
参考: https://mp.weixin.qq.com/s/BdCqoUIn0uEsDXmw8-IulQ
Kube-OVN 经过长时间的迭代目前支持了:
VM 创建时指定 IP,VM 生命周期内地址保持固定
VM 创建时随机地址分配,VM 生命周期内地址保持固定
VM 热迁移过程中业务网卡保持地址固定