7.15.2.4. 데이터 볼륨을 사용하여 가상 머신 이미지를 스토리지로 가져오기

데이터 볼륨을 사용하여 가상 머신 이미지를 스토리지로 가져올 수 있습니다.

가상 머신 이미지는 HTTP 또는 HTTPS 끝점에서 호스팅하거나 이미지를 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 저장할 수 있습니다.

VirtualMachine 구성 파일에서 이미지의 데이터 소스를 지정합니다. 가상 머신이 생성되면 가상 머신 이미지가 있는 데이터 볼륨을 스토리지로 가져옵니다.

사전 요구 사항

  • 가상 머신 이미지를 가져오려면 다음이 있어야 합니다.

    • RAW, ISO 또는 QCOW2 형식의 가상 머신 디스크 이미지(필요한 경우 xz 또는 gz를 사용하여 압축)
    • 데이터 소스에 액세스하는 데 필요한 인증 자격 증명과 함께 이미지가 호스팅되는 HTTP 또는 HTTPS 끝점
  • 컨테이너 디스크를 가져오려면 데이터 소스에 액세스하는 데 필요한 인증 자격 증명과 함께 컨테이너 디스크에 빌드되고 컨테이너 레지스트리에 저장된 가상 머신 이미지가 있어야 합니다.
  • 가상 머신이 자체 서명된 인증서 또는 시스템 CA 번들에서 서명되지 않은 인증서를 사용하는 서버와 통신해야 하는 경우 데이터 볼륨과 동일한 네임스페이스에 구성 맵을 생성해야 합니다.

절차

  1. 데이터 소스에 인증이 필요한 경우 데이터 소스 인증 정보를 지정하여 Secret 매니페스트를 생성하고 이를 endpoint-secret.yaml 로 저장합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: endpoint-secret 1
      labels:
        app: containerized-data-importer
    type: Opaque
    data:
      accessKeyId: "" 2
      secretKey:   "" 3
    1
    Secret 의 이름을 지정합니다.
    2
    Base64로 인코딩된 키 ID 또는 사용자 이름을 지정합니다.
    3
    Base64로 인코딩된 보안 키 또는 암호를 지정합니다.
  2. 보안 매니페스트 적용합니다.

    $ oc apply -f endpoint-secret.yaml
  3. 가져올 가상 머신 이미지의 데이터 소스를 지정하여 VirtualMachine 매니페스트를 편집하고 vm-fedora-datavolume.yaml 로 저장합니다.

    apiVersion: kubevirt.io/v1alpha3
    kind: VirtualMachine
    metadata:
      creationTimestamp: null
      labels:
        kubevirt.io/vm: vm-fedora-datavolume
      name: vm-fedora-datavolume 1
    spec:
      dataVolumeTemplates:
      - metadata:
          creationTimestamp: null
          name: fedora-dv 2
        spec:
          storage:
            resources:
              requests:
                storage: 10Gi
            storageClassName: local
          source:
            http: 3
              url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 4
              secretRef: endpoint-secret 5
              certConfigMap: "" 6
        status: {}
      running: true
      template:
        metadata:
          creationTimestamp: null
          labels:
            kubevirt.io/vm: vm-fedora-datavolume
        spec:
          domain:
            devices:
              disks:
              - disk:
                  bus: virtio
                name: datavolumedisk1
            machine:
              type: ""
            resources:
              requests:
                memory: 1.5Gi
          terminationGracePeriodSeconds: 60
          volumes:
          - dataVolume:
              name: fedora-dv
            name: datavolumedisk1
    status: {}
    1
    가상 머신의 이름을 지정합니다.
    2
    데이터 볼륨의 이름을 지정합니다.
    3
    HTTP 또는 HTTPS 엔드포인트에 http 를 지정합니다. 레지스트리에서 가져온 컨테이너 디스크 이미지의 레지스트리를 지정합니다.
    4
    가져올 가상 머신 이미지의 소스입니다. 이 예제에서는 HTTPS 끝점에서 가상 머신 이미지를 참조합니다. 컨테이너 레지스트리 끝점은 예를 들면 url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest"와 같습니다.
    5
    데이터 소스에 대한 보안을 생성한 경우 필수 항목입니다.
    6
    선택 사항: CA 인증서 구성 맵을 지정합니다.
  4. 가상 머신을 생성합니다.

    $ oc create -f vm-fedora-datavolume.yaml
    참고

    oc create 명령은 데이터 볼륨과 가상 머신을 생성합니다. CDI 컨트롤러에서 올바른 주석을 사용하여 기본 PVC를 생성하고 가져오기 프로세스가 시작됩니다. 가져오기가 완료되면 데이터 볼륨 상태가 Succeeded 로 변경됩니다. 가상 머신을 시작할 수 있습니다.

    데이터 볼륨 프로비저닝은 백그라운드에서 이루어지므로 프로세스를 모니터링할 필요가 없습니다.

검증

  1. 가져오기 Pod는 지정된 URL에서 가상 머신 이미지 또는 컨테이너 디스크를 다운로드하여 프로비저닝된 PV에 저장합니다. 다음 명령을 실행하여 가져오기 Pod의 상태를 확인합니다.

    $ oc get pods
  2. 다음 명령을 실행하여 상태가 Succeeded 될 때까지 데이터 볼륨을 모니터링합니다.

    $ oc describe dv fedora-dv 1
    1
    VirtualMachine 매니페스트에 정의된 데이터 볼륨 이름을 지정합니다.
  3. 직렬 콘솔에 액세스하여 프로비저닝이 완료되고 가상 머신이 시작되었는지 확인합니다.

    $ virtctl console vm-fedora-datavolume