https://kubevirt.io/labs/kubernetes/lab2.html

https://chaaaaewoncode.tistory.com/67

https://github.com/Tedezed/kubevirt-images-generator?tab=readme-ov-file

https://kubevirt.io/user-guide/storage/export_api/#export-api

Test용 VM 생성

4Gi 크기의 DataVolume을 생성하고 해당 볼륨을 VM에 마운트 시켜주자.

kubectl apply -n shelley -f - <<EOF
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: test-vm
spec:
  dataVolumeTemplates:
  - metadata:
      creationTimestamp: null
      **name: example-dv**
    spec:
      storage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            **storage: 4Gi**
      source:
        registry:
          url: docker://quay.io/containerdisks/ubuntu:22.04
  running: true
  template:
    spec:
      domain:
        devices:
          disks:
          - disk:
              bus: virtio
            name: rootdisk
          - disk:
              bus: virtio
            name: initdisk
        resources:
          requests:
            memory: 4Gi
      terminationGracePeriodSeconds: 0
      volumes:
      - name: rootdisk
        dataVolume:
          **name: example-dv**
      - name: initdisk
        cloudInitNoCloud:
          userData: |
            #cloud-config
            password: ubuntu
            chpasswd: { expire: False }
EOF

VM에 접속(id: ubuntu, pw: ubuntu)

virtctl console test-vm -n shelley

test용 text파일 하나를 만들어준다. (추후 VM을 복제했을 때 이 파일이 그대로 복제됐는지 체크하기 위함)

echo "hello" > hello.txt

VM 볼륨을 파일로 저장

feature gate 활성화

https://kubevirt.io/user-guide/cluster_admin/activating_feature_gates/#how-to-activate-a-feature-gate

Kubevirt CR에 LiveMigration을 추가해주면 feature gate가 활성화된다.

kubectl apply -n kubevirt -f - <<EOF
apiVersion: kubevirt.io/v1
kind: KubeVirt
metadata:
  name: kubevirt
  namespace: kubevirt
spec:
  configuration:
    developerConfiguration: 
      featureGates:
        - VMExport
EOF

혹은 이미 존재하는 kubevirt를 edit하고 LiveMigration를 추가한 후 저장한다.

kubectl edit kubevirt kubevirt -n kubevirt
...
spec:
  configuration:
    developerConfiguration:
      featureGates:
	      ...
        - VMExport