7.2. 사용자 정의 이미지에서 VM 생성
7.2.1. 사용자 정의 이미지에서 가상 머신 생성 개요
다음 방법 중 하나를 사용하여 사용자 정의 운영 체제 이미지에서 VM(가상 머신)을 생성할 수 있습니다.
선택 사항: 컨테이너 디스크에 대한 자동 업데이트를 활성화할 수 있습니다. 자세한 내용은 자동 부팅 소스 업데이트 관리를 참조하십시오.
- 웹 페이지에서 이미지를 가져옵니다.
- 로컬 머신에서 이미지 업로드.
- 이미지가 포함된 PVC(영구 볼륨 클레임)를 복제 합니다.
CDI(Containerized Data Importer)는 데이터 볼륨을 사용하여 이미지를 PVC로 가져옵니다. OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 VM에 PVC를 추가합니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트 를 설치해야 합니다.
Windows VM에 VirtIO 드라이버 도 설치해야 합니다.
QEMU 게스트 에이전트는 Red Hat 이미지에 포함되어 있습니다.
7.2.2. 컨테이너 디스크를 사용하여 VM 생성
운영 체제 이미지에서 빌드된 컨테이너 디스크를 사용하여 VM(가상 머신)을 생성할 수 있습니다.
컨테이너 디스크에 대한 자동 업데이트를 활성화할 수 있습니다. 자세한 내용은 자동 부팅 소스 업데이트 관리를 참조하십시오.
컨테이너 디스크가 크면 I/O 트래픽이 증가할 수 있으므로 작업자 노드를 사용할 수 없게 됩니다. 다음 작업을 수행하여 이 문제를 해결할 수 있습니다.
다음 단계를 수행하여 컨테이너 디스크에서 VM을 생성합니다.
- 운영 체제 이미지를 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 업로드합니다.
- 컨테이너 레지스트리에 TLS가 없는 경우 레지스트리에 TLS를 비활성화하도록 환경을 구성합니다.
- 웹 콘솔 또는 명령줄 을 사용하여 컨테이너 디스크를 디스크 소스로 사용하여 VM을 생성합니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트 를 설치해야 합니다.
7.2.2.1. 컨테이너 디스크 빌드 및 업로드
VM(가상 머신) 이미지를 컨테이너 디스크에 빌드하고 레지스트리에 업로드할 수 있습니다.
컨테이너 디스크의 크기는 컨테이너 디스크가 호스팅되는 레지스트리의 최대 계층 크기로 제한됩니다.
Red Hat Quay 의 경우 Red Hat Quay를 처음 배포할 때 생성된 YAML 구성 파일을 편집하여 최대 계층 크기를 변경할 수 있습니다.
사전 요구 사항
-
podman
이 설치되어 있어야 합니다. - QCOW2 또는 RAW 이미지 파일이 있어야 합니다.
프로세스
Dockerfile을 생성하여 VM 이미지를 컨테이너 이미지에 빌드합니다. VM 이미지는 UID가
107
인 QEMU에 속하고 컨테이너 내부의/disk/
디렉터리에 배치해야 합니다. 그런 다음/disk/
디렉터리에 대한 권한을0440
으로 설정해야 합니다.다음 예제에서는 Red Hat UBI(Universal Base Image)를 사용하여 첫 번째 단계에서 이러한 구성 변경을 처리하고, 두 번째 단계에서 최소
scratch
이미지를 사용하여 결과를 저장합니다.$ cat > Dockerfile << EOF FROM registry.access.redhat.com/ubi8/ubi:latest AS builder ADD --chown=107:107 <vm_image>.qcow2 /disk/ 1 RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/ EOF
- 1
- 여기서
<vm_image
>는 QCOW2 또는 RAW 형식의 이미지입니다. 원격 이미지를 사용하는 경우 <vm_image>.qcow2
를 전체 URL로 바꿉니다.
컨테이너를 빌드하고 태그를 지정합니다.
$ podman build -t <registry>/<container_disk_name>:latest .
컨테이너 이미지를 레지스트리에 푸시합니다.
$ podman push <registry>/<container_disk_name>:latest
7.2.2.2. 컨테이너 레지스트리의 TLS 비활성화
HyperConverged
사용자 정의 리소스의 insecureRegistries
필드를 편집하여 하나 이상의 컨테이너 레지스트리에 대해 TLS(전송 계층 보안)를 비활성화할 수 있습니다.
사전 요구 사항
다음 명령을 실행하여 기본 편집기에서
HyperConverged
CR을 엽니다.$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
비보안 레지스트리 목록을
spec.storageImport.insecureRegistries
필드에 추가합니다.HyperConverged
사용자 정의 리소스의 예apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: storageImport: insecureRegistries: 1 - "private-registry-example-1:5000" - "private-registry-example-2:5000"
- 1
- 이 목록의 예제를 유효한 레지스트리 호스트 이름으로 바꿉니다.
7.2.2.3. 웹 콘솔을 사용하여 컨테이너 디스크에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 컨테이너 레지스트리에서 컨테이너 디스크를 가져와 VM(가상 머신)을 생성할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동합니다. - 사용 가능한 부팅 소스 없이 템플릿 타일을 클릭합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- 템플릿 매개변수 사용자 지정 페이지의 스토리지를 확장하고 디스크 소스 목록에서 레지스트리(PVC 생성) 를 선택합니다.
-
컨테이너 이미지 URL을 입력합니다. 예:
https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
- 디스크 크기를 설정합니다.
- 다음을 클릭합니다.
- VirtualMachine 생성을 클릭합니다.
7.2.2.4. 명령줄을 사용하여 컨테이너 디스크에서 VM 생성
명령줄을 사용하여 컨테이너 디스크에서 VM(가상 머신)을 생성할 수 있습니다.
VM(가상 머신)이 생성되면 컨테이너 디스크가 있는 데이터 볼륨을 영구 스토리지로 가져옵니다.
사전 요구 사항
- 컨테이너 디스크가 포함된 컨테이너 레지스트리에 대한 액세스 인증 정보가 있어야 합니다.
프로세스
컨테이너 레지스트리에 인증이 필요한 경우 인증 정보를 지정하여
시크릿
매니페스트를 생성하고 이를data-source-secret.yaml
파일로 저장합니다.apiVersion: v1 kind: Secret metadata: name: data-source-secret labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 1 secretKey: "" 2
다음 명령을 실행하여
시크릿
매니페스트를 적용합니다.$ oc apply -f data-source-secret.yaml
VM이 시스템 CA 번들에서 서명하지 않은 자체 서명 인증서 또는 인증서를 사용하는 서버와 통신해야 하는 경우 VM과 동일한 네임스페이스에 구성 맵을 생성합니다.
$ oc create configmap tls-certs 1 --from-file=</path/to/file/ca.pem> 2
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: resources: requests: storage: 10Gi 3 storageClassName: <storage_class> 4 source: registry: url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest" 5 secretRef: data-source-secret 6 certConfigMap: tls-certs 7 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: {}
다음 명령을 실행하여 VM을 생성합니다.
$ oc create -f vm-fedora-datavolume.yaml
oc create
명령은 데이터 볼륨과 VM을 생성합니다. CDI 컨트롤러는 올바른 주석을 사용하여 기본 PVC를 생성하고 가져오기 프로세스가 시작됩니다. 가져오기가 완료되면 데이터 볼륨 상태가성공으로
변경됩니다. VM을 시작할 수 있습니다.데이터 볼륨 프로비저닝은 백그라운드에서 수행되므로 프로세스를 모니터링할 필요가 없습니다.
검증
가져오기 Pod는 지정된 URL에서 컨테이너 디스크를 다운로드하여 프로비저닝된 영구 볼륨에 저장합니다. 다음 명령을 실행하여 가져오기 Pod의 상태를 확인합니다.
$ oc get pods
다음 명령을 실행하여 상태가
성공
될 때까지 데이터 볼륨을 모니터링합니다.$ oc describe dv fedora-dv 1
- 1
VirtualMachine
매니페스트에 정의된 데이터 볼륨 이름을 지정합니다.
직렬 콘솔에 액세스하여 프로비저닝이 완료되었고 VM이 시작되었는지 확인합니다.
$ virtctl console vm-fedora-datavolume
7.2.3. 웹 페이지에서 이미지를 가져와 VM 생성
웹 페이지에서 운영 체제 이미지를 가져와 VM(가상 머신)을 생성할 수 있습니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트 를 설치해야 합니다.
7.2.3.1. 웹 콘솔을 사용하여 웹 페이지의 이미지에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 웹 페이지에서 이미지를 가져와 VM(가상 머신)을 생성할 수 있습니다.
사전 요구 사항
- 이미지가 포함된 웹 페이지에 액세스할 수 있어야 합니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동합니다. - 사용 가능한 부팅 소스 없이 템플릿 타일을 클릭합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- 템플릿 매개변수 사용자 지정 페이지의 스토리지를 확장하고 디스크 소스 목록에서 URL(PVC 생성) 을 선택합니다.
-
이미지 URL을 입력합니다. 예:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
-
컨테이너 이미지 URL을 입력합니다. 예:
https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
- 디스크 크기를 설정합니다.
- 다음을 클릭합니다.
- VirtualMachine 생성을 클릭합니다.
7.2.3.2. 명령줄을 사용하여 웹 페이지의 이미지에서 VM 생성
명령줄을 사용하여 웹 페이지의 이미지에서 VM(가상 머신)을 생성할 수 있습니다.
VM(가상 머신)이 생성되면 이미지가 포함된 데이터 볼륨을 영구 스토리지로 가져옵니다.
사전 요구 사항
- 이미지가 포함된 웹 페이지에 대한 액세스 인증 정보가 있어야 합니다.
프로세스
웹 페이지에 인증이 필요한 경우 인증 정보를 지정하여
시크릿
매니페스트를 생성하고 이를data-source-secret.yaml
파일로 저장합니다.apiVersion: v1 kind: Secret metadata: name: data-source-secret labels: app: containerized-data-importer type: Opaque data: accessKeyId: "" 1 secretKey: "" 2
다음 명령을 실행하여
시크릿
매니페스트를 적용합니다.$ oc apply -f data-source-secret.yaml
VM이 시스템 CA 번들에서 서명하지 않은 자체 서명 인증서 또는 인증서를 사용하는 서버와 통신해야 하는 경우 VM과 동일한 네임스페이스에 구성 맵을 생성합니다.
$ oc create configmap tls-certs 1 --from-file=</path/to/file/ca.pem> 2
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: resources: requests: storage: 10Gi 3 storageClassName: <storage_class> 4 source: http: url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 5 registry: url: "docker://kubevirt/fedora-cloud-container-disk-demo:latest" 6 secretRef: data-source-secret 7 certConfigMap: tls-certs 8 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: {}
다음 명령을 실행하여 VM을 생성합니다.
$ oc create -f vm-fedora-datavolume.yaml
oc create
명령은 데이터 볼륨과 VM을 생성합니다. CDI 컨트롤러는 올바른 주석을 사용하여 기본 PVC를 생성하고 가져오기 프로세스가 시작됩니다. 가져오기가 완료되면 데이터 볼륨 상태가성공으로
변경됩니다. VM을 시작할 수 있습니다.데이터 볼륨 프로비저닝은 백그라운드에서 수행되므로 프로세스를 모니터링할 필요가 없습니다.
검증
가져오기 Pod는 지정된 URL에서 이미지를 다운로드하여 프로비저닝된 영구 볼륨에 저장합니다. 다음 명령을 실행하여 가져오기 Pod의 상태를 확인합니다.
$ oc get pods
다음 명령을 실행하여 상태가
성공
될 때까지 데이터 볼륨을 모니터링합니다.$ oc describe dv fedora-dv 1
- 1
VirtualMachine
매니페스트에 정의된 데이터 볼륨 이름을 지정합니다.
직렬 콘솔에 액세스하여 프로비저닝이 완료되었고 VM이 시작되었는지 확인합니다.
$ virtctl console vm-fedora-datavolume
7.2.4. 이미지 업로드를 통해 VM 생성
로컬 머신에서 운영 체제 이미지를 업로드하여 VM(가상 머신)을 생성할 수 있습니다.
PVC에 Windows 이미지를 업로드하여 Windows VM을 생성할 수 있습니다. 그런 다음 VM을 생성할 때 PVC를 복제합니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트 를 설치해야 합니다.
Windows VM에 VirtIO 드라이버 도 설치해야 합니다.
7.2.4.1. 웹 콘솔을 사용하여 업로드된 이미지에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 업로드된 운영 체제 이미지에서 VM(가상 머신)을 생성할 수 있습니다.
사전 요구 사항
-
IMG
,ISO
또는QCOW2
이미지 파일이 있어야 합니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동합니다. - 사용 가능한 부팅 소스 없이 템플릿 타일을 클릭합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- Customize template parameters 페이지에서 Storage 를 확장하고 디스크 소스 목록에서 새 파일을 PVC에 업로드(업로드) 를 선택합니다.
- 로컬 시스템의 이미지를 검색하여 디스크 크기를 설정합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- VirtualMachine 생성을 클릭합니다.
7.2.4.2. Windows VM 생성
PVC(영구 볼륨 클레임)에 Windows 이미지를 업로드한 다음 OpenShift Container Platform 웹 콘솔을 사용하여 VM을 생성할 때 PVC를 복제하여 Windows 가상 머신(VM)을 생성할 수 있습니다.
사전 요구 사항
- Windows 미디어 생성 도구를 사용하여 Windows 설치 DVD 또는 USB를 생성했습니다. Microsoft 문서의 Windows 10 설치 미디어 만들기 를 참조하십시오.
-
autounattend.xml
응답 파일을 생성했습니다. Microsoft 문서의 Answer 파일(unattend.xml) 을 참조하십시오.
프로세스
Windows 이미지를 새 PVC로 업로드합니다.
-
웹 콘솔에서 스토리지
PersistentVolumeClaims 로 이동합니다. -
영구 볼륨 클레임 생성
데이터 업로드 양식 을 클릭합니다. - Windows 이미지로 이동하여 선택합니다.
PVC 이름을 입력하고 스토리지 클래스와 크기를 선택한 다음 업로드 를 클릭합니다.
Windows 이미지가 PVC에 업로드됩니다.
-
웹 콘솔에서 스토리지
업로드된 PVC를 복제하여 새 VM을 구성합니다.
-
가상화
카탈로그 로 이동합니다. - Windows 템플릿 타일을 선택하고 Customize VirtualMachine 을 클릭합니다.
- 디스크 소스 목록에서 Clone (clone PVC) 을 선택합니다.
- PVC 프로젝트, Windows 이미지 PVC, 디스크 크기를 선택합니다.
-
가상화
응답 파일을 VM에 적용합니다.
- VirtualMachine 매개변수 사용자 지정을 클릭합니다.
- 스크립트 탭의 Sysprep 섹션에서 편집 을 클릭합니다.
-
autounattend.xml
응답 파일을 찾아 저장을 클릭합니다.
VM의 실행 전략을 설정합니다.
- VM 이 즉시 시작되지 않도록 생성 후 이 VirtualMachine 시작을 지웁니다.
- VirtualMachine 생성을 클릭합니다.
-
YAML 탭에서
running:false
를runStrategy: RerunOnFailure
로 바꾸고 저장을 클릭합니다.
옵션 메뉴 를 클릭하고 시작을 선택합니다.
VM은
autounattend.xml
응답 파일이 포함된sysprep
디스크에서 부팅됩니다.
7.2.4.2.1. Windows VM 이미지 일반화
이미지를 사용하여 새 VM(가상 머신)을 생성하기 전에 Windows 운영 체제 이미지를 일반화하여 모든 시스템 관련 구성 데이터를 제거할 수 있습니다.
VM을 일반화하기 전에는 무인 Windows 설치 후 sysprep
툴에서 응답 파일을 감지할 수 없는지 확인해야 합니다.
사전 요구 사항
- QEMU 게스트 에이전트가 설치된 실행 중인 Windows VM.
프로세스
-
OpenShift Container Platform 콘솔에서 가상화
VirtualMachines 를 클릭합니다. - Windows VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
-
구성
디스크 를 클릭합니다. -
sysprep
디스크 옆에 있는 옵션 메뉴 를 클릭하고 Detach 를 선택합니다. - Detach 를 클릭합니다.
-
sysprep
툴의 탐지를 방지하기 위해C:\Windows\Panther\unattend.xml
의 이름을 변경합니다. 다음 명령을 실행하여
sysprep
프로그램을 시작합니다.%WINDIR%\System32\Sysprep\sysprep.exe /generalize /shutdown /oobe /mode:vm
-
sysprep
툴이 완료되면 Windows VM이 종료됩니다. 이제 VM의 디스크 이미지를 Windows VM의 설치 이미지로 사용할 수 있습니다.
이제 VM을 전문으로 지정할 수 있습니다.
7.2.4.2.2. Windows VM 이미지 특수화
Windows VM(가상 머신)을 전문으로 지정하면 일반화된 Windows 이미지에서 VM에 대한 컴퓨터 관련 정보가 구성됩니다.
사전 요구 사항
- 일반화된 Windows 디스크 이미지가 있어야 합니다.
-
unattend.xml
응답 파일을 생성해야 합니다. 자세한 내용은 Microsoft 설명서 를 참조하십시오.
프로세스
-
OpenShift Container Platform 콘솔에서 가상화
카탈로그 를 클릭합니다. - Windows 템플릿을 선택하고 Customize VirtualMachine 을 클릭합니다.
- 디스크 소스 목록에서 PVC(복제 PVC) 를 선택합니다.
- 일반 Windows 이미지의 PVC 프로젝트 및 PVC 이름을 선택합니다.
- VirtualMachine 매개변수 사용자 지정을 클릭합니다.
- 스크립트 탭을 클릭합니다.
-
Sysprep 섹션에서 편집 을 클릭하고
unattend.xml
응답 파일로 이동한 다음 저장을 클릭합니다. - VirtualMachine 생성을 클릭합니다.
초기 부팅 중에 Windows는 unattend.xml
응답 파일을 사용하여 VM을 전문으로 지정합니다. 이제 VM을 사용할 준비가 되었습니다.
Windows VM 생성을 위한 추가 리소스
7.2.4.3. 명령줄을 사용하여 업로드된 이미지에서 VM 생성
virtctl
명령줄 툴을 사용하여 운영 체제 이미지를 업로드할 수 있습니다. 기존 데이터 볼륨을 사용하거나 이미지에 대한 새 데이터 볼륨을 생성할 수 있습니다.
사전 요구 사항
-
ISO
,IMG
또는QCOW2
운영 체제 이미지 파일이 있어야 합니다. -
최상의 성능을 위해 virt-sparsify 도구 또는
xz
또는gzip
유틸리티를 사용하여 이미지 파일을 압축합니다. -
virtctl
이 설치되어 있어야 합니다. - 클라이언트 머신이 OpenShift Container Platform 라우터의 인증서를 신뢰하도록 구성되어 있어야 합니다.
프로세스
virtctl image-upload
명령을 실행하여 이미지를 업로드합니다.$ virtctl image-upload dv <datavolume_name> \ 1 --size=<datavolume_size> \ 2 --image-path=</path/to/image> \ 3
참고-
새 데이터 볼륨을 생성하지 않으려면
--size
매개변수를 생략하고--no-create
플래그를 포함합니다. - 디스크 이미지를 PVC에 업로드할 때 PVC 크기는 압축되지 않은 가상 디스크의 크기보다 커야 합니다.
-
HTTPS를 사용할 때 비보안 서버 연결을 허용하려면
--insecure
매개변수를 사용하십시오.--insecure
플래그를 사용하면 업로드 끝점의 진위 여부를 확인하지 않습니다.
-
새 데이터 볼륨을 생성하지 않으려면
선택 사항: 데이터 볼륨이 생성되었는지 확인하려면 다음 명령을 실행하여 모든 데이터 볼륨을 확인합니다.
$ oc get dvs
7.2.5. QEMU 게스트 에이전트 및 VirtIO 드라이버 설치
QEMU 게스트 에이전트는 VM(가상 머신)에서 실행되고 VM, 사용자, 파일 시스템 및 보조 네트워크에 대한 정보를 호스트에 전달하는 데몬입니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트를 설치해야 합니다.
7.2.5.1. QEMU 게스트 에이전트 설치
7.2.5.1.1. Linux VM에 QEMU 게스트 에이전트 설치
qemu-guest-agent
는 널리 사용 가능하며 RHEL(Red Hat Enterprise Linux) 가상 머신(VM)에서 기본적으로 사용할 수 있습니다. 에이전트를 설치하고 서비스를 시작합니다.
가장 높은 무결성을 가진 온라인(실행 상태) VM의 스냅샷을 생성하려면 QEMU 게스트 에이전트를 설치합니다.
QEMU 게스트 에이전트는 시스템 워크로드에 따라 VM 파일 시스템을 가능한 한 많이 정지하여 일관된 스냅샷을 사용합니다. 이렇게 하면 스냅샷을 생성하기 전에 진행 중인 I/O가 디스크에 기록됩니다. 게스트 에이전트가 없으면 정지를 수행할 수 없으며 최상의 스냅샷을 생성합니다. 스냅샷이 수행된 조건은 웹 콘솔 또는 CLI에 표시되는 스냅샷 표시에 반영됩니다.
절차
- 콘솔 또는 SSH를 사용하여 VM에 로그인합니다.
다음 명령을 실행하여 QEMU 게스트 에이전트를 설치합니다.
$ yum install -y qemu-guest-agent
서비스가 지속되는지 확인하고 다음을 시작합니다.
$ systemctl enable --now qemu-guest-agent
검증
다음 명령을 실행하여
AgentConnected
가 VM 사양에 나열되어 있는지 확인합니다.$ oc get vm <vm_name>
7.2.5.1.2. Windows VM에 QEMU 게스트 에이전트 설치
Windows 가상 머신(VM)의 경우 QEMU 게스트 에이전트는 VirtIO 드라이버에 포함됩니다. Windows 설치 중 또는 기존 Windows VM에 드라이버를 설치할 수 있습니다.
가장 높은 무결성을 가진 온라인(실행 상태) VM의 스냅샷을 생성하려면 QEMU 게스트 에이전트를 설치합니다.
QEMU 게스트 에이전트는 시스템 워크로드에 따라 VM 파일 시스템을 가능한 한 많이 정지하여 일관된 스냅샷을 사용합니다. 이렇게 하면 스냅샷을 생성하기 전에 진행 중인 I/O가 디스크에 기록됩니다. 게스트 에이전트가 없으면 정지를 수행할 수 없으며 최상의 스냅샷을 생성합니다. 스냅샷이 수행된 조건은 웹 콘솔 또는 CLI에 표시되는 스냅샷 표시에 반영됩니다.
프로세스
-
Windows 게스트 운영 체제에서 File Explorer 를 사용하여
virtio-win
CD 드라이브의guest-agent
디렉터리로 이동합니다. -
qemu-ga-x86_64.msi
설치 프로그램을 실행합니다.
검증
다음 명령을 실행하여 네트워크 서비스 목록을 가져옵니다.
$ net start
-
출력에
QEMU 게스트 에이전트
가 포함되어 있는지 확인합니다.
7.2.5.2. Windows VM에 VirtIO 드라이버 설치
virtio 드라이버는 Microsoft Windows VM(가상 머신)을 OpenShift Virtualization에서 실행하는 데 필요한 반가상화 장치 드라이버입니다. 드라이버는 나머지 이미지와 함께 제공되며 별도의 다운로드가 필요하지 않습니다.
드라이버 설치를 활성화하려면 container-native-virtualization/virtio-win
컨테이너 디스크를 VM에 SATA CD 드라이브로 연결해야 합니다. VirtIO 드라이버는 Windows 설치 중에 설치하거나 기존 Windows 설치에 추가할 수 있습니다.
드라이버가 설치되면 container-native-virtualization/virtio-win
컨테이너 디스크를 VM에서 제거할 수 있습니다.
드라이버 이름 | 하드웨어 ID | 설명 |
---|---|---|
viostor |
VEN_1AF4&DEV_1001 | 블록 드라이버입니다. 기타 장치 그룹에서 SCSI 컨트롤러로 레이블이 지정되는 경우가 있습니다. |
viorng |
VEN_1AF4&DEV_1005 | 엔트로피 소스 드라이버입니다. 기타 장치 그룹에서 PCI 장치로 레이블이 지정되는 경우도 있습니다. |
NetKVM |
VEN_1AF4&DEV_1000 | 네트워크 드라이버입니다. 기타 장치 그룹에서 이더넷 컨트롤러로 레이블이 지정되기도 합니다. VirtIO NIC가 구성된 경우에만 사용할 수 있습니다. |
7.2.5.2.1. 설치 중에 VirtIO 컨테이너 디스크를 Windows VM에 연결
필요한 Windows 드라이버를 설치하려면 VirtIO 컨테이너 디스크를 Windows VM에 연결해야 합니다. 이 작업은 VM 생성 중에 수행할 수 있습니다.
프로세스
- 템플릿에서 Windows VM을 생성할 때 VirtualMachine 사용자 지정을 클릭합니다.
- Windows 드라이버 디스크 마운트 를 선택합니다.
- Customize VirtualMachine 매개변수를 클릭합니다.
- VirtualMachine 생성을 클릭합니다.
VM이 생성되면 virtio-win
SATA CD 디스크가 VM에 연결됩니다.
7.2.5.2.2. 기존 Windows VM에 VirtIO 컨테이너 디스크 연결
필요한 Windows 드라이버를 설치하려면 VirtIO 컨테이너 디스크를 Windows VM에 연결해야 합니다. 이 작업은 기존 VM에 수행할 수 있습니다.
프로세스
-
기존 Windows VM으로 이동하여 작업
중지 를 클릭합니다. -
VM 세부 정보
구성 디스크로 이동하여 디스크 추가 를 클릭합니다. -
컨테이너 소스에서
windows-driver-disk
를 추가하고 유형을 CD-ROM 으로 설정한 다음 인터페이스를 SATA 로 설정합니다. - 저장을 클릭합니다.
- VM을 시작하고 그래픽 콘솔에 연결합니다.
7.2.5.2.3. Windows 설치 중 VirtIO 드라이버 설치
VM(가상 머신)에 Windows를 설치하는 동안 VirtIO 드라이버를 설치할 수 있습니다.
이 절차에서는 일반적인 Windows 설치 방법을 사용하며, 설치 방법은 Windows 버전마다 다를 수 있습니다. 설치 중인 Windows 버전에 대한 설명서를 참조하십시오.
사전 요구 사항
-
virtio
드라이버가 포함된 스토리지 장치를 VM에 연결해야 합니다.
프로세스
-
Windows 운영 체제에서
File Explorer
를 사용하여virtio-win
CD 드라이브로 이동합니다. 드라이브를 두 번 클릭하여 VM에 적절한 설치 프로그램을 실행합니다.
64비트 vCPU의 경우
virtio-win-gt-x64
설치 프로그램을 선택합니다. 32비트 vCPU는 더 이상 지원되지 않습니다.- 선택 사항: 설치 프로그램의 사용자 지정 설정 단계에서 설치할 장치 드라이버를 선택합니다. 권장 드라이버 세트는 기본적으로 선택됩니다.
- 설치가 완료되면 완료 를 선택합니다.
- VM을 재부팅합니다.
검증
-
PC에서 시스템 디스크를 엽니다. 일반적으로 이 값은
C:
입니다. -
프로그램 파일
Virtio-Win 으로 이동합니다.
Virtio-Win 디렉터리가 있고 각 드라이버의 하위 디렉터리가 포함된 경우 설치에 성공했습니다.
7.2.5.2.4. 기존 Windows VM의 SATA CD 드라이브에서 VirtIO 드라이버 설치
기존 Windows VM(가상 머신)의 SATA CD 드라이브에서 VirtIO 드라이버를 설치할 수 있습니다.
다음 절차에서는 일반적인 방법을 사용하여 Windows에 드라이버를 추가합니다. 특정 설치 단계는 사용 중인 Windows 버전의 설치 설명서를 참조하십시오.
사전 요구 사항
- virtio 드라이버가 포함된 스토리지 장치를 VM에 SATA CD 드라이브로 연결해야 합니다.
절차
- VM을 시작하고 그래픽 콘솔에 연결합니다.
- Windows 사용자 세션에 로그인합니다.
장치 관리자를 열고 기타 장치를 확장하여 알 수 없는 장치를 나열합니다.
- 장치 속성을 열어 알 수 없는 장치를 식별합니다.
- 장치를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
- 세부 정보 탭을 클릭하고 속성 목록에서 하드웨어 ID를 선택합니다.
- 하드웨어 ID의 값을 지원되는 VirtIO 드라이버와 비교합니다.
- 장치를 마우스 오른쪽 단추로 클릭하고 드라이버 소프트웨어 업데이트를 선택합니다.
- 컴퓨터에서 드라이버 소프트웨어 찾아보기를 클릭하고 VirtIO 드라이버가 있는 연결된 SATA CD 드라이브를 찾습니다. 드라이버는 드라이버 유형, 운영 체제, CPU 아키텍처에 따라 계층적으로 정렬됩니다.
- 다음을 클릭하여 드라이버를 설치합니다.
- 필요한 모든 VirtIO 드라이버에 대해 이 과정을 반복합니다.
- 드라이버 설치 후 닫기를 클릭하여 창을 닫습니다.
- VM을 재부팅하여 드라이버 설치를 완료합니다.
7.2.5.2.5. 컨테이너 디스크에서 VirtIO 드라이버 설치 SATA CD 드라이브로 추가됨
Windows VM(가상 머신)에 SATA CD 드라이브로 추가하는 컨테이너 디스크에서 VirtIO 드라이버를 설치할 수 있습니다.
Red Hat Ecosystem Catalog 에서 container-native-virtualization/virtio-win
컨테이너 디스크를 다운로드하는 것은 클러스터에 없는 경우 Red Hat 레지스트리에서 컨테이너 디스크를 다운로드하기 때문에 필수가 아닙니다. 그러나 다운로드하면 설치 시간이 줄어듭니다.
사전 요구 사항
-
제한된 환경에서 Red Hat 레지스트리 또는 다운로드한
container-native-virtualization/virtio-win
컨테이너 디스크에 액세스할 수 있어야 합니다.
프로세스
VirtualMachine
매니페스트를 편집하여container-native-virtualization/virtio-win
컨테이너 디스크를 CD 드라이브로 추가합니다.# ... spec: domain: devices: disks: - name: virtiocontainerdisk bootOrder: 2 1 cdrom: bus: sata volumes: - containerDisk: image: container-native-virtualization/virtio-win name: virtiocontainerdisk
- 1
- OpenShift Virtualization은
VirtualMachine
매니페스트에 정의된 순서대로 VM 디스크를 부팅합니다. container-native-virtualization/virtio-win 컨테이너
디스크 전에 부팅되는 다른 VM 디스크를 정의하거나 선택적bootOrder
매개변수를 사용하여 VM이 올바른 디스크에서 부팅되도록 할 수 있습니다. 디스크의 부팅 순서를 구성하는 경우 다른 디스크에 대한 부팅 순서를 구성해야 합니다.
변경 사항을 적용합니다.
VM이 실행 중이 아닌 경우 다음 명령을 실행합니다.
$ virtctl start <vm> -n <namespace>
VM이 실행 중인 경우 VM을 재부팅하거나 다음 명령을 실행합니다.
$ oc apply -f <vm.yaml>
- VM을 시작한 후 SATA CD 드라이브에서 VirtIO 드라이버를 설치합니다.
7.2.5.3. VirtIO 드라이버 업데이트
7.2.5.3.1. Windows VM에서 VirtIO 드라이버 업데이트
Windows Update 서비스를 사용하여 Windows VM(가상 머신)에서 virtio
드라이버를 업데이트합니다.
사전 요구 사항
- 클러스터가 인터넷에 연결되어 있어야 합니다. 연결이 끊긴 클러스터는 Windows Update 서비스에 연결할 수 없습니다.
프로세스
- Windows 게스트 운영 체제에서 Windows 키를 클릭하고 설정을 선택합니다.
-
Windows 업데이트
고급 옵션 선택적 업데이트로 이동합니다. - Red Hat, Inc. 의 모든 업데이트를 설치합니다.
- VM을 재부팅합니다.
검증
- Windows VM에서 장치 관리자로 이동합니다.
- 장치를 선택합니다.
- 드라이버 탭을 선택합니다.
-
드라이버 세부 정보를 클릭하고
virtio
드라이버 세부 정보에 올바른 버전이 표시되는지 확인합니다.
7.2.6. VM 복제
VM(가상 머신)을 복제하거나 스냅샷에서 새 VM을 생성할 수 있습니다.
7.2.6.1. 웹 콘솔을 사용하여 VM 복제
웹 콘솔을 사용하여 기존 VM을 복제할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
VirtualMachines 로 이동합니다. - VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
- 작업을 클릭합니다.
- Clone 을 선택합니다.
- Clone VirtualMachine 페이지에서 새 VM의 이름을 입력합니다.
- (선택 사항) 복제된 VM 시작 확인란을 선택하여 복제된 VM을 시작합니다.
- Clone 을 클릭합니다.
7.2.6.2. 웹 콘솔을 사용하여 기존 스냅샷에서 VM 생성
기존 스냅샷을 복사하여 새 VM을 생성할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
VirtualMachines 로 이동합니다. - VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
- 스냅샷 탭을 클릭합니다.
- 복사할 스냅샷의 작업 메뉴 를 클릭합니다.
- Create VirtualMachine 를 선택합니다.
- 가상 머신의 이름을 입력합니다.
- (선택 사항) 생성 후 이 VirtualMachine 시작 확인란을 선택하여 새 가상 머신을 시작합니다.
- 생성을 클릭합니다.
7.2.6.3. 추가 리소스
7.2.7. PVC 복제를 통해 VM 생성
사용자 정의 이미지로 기존 PVC(영구 볼륨 클레임)를 복제하여 VM(가상 머신)을 생성할 수 있습니다.
Red Hat에서 제공하지 않는 운영 체제 이미지에서 생성된 VM에 QEMU 게스트 에이전트 를 설치해야 합니다.
소스 PVC를 참조하는 데이터 볼륨을 생성하여 PVC를 복제합니다.
7.2.7.1. 복제 정보
데이터 볼륨을 복제할 때 CDI(Containerized Data Importer)는 다음 CSI(Container Storage Interface) 복제 방법 중 하나를 선택합니다.
- CSI 볼륨 복제
- 스마트 복제
CSI 볼륨 복제 및 스마트 복제 방법 모두 효율적이지만 사용하기 위한 특정 요구 사항이 있습니다. 요구 사항이 충족되지 않으면 CDI에서 호스트 지원 복제를 사용합니다. 호스트 지원 복제는 가장 느리고 효율적인 복제 방법이지만 다른 두 복제 방법보다 요구 사항이 적습니다.
7.2.7.1.1. CSI 볼륨 복제
CSI(Container Storage Interface) 복제는 CSI 드라이버 기능을 사용하여 소스 데이터 볼륨을 보다 효율적으로 복제합니다.
CSI 볼륨 복제에는 다음과 같은 요구 사항이 있습니다.
- PVC(영구 볼륨 클레임)의 스토리지 클래스를 지원하는 CSI 드라이버는 볼륨 복제를 지원해야 합니다.
-
CDI에서 인식하지 못하는 프로비저너의 경우 해당 스토리지 프로파일에
cloneStrategy
가 CSI Volume Cloning으로 설정되어 있어야 합니다. - 소스 및 대상 PVC에는 동일한 스토리지 클래스와 볼륨 모드가 있어야 합니다.
-
데이터 볼륨을 생성하는 경우 소스 네임스페이스에
datavolumes/source
리소스를 생성할 수 있는 권한이 있어야 합니다. - 소스 볼륨이 사용 중이 아니어야 합니다.
7.2.7.1.2. 스마트 복제
스냅샷 기능이 있는 CSI(Container Storage Interface) 플러그인을 사용할 수 있는 경우 CDI(Containerized Data Importer)는 스냅샷에서 PVC(영구 볼륨 클레임)를 생성하여 추가 PVC를 효율적으로 복제할 수 있습니다.
스마트 복제에는 다음과 같은 요구 사항이 있습니다.
- 스토리지 클래스와 연결된 스냅샷 클래스가 있어야 합니다.
- 소스 및 대상 PVC에는 동일한 스토리지 클래스와 볼륨 모드가 있어야 합니다.
-
데이터 볼륨을 생성하는 경우 소스 네임스페이스에
datavolumes/source
리소스를 생성할 수 있는 권한이 있어야 합니다. - 소스 볼륨이 사용 중이 아니어야 합니다.
7.2.7.1.3. 호스트 지원 복제
CSI(Container Storage Interface) 볼륨 복제 또는 스마트 복제에 대한 요구 사항이 충족되지 않으면 호스트 지원 복제가 대체 방법으로 사용됩니다. 호스트 지원 복제는 다른 두 복제 방법 중 하나보다 효율적입니다.
호스트 지원 복제는 소스 Pod 및 대상 Pod를 사용하여 소스 볼륨의 데이터를 대상 볼륨으로 복사합니다. 대상 PVC(영구 볼륨 클레임)에는 호스트 지원 복제가 사용된 이유를 설명하고 이벤트가 생성되는 대체 이유가 포함되어 있습니다.
PVC 대상 주석의 예
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: cdi.kubevirt.io/cloneFallbackReason: The volume modes of source and target are incompatible cdi.kubevirt.io/clonePhase: Succeeded cdi.kubevirt.io/cloneType: copy
이벤트 예
NAMESPACE LAST SEEN TYPE REASON OBJECT MESSAGE test-ns 0s Warning IncompatibleVolumeModes persistentvolumeclaim/test-target The volume modes of source and target are incompatible
7.2.7.2. 웹 콘솔을 사용하여 PVC에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 웹 페이지에서 이미지를 가져와 VM(가상 머신)을 생성할 수 있습니다. OpenShift Container Platform 웹 콘솔을 사용하여 PVC(영구 볼륨 클레임)를 복제하여 VM(가상 머신)을 생성할 수 있습니다.
사전 요구 사항
- 이미지가 포함된 웹 페이지에 액세스할 수 있어야 합니다.
- 소스 PVC가 포함된 네임스페이스에 액세스할 수 있어야 합니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동합니다. - 사용 가능한 부팅 소스 없이 템플릿 타일을 클릭합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- 템플릿 매개변수 사용자 지정 페이지의 스토리지를 확장하고 디스크 소스 목록에서 PVC(복제 PVC) 를 선택합니다.
-
이미지 URL을 입력합니다. 예:
https://access.redhat.com/downloads/content/69/ver=/rhel---7/7.9/x86_64/product-software
-
컨테이너 이미지 URL을 입력합니다. 예:
https://mirror.arizona.edu/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2
- PVC 프로젝트 및 PVC 이름을 선택합니다.
- 디스크 크기를 설정합니다.
- 다음을 클릭합니다.
- VirtualMachine 생성을 클릭합니다.
7.2.7.3. 명령줄을 사용하여 PVC에서 VM 생성
명령줄을 사용하여 기존 VM의 PVC(영구 볼륨 클레임)를 복제하여 VM(가상 머신)을 생성할 수 있습니다.
다음 옵션 중 하나를 사용하여 PVC를 복제할 수 있습니다.
새 데이터 볼륨에 PVC 복제.
이 방법은 라이프사이클이 원래 VM과 독립적인 데이터 볼륨을 생성합니다. 원래 VM을 삭제해도 새 데이터 볼륨 또는 연결된 PVC에 영향을 미치지 않습니다.
dataVolumeTemplates
스탠자를 사용하여VirtualMachine
매니페스트를 생성하여 PVC를 복제합니다.이 방법은 라이프사이클이 원래 VM에 종속된 데이터 볼륨을 생성합니다. 원래 VM을 삭제하면 복제된 데이터 볼륨 및 연결된 PVC가 삭제됩니다.
7.2.7.3.1. 데이터 볼륨에 PVC 복제
명령줄을 사용하여 기존 VM(가상 머신) 디스크의 PVC(영구 볼륨 클레임)를 데이터 볼륨에 복제할 수 있습니다.
원래 소스 PVC를 참조하는 데이터 볼륨을 생성합니다. 새 데이터 볼륨의 라이프사이클은 원래 VM과 독립적입니다. 원래 VM을 삭제해도 새 데이터 볼륨 또는 연결된 PVC에 영향을 미치지 않습니다.
소스 및 대상 PV가 kubevirt
콘텐츠 유형에 속하는 경우 PV(블록 영구 볼륨)에서 파일 시스템 PV로의 호스트 지원 복제와 같은 호스트 지원 복제가 지원됩니다.
스마트 복제는 스냅샷을 사용하여 PVC를 복제하기 때문에 호스트 지원 복제보다 빠르고 효율적입니다. 스마트 복제는 Red Hat OpenShift Data Foundation과 같은 스냅샷을 지원하는 스토리지 공급자가 지원합니다.
다양한 볼륨 모드 간 복제는 스마트 복제에 지원되지 않습니다.
사전 요구 사항
- 소스 PVC가 있는 VM의 전원을 꺼야 합니다.
- PVC를 다른 네임스페이스에 복제하는 경우 대상 네임스페이스에 리소스를 생성할 수 있는 권한이 있어야 합니다.
스마트 복제를 위한 추가 사전 요구 사항:
- 스토리지 공급자에서 스냅샷을 지원해야 합니다.
- 소스 및 대상 PVC에는 동일한 스토리지 공급자 및 볼륨 모드가 있어야 합니다.
VolumeSnapshotClass
오브젝트의드라이버
키 값은 다음 예와 같이StorageClass
오브젝트의provisioner
키 값과 일치해야 합니다.VolumeSnapshotClass
오브젝트의 예kind: VolumeSnapshotClass apiVersion: snapshot.storage.k8s.io/v1 driver: openshift-storage.rbd.csi.ceph.com # ...
StorageClass
오브젝트의 예kind: StorageClass apiVersion: storage.k8s.io/v1 # ... provisioner: openshift-storage.rbd.csi.ceph.com
프로세스
다음 예와 같이
DataVolume
매니페스트를 생성합니다.apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <datavolume> 1 spec: source: pvc: namespace: "<source_namespace>" 2 name: "<my_vm_disk>" 3 storage: {}
다음 명령을 실행하여 데이터 볼륨을 생성합니다.
$ oc create -f <datavolume>.yaml
참고데이터 볼륨은 PVC를 준비하기 전에 VM이 시작되지 않습니다. PVC가 복제되는 동안 새 데이터 볼륨을 참조하는 VM을 생성할 수 있습니다.
7.2.7.3.2. 데이터 볼륨 템플릿을 사용하여 복제된 PVC에서 VM 생성
데이터 볼륨 템플릿을 사용하여 기존 VM의 PVC(영구 볼륨 클레임)를 복제하는 VM(가상 머신)을 생성할 수 있습니다.
이 방법은 라이프사이클이 원래 VM에 종속된 데이터 볼륨을 생성합니다. 원래 VM을 삭제하면 복제된 데이터 볼륨 및 연결된 PVC가 삭제됩니다.
사전 요구 사항
- 소스 PVC가 있는 VM의 전원을 꺼야 합니다.
프로세스
다음 예에 표시된 대로
VirtualMachine
매니페스트를 생성합니다.apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: vm-dv-clone name: vm-dv-clone 1 spec: running: false template: metadata: labels: kubevirt.io/vm: vm-dv-clone spec: domain: devices: disks: - disk: bus: virtio name: root-disk resources: requests: memory: 64M volumes: - dataVolume: name: favorite-clone name: root-disk dataVolumeTemplates: - metadata: name: favorite-clone spec: storage: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi source: pvc: namespace: <source_namespace> 2 name: "<source_pvc>" 3
PVC 복제 데이터 볼륨으로 가상 머신을 생성합니다.
$ oc create -f <vm-clone-datavolumetemplate>.yaml