Kubevirt

안서현·2024년 11월 25일

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 전체 실행 흐름

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

0개의 댓글