KubeVirt는 Kubernetes 클러스터에서 가상 머신(Virtual Machine, VM)을 실행할 수 있도록 설계된 오픈소스 프로젝트
홈페이지 : https://kubevirt.io/

- Kubernetes Custom Resource Definitions (CRD)라는 기능을 통해 VM이라는 리소스 타입을 새롭게 추가함 → 하지만 추가 리소스만으로 VM이 실행되지는 않음 ⇒ functionality and business logic이 필요함
Custom Resource Definitions (CRD)
- Kubernetes에서 사용자 정의 리소스를 만들기 위한 설정 파일
- CRD 동작 원리 : 1. CRD를 생성하면 Kubernetes API 서버가 새로운 리소스 타입을 알게 됨 / 2. 이후 해당 리소스를 생성, 조회, 업데이트할 수 있음
- 이때 Kubernetes 코어는 건드리지 않음
- Kubernets 자체에 추가하는 것이 아니라 추가 컨트롤러와 에이전트가 Kubrtnetes controller에서 작동하며 기능 제공
- kubevirt는 VM 관련 모든 도구를 제공하여 Kubernetes API 통해 VM 관리
KubeVirt 구성요소
KubeVirt Operator
- KubeVirt의 설치, 업데이트, 관리 작업을 자동화
Virt-API
- KubeVirt에서 제공하는 API 서버로 Kubernetes API와 통신하며 VM 관련 리소스를 처리
Virt-Controller
- KubeVirt의 컨트롤러로, Kubernetes의 컨트롤러와 동일한 역할
Virt-Handler
- VM의 상태를 지속적으로 모니터링 및 업데이트
KubeVirt 전체 실행 흐름

- 사용자 → API Server: 사용자가 요청을 보냄
- API Server → virt-controller: controller가 API Server를 확인해 새로운 VMI가 생성된 것을 확인
- virt-controller → Kubernetes: Pod 생성 요청 (pod 안에서 VMI가 실행됨)
- Kubernetes → Node: Kubernetes는 virt-controller의 요청을 받고 새로운 Pod를 생성, scheduler가 Pod를 적절한 노드에 배치
- virt-handler → virt-launcher: virt-handler가 새로 생성된 Pod가 있는지 확인하고, 그 Pod가 가상 머신 실행을 위해 만들어진 것인지 체크 후 virt-launcher 호출해 Pod에서 가상 머신 실행
- virt-launcher → libvirtd → qemu: VM 생성 및 실행
- libvirtd: 가상 머신 설정을 담당 (CPU, 메모리, 네트워크 설정).
- qemu: 실제로 가상 머신을 실행