目前kubevirt提供虚机管理的功能。
kill, delete, shutdown, migration 等。
VMI是virtual machine interface的缩写。
SyncVMI,实际上就是创建一个VM。
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327105533542-1642129363.png)
创建VM的map, 支持PCI设备。
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327105244660-1642355545.png)
只是libvirt的一层皮,libvirt有啥它就支持啥。
连package的名字都叫virtwrap
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327105640013-2098480948.png)
handler的调用launcher。
LauncherClient(RPC)提供给handler的几个功能。
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327105718889-1384994944.png)
这个handler和launcher的通信是相互的, 跟dpi差不多的机制。
handler提供给launcher的 这个sock叫 "domain-notify.sock"
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327110225822-234677927.png)
这是launcher的代码
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327110011068-335725558.png)
通过rpc通信。 这个rpc通过一个unixsock, unixsock的名字是虚拟机的UUID, 在"/var/run/kubevirt" 目录下面。
此外launcher还提供了一个就绪的文件, "readiness-file", 叫"/var/run/kubevirt-infra/healthy", Pod looks for this file to determine when virt-launcher is initialized
插入一个go的语法
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327110314327-1425453599.png)
event是kubelet和kubevirt-handle 的一个重要组成部分
http://www.shwhyc.com/tags/events
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327141354967-1161385115.png)
kubevirt看来是支持dpi的, 支持QAT,FPGA的。
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327110420075-1174479205.png)
前面说了, handler也会提供一个socket,供launcher进行notify。 这是launcher的代码
launcher会把来自libvirt的domain event 发给handler。
同时也会发送k8s的event,啥event, 不知道
![](https://wx.qq.com/zh_CN/htmledition/v2/images/spacer.gif)
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327142801950-305869978.png)
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327142900556-1202444951.png)
handler起notify server的代码。
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327142932909-1503866746.png)
swagger 定义的API
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327144422403-948778706.png)
"description": "This is KubeVirt API an add-on for Kubernetes."
API的定义
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327145914476-352564480.png)
virt-operator 中定义了VirtualMachineInstance
![](https://img2018.cnblogs.com/blog/86842/201903/86842-20190327145953724-1264983721.png)
resource-generator 调用了virt-operator
自动生成代码,
用了bazel来build 项目
核心还是代码生成: