初识kubevirt
kubevirt的基础目录结构
kubevirt/
├── api/ # CRD 的定义,包括 VirtualMachine、VirtualMachineInstance 等的 API 类型
│ ├── core/ # 核心 API 定义
│ └── generated/ # 自动生成的 API 代码
│
├── cmd/ # 可执行文件入口,例如 virt-api、virt-controller、virt-handler 等
│ ├── virt-api/
│ ├── virt-controller/
│ ├── virt-handler/
│ └── virt-launcher/
│
├── pkg/ # 核心逻辑代码,控制器、调度器、设备管理等
│ ├── api/ # 与 `api/` 相关的封装逻辑
│ ├── virt-api/ # 实现 kubevirt 的 API Server(服务暴露 CRD 接口)
│ ├── virt-controller/ # 实现虚拟机控制器(管理 VM 生命周期)
│ ├── virt-handler/ # 在每个节点上运行的守护进程,管理 VM 运行时
│ ├── virt-launcher/ # 创建和启动 QEMU 虚拟机的容器入口
│ ├── virt-chroot/ # 用于 chroot 隔离逻辑
│ ├── util/ # 各种工具函数和工具包
│ └── network/ # 虚拟机网络配置与支持代码
│
├── tests/ # 测试用例,包括 e2e 测试、功能测试等
│ ├── e2e/ # 端到端测试
│ └── framework/ # 测试框架和公用逻辑
│
├── tools/ # 构建、测试等相关工具脚本
│
├── hack/ # 开发、CI、构建辅助脚本(例如生成代码、部署等)
│
├── manifests/ # Kubernetes 资源清单,安装/部署相关
│
├── cluster/ # 用于本地部署开发集群(例如使用 kind)
│
├── docs/ # 项目文档
│
├── automation/ # GitHub Actions / CI 自动化流程定义
│
├── vendor/ # Go modules 的依赖(go mod vendor 后生成)
│
├── go.mod # Go modules 定义文件
├── go.sum
└── Makefile # 构建入口
关键组件说明:
-
virt-api:为虚拟机相关的 CRD 提供 REST 接口。
-
virt-controller:负责控制虚拟机的生命周期,比如创建、删除等。
-
virt-handler:部署在每个节点上,负责和 libvirt/qemu/kvm 等交互,实际启动虚拟机。
-
virt-launcher:每个虚拟机的启动容器,负责运行虚拟机进程。
-
tests/e2e:用于验证 KubeVirt 在集群中部署和运行 VM 的行为