目前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
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的代碼。git
swagger 定義的API
"description": "This is KubeVirt API an add-on for Kubernetes."
API的定義
virt-operator 中定義了VirtualMachineInstance
resource-generator 調用了virt-operator
自動生成代碼,
用了bazel來build 項目
Extending Kubernetes: Create Controllers for Core and Custom Resourcesgithub
Writing Kubernetes Custom Controllersweb
Kubernetes client-go實戰應用hexo
kubernetes-operator-tutorialapp
writing-your-first-kubernetes-operatordom