본문 바로가기
문서 목차
ORKESTRIX설치

KubeVirt 가상화

쿠버네티스 클러스터 내에서 가상머신(VM)을 컨테이너처럼 통합하여 오케스트레이션 할 수 있게 합니다. kubevirt manager 웹 UI로 VM을 생성·관리할 수 있습니다.

QUANTUM C&S

쿠버네티스 클러스터 내에서 가상머신(VM)을 컨테이너처럼 통합하여 오케스트레이션할 수 있게 합니다. kubevirt-manager 웹 UI로 VM을 생성 · 관리할 수 있습니다.

하드웨어 가상화(KVM) 가속을 사용합니다. 클러스터 노드에 중첩 가상화(nested virtualization)가 활성화되어 있어야 합니다.

설정값

inventory/qks/group_vars/all/all-k8s.yaml:

qks_kubevirt_enabled: true
qks_kubevirt_version: v1.9.0
qks_kubevirt_useEmulation_enabled: false
qks_kubevirt_virtmanager_fqdn: "kv.{{ kube_default_domain }}"

실행

./install.sh ubuntu plays/qks-kubevirt.yaml

설치 흐름

./install.sh ubuntu plays/qks-kubevirt.yaml
  ├─ 1. kubevirt-manager 접속 도메인을 각 노드 /etc/hosts에 등록
  ├─ 2. KubeVirt Operator + CR 배포
  ├─ 3. FeatureGate 설정(VMPersistentState/HotplugVolumes/DataVolumes/Snapshot)
  ├─ 4. CDI(Containerized Data Importer) Operator + CR 배포
  ├─ 5. kubevirt-manager(웹 UI) 배포 + Ingress
  ├─ 6. VM 이미지 카탈로그 등록(Ubuntu/Windows 등, containerDisk 방식)
  ├─ 7. virt-api/virt-handler 준비 상태 확인
  └─ 8. 커스텀 인스턴스 타입 생성(c1m2 ~ c16m32)

설치 확인

kubectl get pods -n kubevirt

virt-api, virt-controller, virt-handler(워커 노드 수만큼), virt-operator, cdi-*, kubevirt-manager 파드가 모두 Running이어야 합니다.

kubectl get nodes -o custom-columns=NAME:.metadata.name,KVM:.status.allocatable.devices\\.kubevirt\\.io/kvm

워커 노드에 KVM 장치가 할당되어 있어야 합니다.

실제 동작 확인

테스트 VM을 하나 생성해 실제로 부팅되는지 확인합니다:

kubectl apply -f - <<EOF
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
  name: test-vm
  namespace: kubevirt
spec:
  domain:
    devices:
      disks:
        - name: containerdisk
          disk:
            bus: virtio
    resources:
      requests:
        memory: 1Gi
  volumes:
    - name: containerdisk
      containerDisk:
        image: docker.io/quantumcns/ubuntu2204-lts:v1.0
EOF

kubectl get vmi -n kubevirt -o wide

PHASE: Running, READY: True, IP가 할당되어 있으면 정상입니다. 확인 후 정리:

kubectl delete vmi test-vm -n kubevirt

웹 UI 확인:

curl -k -s -o /dev/null -w "%{http_code}\n" https://<qks_kubevirt_virtmanager_fqdn>/

200이 나오면 정상입니다.

다음 단계