10.16. 가상 머신 가져오기
10.16.1. 데이터 볼륨 가져오기에 필요한 TLS 인증서
10.16.1.1. 데이터 볼륨 가져오기 인증을 위한 TLS 인증서 추가
레지스트리 또는 HTTPS에서 데이터를 가져오려면 이러한 소스 끝점에 대한 TLS 인증서를 구성 맵에 추가해야 합니다. 이 구성 맵은 대상 데이터 볼륨의 네임스페이스에 있어야 합니다.
TLS 인증서의 상대 파일 경로를 참조하여 구성 맵을 만듭니다.
절차
올바른 네임스페이스에 있는지 확인합니다. 구성 맵은 동일한 네임스페이스에 있는 경우에만 데이터 볼륨에서 참조할 수 있습니다.
$ oc get ns
config map을 생성합니다.
$ oc create configmap <configmap-name> --from-file=</path/to/file/ca.pem>
10.16.1.2. 예: TLS 인증서에서 생성한 구성 맵
다음은 ca.pem
TLS 인증서에서 생성한 구성 맵의 예입니다.
apiVersion: v1 kind: ConfigMap metadata: name: tls-certs data: ca.pem: | -----BEGIN CERTIFICATE----- ... <base64 encoded cert> ... -----END CERTIFICATE-----
10.16.2. 데이터 볼륨을 사용하여 가상 머신 이미지 가져오기
기존 가상 머신 이미지를 OpenShift Container Platform 클러스터 스토리지로 가져올 수 있습니다. CDI(Containerized Data Importer)를 사용하면 데이터 볼륨을 사용하여 이미지를 PVC(영구 볼륨 클레임)로 가져올 수 있습니다. OpenShift Virtualization은 하나 이상의 데이터 볼륨을 사용하여 데이터 가져오기 및 기본 PVC 생성을 자동화합니다. 영구 저장을 위해 데이터 볼륨을 가상 머신에 연결할 수 있습니다.
가상 머신 이미지는 HTTP 또는 HTTPS 끝점에서 호스팅하거나, 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 저장할 수 있습니다.
디스크 이미지를 PVC로 가져오면 PVC에 요청한 전체 스토리지 용량을 사용하도록 디스크 이미지가 확장됩니다. 이 공간을 사용하기 위해 가상 머신의 디스크 파티션 및 파일 시스템을 확장해야 할 수 있습니다.
크기 조정 절차는 가상 머신에 설치된 운영 체제에 따라 다릅니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.
10.16.2.1. 사전 요구 사항
- 끝점에 TLS 인증서가 필요한 경우 인증서가 데이터 볼륨과 동일한 네임스페이스의 구성 맵에 포함되고 데이터 볼륨 구성에서 참조되어야 합니다.
컨테이너 디스크를 가져오려면 다음을 수행합니다.
- 가져오기 전에 가상 머신 이미지에서 컨테이너 디스크를 준비하여 컨테이너 레지스트리에 저장해야 할 수 있습니다.
-
컨테이너 레지스트리에 TLS가 없는 경우 컨테이너 디스크 를 가져오기 전에
HyperConverged
사용자 정의 리소스의insecureRegistries
필드에 레지스트리를 추가해야 합니다.
- 이 작업을 완료하려면 스토리지 클래스를 정의하거나 CDI 스크래치 공간을 준비해야 할 수 있습니다.
데이터 볼륨이 있는 블록 스토리지로 가상 머신 이미지를 가져오려면 사용 가능한 로컬 블록 영구 볼륨이 있어야 합니다.
10.16.2.2. CDI 지원 작업 매트릭스
이 매트릭스에는 끝점에 대한 콘텐츠 유형에 따라 지원되는 CDI 작업과 이러한 작업 중 스크래치 공간이 필요한 작업이 표시되어 있습니다.
콘텐츠 유형 | HTTP | HTTPS | HTTP 기본 인증 | 레지스트리 | 업로드 |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt(RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ 지원되는 작업
□ 지원되지 않는 작업
* 스크래치 공간 필요
** 사용자 정의 인증 기관이 필요한 경우 스크래치 공간 필요
이제 CDI에서 OpenShift Container Platform 클러스터 전체 프록시 구성 을 사용합니다.
10.16.2.3. 데이터 볼륨 정보
Dataolume
오브젝트는 CDI(Containerized Data Importer) 프로젝트에서 제공하는 사용자 정의 리소스입니다. 데이터 볼륨은 기본 PVC(영구 볼륨 클레임)와 관련된 가져오기, 복제, 업로드 작업을 오케스트레이션합니다. 독립 실행형 리소스로 데이터 볼륨을 생성하거나 VM(가상 머신) 사양의 dataVolumeTemplate
필드를 사용하여 생성할 수 있습니다.
-
독립 실행형 데이터 볼륨을 사용하여 준비된 VM 디스크 PVC는 VM에서 독립 라이프사이클을 유지합니다. VM 사양에서
dataVolumeTemplate
필드를 사용하여 PVC를 준비하는 경우 PVC는 VM과 동일한 라이프사이클을 공유합니다.
10.16.2.4. 로컬 블록 영구 볼륨
데이터 볼륨이 있는 블록 스토리지로 가상 머신 이미지를 가져오려면 사용 가능한 로컬 블록 영구 볼륨이 있어야 합니다.
10.16.2.4.1. 블록 영구 볼륨 정보
PV(블록 영구 볼륨)는 원시 블록 장치에서 지원하는 PV입니다. 이러한 볼륨은 파일 시스템이 없으며 오버헤드를 줄여 가상 머신의 성능을 향상시킬 수 있습니다.
원시 블록 볼륨은 PV 및 PVC(영구 볼륨 클레임) 사양에 volumeMode:Block
을 지정하여 프로비저닝합니다.
10.16.2.4.2. 로컬 블록 영구 볼륨 생성
데이터 볼륨이 있는 블록 스토리지로 가상 머신 이미지를 가져오려면 사용 가능한 로컬 블록 영구 볼륨이 있어야 합니다.
파일을 채우고 루프 장치로 마운트하여 노드에 로컬 블록 PV(영구 볼륨)를 생성합니다. 그런 다음 PV 매니페스트에서 이 루프 장치를 Block
볼륨으로 참조하고 가상 머신 이미지의 블록 장치로 사용할 수 있습니다.
절차
-
로컬 PV를 생성할 노드에
root
로 로그인합니다. 이 절차에서는 예제로node01
을 사용합니다. 블록 장치로 사용할 수 있도록 파일을 생성하고 null 문자로 채웁니다. 다음 예제에서는 크기가 2Gb(20X100Mb 블록)인 파일
loop10
을 생성합니다.$ dd if=/dev/zero of=<loop10> bs=100M count=20
loop10
파일을 루프 장치로 마운트합니다.$ losetup </dev/loop10>d3 <loop10> 1 2
마운트된 루프 장치를 참조하는
PersistentVolume
매니페스트를 생성합니다.kind: PersistentVolume apiVersion: v1 metadata: name: <local-block-pv10> annotations: spec: local: path: </dev/loop10> 1 capacity: storage: <2Gi> volumeMode: Block 2 storageClassName: local 3 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - <node01> 4
블록 PV를 생성합니다.
# oc create -f <local-block-pv10.yaml>1
- 1
- 이전 단계에서 생성한 영구 볼륨의 파일 이름입니다.
10.16.2.5. 데이터 볼륨을 사용하여 가상 머신 이미지 가져오기
데이터 볼륨을 사용하여 가상 머신 이미지를 스토리지로 가져올 수 있습니다.
가상 머신 이미지는 HTTP 또는 HTTPS 끝점에서 호스팅하거나 이미지를 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 저장할 수 있습니다.
VirtualMachine
구성 파일에 이미지의 데이터 소스를 지정합니다. 가상 머신이 생성되면 가상 머신 이미지가 있는 데이터 볼륨을 스토리지로 가져옵니다.
사전 요구 사항
가상 머신 이미지를 가져오려면 다음이 있어야 합니다.
-
RAW, ISO 또는 QCOW2 형식의 가상 머신 디스크 이미지(필요한 경우
xz
또는gz
를 사용하여 압축) - 데이터 소스에 액세스하는 데 필요한 인증 자격 증명과 함께 이미지가 호스팅되는 HTTP 또는 HTTPS 끝점.
-
RAW, ISO 또는 QCOW2 형식의 가상 머신 디스크 이미지(필요한 경우
- 컨테이너 디스크를 가져오려면 데이터 소스에 액세스하는 데 필요한 인증 자격 증명과 함께 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 저장된 가상 머신 이미지가 있어야 합니다.
- 가상 머신이 자체 서명된 인증서 또는 시스템 CA 번들에서 서명하지 않은 인증서를 사용하는 서버와 통신해야 하는 경우 데이터 볼륨과 동일한 네임스페이스에 구성 맵을 생성해야 합니다.
절차
데이터 소스에 인증이 필요한 경우 데이터 소스 자격 증명을 지정하여
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
보안 매니페스트
를
적용합니다.$ oc apply -f endpoint-secret.yaml
가져올 가상 머신 이미지의 데이터 소스를 지정하여
VirtualMachine
매니페스트를 편집하여vm-fedora-datavolume.yaml
로 저장합니다.apiVersion: kubevirt.io/v1 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: volumeMode: Block 3 resources: requests: storage: 10Gi storageClassName: local source: 4 http: url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 5 secretRef: endpoint-secret 6 certConfigMap: "" 7 # To use a registry source, uncomment the following lines and delete the preceding HTTP source block # registry: # url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest" # secretRef: registry-secret 8 # certConfigMap: "" 9 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: 180 volumes: - dataVolume: name: fedora-dv name: datavolumedisk1 status: {}
- 1
- 가상 머신의 이름을 지정합니다.
- 2
- 데이터 볼륨의 이름을 지정합니다.
- 3
- 볼륨 및 액세스 모드는 알려진 스토리지 프로비저너에서 자동으로 탐지됩니다. 또는
Block
을 지정할 수 있습니다. - 4 5
- comment 블록을 사용하여 가져올 가상 머신 이미지의 URL 또는 레지스트리 끝점을 지정합니다. 예를 들어 레지스트리 소스를 사용하려는 경우 HTTP 또는 HTTPS 소스 블록을 주석 처리하거나 삭제할 수 있습니다. 여기에 표시된 예제 값을 사용자 고유의 값으로 교체해야 합니다.
- 6 8
- 데이터 소스에 대한 보안을 생성한 경우
시크릿
- 7 9
- 선택 사항: CA 인증서 구성 맵을 지정합니다.
가상 머신을 생성합니다.
$ oc create -f vm-fedora-datavolume.yaml
참고oc create
명령은 데이터 볼륨과 가상 머신을 생성합니다. CDI 컨트롤러는 올바른 주석을 사용하여 기본 PVC를 생성하고 가져오기 프로세스가 시작됩니다. 가져오기가 완료되면 데이터 볼륨 상태가성공으로
변경됩니다. 가상 머신을 시작할 수 있습니다.데이터 볼륨 프로비저닝은 백그라운드에서 이루어지므로 프로세스를 모니터링할 필요가 없습니다.
검증
가져오기 Pod는 지정된 URL에서 가상 머신 이미지 또는 컨테이너 디스크를 다운로드하여 프로비저닝된 PV에 저장합니다. 다음 명령을 실행하여 가져오기 Pod의 상태를 확인합니다.
$ oc get pods
다음 명령을 실행하여 상태가
Succeeded
될 때까지 데이터 볼륨을 모니터링합니다.$ oc describe dv fedora-dv 1
- 1
VirtualMachine
매니페스트에 정의된 데이터 볼륨 이름을 지정합니다.
프로비저닝이 완료되었고 가상 머신이 직렬 콘솔에 액세스하여 시작되었는지 확인합니다.
$ virtctl console vm-fedora-datavolume
10.16.2.6. 추가 리소스
- 데이터 볼륨 작업에 대한 쓰기 성능을 개선하도록 사전 할당 모드를 구성합니다.