目前kubevirt提供虚机管理的功能。
kill, delete, shutdown, migration 等。
VMI是virtual machine interface的缩写。
SyncVMI,实际上就是创建一个VM。
创建VM的map, 支持PCI设备。
只是libvirt的一层皮,libvirt有啥它就支持啥。
连package的名字都叫virtwrap
handler的调用launcher。
LauncherClient(RPC)提供给handler的几个功能。
这个handler和launcher的通信是相互的, 跟dpi差不多的机制。
handler提供给launcher的 这个sock叫 "domain-notify.sock"
这是launcher的代码
通过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的语法
event是kubelet和kubevirt-handle 的一个重要组成部分
http://www.shwhyc.com/tags/events
kubevirt看来是支持dpi的, 支持QAT,FPGA的。
前面说了, handler也会提供一个socket,供launcher进行notify。 这是launcher的代码
launcher会把来自libvirt的domain event 发给handler。
同时也会发送k8s的event,啥event, 不知道
handler起notify server的代码。
swagger 定义的API
"description": "This is KubeVirt API an add-on for Kubernetes."
API的定义
virt-operator 中定义了VirtualMachineInstance
resource-generator 调用了virt-operator
自动生成代码,
用了bazel来build 项目
核心还是代码生成: