目的
在 kubernetes 上部署 kubevirt 0.58 版本
资料
kubernetes 上部署 kubevirt 运行虚拟机
multus github 官方文档 (当只使用了 fannel 网络)
multus 用户手册
kubevirt github官方地址
kubevirt 用户手册
架构
说明
virt-api: 提供 HTTP RESTful 在集群内对 vmi 进行管理
virt-controller: 用于管理 k8s 中 VMI 的生命周期
virt-handler:这是一个在每个Kubernetes节点上运行的守护程序。它负责根据Kubernetes监控VMI的状态,并确保相应的 libvirt domain 相应地启动或停止。为了执行这些操作,virt处理程序与每个virt启动器都有一个通信通道,用于管理virt启动器pod中qemu进程的生命周期。
virt-launcher: 该组件直接管理VMI的pod中qemu进程的生命周期,并从virt 处理程序接收生命周期命令。
kubevirt 功能
1 客户端向 K8s API 服务器提交新的 VMI 定义
2 K8s API服务器验证输入并创建 VMI 自定义资源
3 virt-controller 检查 VMI 创建资源对象,并创建相应的pod
4 Kubernetes 调度 node 节点的 pod
5 virt-controller 观察到 VMI 的 pod 已启动并更新 VMI 对象中的nodeName字段。当设定了 nodeName,由 virt-handler 负责响应进一步的动作
6 virt-handler (DaemonSet)观察到 VMI 被分配给了运行它的主机
7 virt-handler 使用VMI规范,并使用 VMI 的pod中的 libvirtd 实例发出创建相应 domain 的信号
8 客户端通过 virt-api-server 删除 VMI 对象
9 virt-handler 收到删除信息并关闭 domain
组件
virt-api-server
作为所有虚拟化相关工作的入口 HTTP API 服务器
API服务器负责更新与虚拟化相关的自定义资源(CRD)
作为 KubeVirt 的主要入口,它负责默认和验证提供的 VMI CRD
VMI (CRD)
VMI 在Kubernetes API服务器定义自定义资源
VMI定义定义了虚拟机本身的资源机器类型架构
CPU 类型
可用 RAM, CPU
网卡数量
virt-controller
controller 负责监控 VMI (CRs) 管理相关联的 POD
目前 controller 负责创建及管理相关的 VMI 对象的生命周期
VMI对象在其生命周期内始终与 pod 关联,然而,由于VMI的迁移
virt-launcher
每个 VMI 对象创建一个 POD
这个pod的主容器运行 virt-launcher KubeVirt 组件
Kubernetes或kubelet本身并不运行VMI
集群中每个主机上的守护程序将负责为与VMI对象相关联的每个pod启动VMI进程
virt-launcher Pod 的主要目的是提