Open laik opened 3 years ago
VirtualMachineInstance 虚拟机实现(运行时) VirtualMachine. 模板(1:1对应vmi) VirtualMachiceInstanceMigration (迁移功能)
KubeVirt的实现方式 KubeVirt充分采用了Kubernetes方式扩展了Kubernetes,主要在以下3个方面进行了扩展:
VM相关的自定义资源CRD被增加到Kubernetes API中间。新增的CRD包括VirtualMachine, VirtualMachineInstance, VirtualMachineInstanceMigration, DataVolume等。 新建的虚拟机控制器,用于实现上述相关CRD在增、删、改时应该执行的相关操作。 每个节点上面的守护进程virt-handler(具体实现方式是运行在Kubernetes集群里面的DaemonSet),可以认为是KubeVirt的kubelet。Virt-handler和kubelet一起,用于创建虚拟机实例(VMI),以达到CRD中期望的状态。 图6是KubeVirt社区官方的详细架构图,列出了KubeVirt对Kubernetes的扩展组件。
图6 – KubeVirt详细架构
以下是一个创建虚拟机的大致流程:
在VMI pod内部,virt-launcher是该pod的主要容器。virt-launcher的主要功能是为虚拟机进程准备控制组和命名空间。在接收到来virt-hander创建虚拟机的命令后,virt-launcher将会使用自己容器内部libvirtd创建一个虚拟机实例。
VirtualMachineInstance 虚拟机实现(运行时) VirtualMachine. 模板(1:1对应vmi) VirtualMachiceInstanceMigration (迁移功能)
KubeVirt的实现方式 KubeVirt充分采用了Kubernetes方式扩展了Kubernetes,主要在以下3个方面进行了扩展:
VM相关的自定义资源CRD被增加到Kubernetes API中间。新增的CRD包括VirtualMachine, VirtualMachineInstance, VirtualMachineInstanceMigration, DataVolume等。 新建的虚拟机控制器,用于实现上述相关CRD在增、删、改时应该执行的相关操作。 每个节点上面的守护进程virt-handler(具体实现方式是运行在Kubernetes集群里面的DaemonSet),可以认为是KubeVirt的kubelet。Virt-handler和kubelet一起,用于创建虚拟机实例(VMI),以达到CRD中期望的状态。 图6是KubeVirt社区官方的详细架构图,列出了KubeVirt对Kubernetes的扩展组件。
图6 – KubeVirt详细架构
以下是一个创建虚拟机的大致流程:
在VMI pod内部,virt-launcher是该pod的主要容器。virt-launcher的主要功能是为虚拟机进程准备控制组和命名空间。在接收到来virt-hander创建虚拟机的命令后,virt-launcher将会使用自己容器内部libvirtd创建一个虚拟机实例。