7장. 가상 머신
7.1. Red Hat 이미지에서 VM 생성
7.1.1. Red Hat 이미지에서 가상 머신 생성 개요
Red Hat 이미지는 골든 이미지입니다. 보안 레지스트리에 컨테이너 디스크로 게시됩니다. CDI(Containerized Data Importer)는 컨테이너 디스크를 폴링하고 클러스터로 가져와 openshift-virtualization-os-images
프로젝트에 스냅샷 또는 PVC(영구 볼륨 클레임)로 저장합니다.
Red Hat 이미지가 자동으로 업데이트됩니다. 이러한 이미지에 대한 자동 업데이트를 비활성화하고 다시 활성화할 수 있습니다. Red Hat 부팅 소스 업데이트 관리를 참조하십시오.
클러스터 관리자는 OpenShift Virtualization 웹 콘솔 의 RHEL(Red Hat Enterprise Linux) 가상 머신에 대한 자동 서브스크립션을 활성화할 수 있습니다.
다음 방법 중 하나를 사용하여 Red Hat에서 제공하는 운영 체제 이미지에서 VM(가상 머신)을 생성할 수 있습니다.
기본 openshift-*
네임스페이스에 VM을 생성하지 마십시오. 대신 새 네임스페이스를 만들거나 openshift
접두사 없이 기존 네임스페이스를 사용하십시오.
7.1.1.1. 골든 이미지 정보
골든 이미지는 새 VM을 배포하는 리소스로 사용할 수 있는 VM(가상 머신)의 사전 구성된 스냅샷입니다. 예를 들어 golden 이미지를 사용하여 동일한 시스템 환경을 일관되게 프로비저닝하고 시스템을 보다 신속하고 효율적으로 배포할 수 있습니다.
7.1.1.1.1. 골든 이미지는 어떻게 작동합니까?
Cryostat 이미지는 참조 머신 또는 가상 머신에 운영 체제 및 소프트웨어 애플리케이션을 설치하고 구성하여 생성됩니다. 여기에는 시스템 설정, 필요한 드라이버 설치, 패치 및 업데이트 적용, 특정 옵션 및 기본 설정 구성이 포함됩니다.
golden 이미지가 생성되면 여러 클러스터에 복제 및 배포할 수 있는 템플릿 또는 이미지 파일로 저장됩니다. golden 이미지는 필요한 소프트웨어 업데이트 및 패치를 통합하기 위해 유지 관리자에 의해 주기적으로 업데이트할 수 있으므로 이미지가 최신 상태로 유지되고 새로 생성된 VM은 업데이트된 이미지를 기반으로 합니다.
7.1.1.1.2. Red Hat의 골든 이미지 구현
Red Hat은 RHEL(Red Hat Enterprise Linux) 버전의 레지스트리에 골든 이미지를 컨테이너 디스크로 게시합니다. 컨테이너 디스크는 컨테이너 이미지 레지스트리에 컨테이너 이미지로 저장된 가상 머신 이미지입니다. OpenShift Virtualization을 설치한 후 게시된 이미지는 연결된 클러스터에서 자동으로 사용할 수 있습니다. 클러스터에서 이미지를 사용할 수 있게 되면 VM을 생성하는 데 사용할 수 있습니다.
7.1.1.2. VM 부팅 소스 정보
VM(가상 머신)은 VM 정의와 데이터 볼륨에서 지원하는 하나 이상의 디스크로 구성됩니다. VM 템플릿을 사용하면 사전 정의된 사양을 사용하여 VM을 생성할 수 있습니다.
모든 템플릿에는 구성된 드라이버를 포함하여 완전히 구성된 디스크 이미지인 부팅 소스가 필요합니다. 각 템플릿에는 부팅 소스에 대한 포인터가 있는 VM 정의가 포함되어 있습니다. 각 부팅 소스에는 사전 정의된 이름과 네임스페이스가 있습니다. 일부 운영 체제의 경우 부팅 소스가 자동으로 제공됩니다. 제공되지 않는 경우 관리자는 사용자 지정 부팅 소스를 준비해야 합니다.
제공된 부팅 소스는 운영 체제의 최신 버전으로 자동으로 업데이트됩니다. 자동 업데이트된 부팅 소스의 경우 PVC(영구 볼륨 클레임) 및 볼륨 스냅샷은 클러스터의 기본 스토리지 클래스를 사용하여 생성됩니다. 구성 후 다른 기본 스토리지 클래스를 선택하는 경우 이전 기본 스토리지 클래스로 구성된 클러스터 네임스페이스의 기존 부팅 소스를 삭제해야 합니다.
7.1.2. 템플릿에서 가상 머신 생성
OpenShift Container Platform 웹 콘솔을 사용하여 Red Hat 템플릿에서 VM(가상 머신)을 생성할 수 있습니다.
7.1.2.1. VM 템플릿 정보
- 부팅 소스
사용 가능한 부팅 소스가 있는 템플릿을 사용하여 VM 생성을 신속하게 수행할 수 있습니다. 부팅 소스가 있는 템플릿에는 사용자 지정 레이블이 없는 경우 사용 가능한 부팅 소스에 레이블이 지정됩니다.
부팅 소스가 없는 템플릿에는 부팅 소스 필수 라고 레이블이 지정됩니다. 사용자 지정 이미지에서 가상 머신 생성 을 참조하십시오.
- 사용자 정의
VM을 시작하기 전에 디스크 소스 및 VM 매개변수를 사용자 지정할 수 있습니다.
- 디스크 소스 설정에 대한 자세한 내용은 스토리지 볼륨 유형 및 스토리지 필드를 참조하십시오.
- VM 설정에 대한 자세한 내용은 개요, YAML 및 구성 탭 설명서를 참조하십시오.
모든 레이블 및 주석이 있는 VM 템플릿을 복사하는 경우 새 버전의 Scheduling, Scale, Performance (SSP) Operator가 배포될 때 템플릿의 버전이 더 이상 사용되지 않는 것으로 표시됩니다. 이 지정을 제거할 수 있습니다. 웹 콘솔을 사용하여 VM 템플릿 사용자 지정을 참조하십시오.
- Single-node OpenShift
-
스토리지 동작의 차이로 인해 일부 템플릿은 단일 노드 OpenShift와 호환되지 않습니다. 호환성을 유지하려면 데이터 볼륨 또는 스토리지 프로필을 사용하는 템플릿 또는 VM에 대해
evictionStrategy
필드를 설정하지 마십시오.
7.1.2.2. 템플릿에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 사용 가능한 부팅 소스가 있는 템플릿에서 VM(가상 머신)을 생성할 수 있습니다.
선택 사항: VM을 시작하기 전에 템플릿 또는 VM 매개변수(예: 데이터 소스, cloud-init 또는 SSH 키)를 사용자 지정할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동합니다. 사용 가능한 부팅 소스 를 클릭하여 부팅 소스로 템플릿을 필터링합니다.
카탈로그에 기본 템플릿이 표시됩니다. 모든 항목을 클릭하여 필터에 사용 가능한 모든 템플릿을 확인합니다.
- 템플릿 타일을 클릭하여 세부 정보를 봅니다.
Quick create VirtualMachine 를 클릭하여 템플릿에서 VM을 생성합니다.
선택 사항: template 또는 VM 매개변수를 사용자 지정합니다.
- VirtualMachine 사용자 지정을 클릭합니다.
- 스토리지 또는 선택적 매개변수를 확장하여 데이터 소스 설정을 편집합니다.
VirtualMachine 매개변수 사용자 지정을 클릭합니다.
Customize and create VirtualMachine 창에는 Overview,YAML,Scheduling,Environment,Network interfaces,Disks,Scripts, Metadata 탭이 표시됩니다.
- VM이 부팅되기 전에 설정해야 하는 매개변수(예: cloud-init 또는 정적 SSH 키)를 편집합니다.
VirtualMachine 생성을 클릭합니다.
VirtualMachine 세부 정보 페이지에 프로비저닝 상태가 표시됩니다.
7.1.2.2.1. 스토리지 볼륨 유형
유형 | 설명 |
---|---|
임시 | 네트워크 볼륨을 읽기 전용 백업 저장소로 사용하는 로컬 COW(기록 중 복사) 이미지입니다. 백업 볼륨은 PersistentVolumeClaim이어야 합니다. 임시 이미지는 가상 머신이 시작되고 모든 쓰기를 로컬로 저장할 때 생성됩니다. 임시 이미지는 가상 머신이 중지, 재시작 또는 삭제될 때 삭제됩니다. 백업 볼륨(PVC)은 어떤 식으로든 변경되지 않습니다. |
persistentVolumeClaim | 사용 가능한 PV를 가상 머신에 연결합니다. PV를 연결하면 세션이 바뀌어도 가상 머신 데이터가 지속됩니다. 기존 가상 머신을 OpenShift Container Platform으로 가져올 때는 CDI를 사용하여 기존 가상 머신 디스크를 PVC로 가져와서 PVC를 가상 머신 인스턴스에 연결하는 것이 좋습니다. PVC 내에서 디스크를 사용하려면 몇 가지 요구 사항이 있습니다. |
dataVolume |
데이터 볼륨은 가져오기, 복제 또는 업로드 작업을 통해 가상 머신 디스크를 준비하는 프로세스를 관리하여
|
cloudInitNoCloud | 참조된 cloud-init NoCloud 데이터 소스가 포함된 디스크를 연결하여 가상 머신에 사용자 데이터 및 메타데이터를 제공합니다. 가상 머신 디스크 내부에 cloud-init을 설치해야 합니다. |
containerDisk | 컨테이너 이미지 레지스트리에 저장된 가상 머신 디스크와 같은 이미지를 참조합니다. 이 이미지는 가상 머신이 시작될 때 레지스트리에서 가져와서 가상 머신에 디스크로 연결됩니다.
컨테이너 이미지 레지스트리에는 RAW 및 QCOW2 형식의 디스크 유형만 지원됩니다. 이미지 크기를 줄이기 위해 QCOW2를 사용하는 것이 좋습니다. 참고
|
emptyDisk | 가상 머신 인터페이스의 라이프사이클에 연결된 추가 스파스(sparse) QCOW2 디스크를 생성합니다. 해당 데이터는 가상 머신에서 게스트가 시작한 재부팅 후에는 유지되지만 가상 머신이 중지되거나 웹 콘솔에서 재시작되면 삭제됩니다. 빈 디스크는 임시 디스크의 제한된 임시 파일 시스템 크기를 초과하지 않도록 애플리케이션 종속성 및 데이터를 저장하는 데 사용됩니다. 디스크 용량 크기도 제공해야 합니다. |
7.1.2.2.2. 스토리지 필드
필드 | 설명 |
---|---|
비어있음 (PVC 생성) | 빈 디스크를 만듭니다. |
URL을 통해 가져오기(PVC 생성) | URL(HTTP 또는 HTTPS 끝점)을 통해 콘텐츠를 가져옵니다. |
기존 PVC 사용 | 클러스터에서 이미 사용 가능한 PVC를 사용합니다. |
기존 PVC 복제 (PVC 생성) | 클러스터에서 사용 가능한 기존 PVC를 선택하고 복제합니다. |
레지스트리를 통해 가져오기(PVC 생성) | 컨테이너 레지스트리를 통해 콘텐츠를 가져옵니다. |
컨테이너 (임시) | 클러스터에서 액세스할 수 있는 레지스트리에 있는 컨테이너에서 콘텐츠를 업로드합니다. 컨테이너 디스크는 CD-ROM 또는 임시 가상 머신과 같은 읽기 전용 파일 시스템에만 사용해야 합니다. |
이름 |
디스크 이름입니다. 이름에는 소문자( |
크기 | 디스크 크기(GiB)입니다. |
유형 | 디스크의 유형입니다. 예: 디스크 또는 CD-ROM |
인터페이스 | 디스크 장치의 유형입니다. 지원되는 인터페이스는 virtIO, SATA, SCSI입니다. |
스토리지 클래스 | 디스크를 만드는 데 사용되는 스토리지 클래스입니다. |
고급 스토리지 설정
다음 고급 스토리지 설정은 선택 사항이며 Blank 에서 사용할 수 있으며URL을 통해 가져오기, 기존 PVC 복제 디스크에 사용할 수 있습니다.
이러한 매개변수를 지정하지 않으면 시스템은 기본 스토리지 프로필 값을 사용합니다.
매개변수 | 옵션 | 매개변수 설명 |
---|---|---|
볼륨 모드 | 파일 시스템 | 파일 시스템 기반 볼륨에 가상 디스크를 저장합니다. |
블록 |
가상 디스크를 블록 볼륨에 직접 저장합니다. 기본 스토리지에서 지원하는 경우에만 | |
액세스 모드 | ReadWriteOnce (RWO) | 볼륨은 단일 노드에서 읽기-쓰기로 마운트할 수 있습니다. |
ReadWriteMany (RWX) | 볼륨은 한 번에 여러 노드에서 읽기-쓰기로 마운트할 수 있습니다. 참고 이 모드는 실시간 마이그레이션에 필요합니다. |
7.1.2.2.3. 웹 콘솔을 사용하여 VM 템플릿 사용자 정의
VM을 시작하기 전에 데이터 소스, cloud-init 또는 SSH 키와 같은 VM 또는 템플릿 매개 변수를 수정하여 기존 VM(가상 머신) 템플릿을 사용자 지정할 수 있습니다. 복사하여 템플릿을 사용자 지정하고 모든 레이블 및 주석을 포함하여 템플릿을 사용자 지정하면 새 버전의 스케줄링, 스케일 및 성능(SSP) Operator가 배포될 때 사용자 지정 템플릿이 더 이상 사용되지 않는 것으로 표시됩니다.
사용자 지정 템플릿에서 더 이상 사용되지 않는 지정을 제거할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
템플릿 으로 이동합니다. - VM 템플릿 목록에서 더 이상 사용되지 않는 것으로 표시된 템플릿을 클릭합니다.
- 레이블 옆에 있는 연필 아이콘 옆에 있는 편집을 클릭합니다.
다음 두 레이블을 제거합니다.
-
template.kubevirt.io/type: "base"
-
template.kubevirt.io/version: "version"
-
- 저장을 클릭합니다.
- 기존 주석 수 옆에 있는 연필 아이콘을 클릭합니다.
다음 주석을 제거합니다.
-
template.kubevirt.io/deprecated
-
- 저장을 클릭합니다.
7.1.3. 인스턴스 유형에서 가상 머신 생성
OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 수 있습니다.
인스턴스 유형에서 VM을 생성하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
7.1.3.1. 인스턴스 유형에서 VM 생성
OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 수 있습니다.
프로세스
-
웹 콘솔에서 가상화
카탈로그 로 이동하여 InstanceTypes 탭을 클릭합니다. 부팅 가능한 볼륨을 선택합니다.
참고볼륨 테이블에는
instancetype.kubevirt.io/default-preference
레이블이 있는openshift-virtualization-os-images
네임스페이스의 볼륨만 나열됩니다.- 인스턴스 유형 타일을 클릭하고 워크로드에 적합한 구성을 선택합니다.
- 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 VirtualMachine details 섹션에서 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭합니다.
다음 옵션 중 하나를 선택합니다.
- Use existing: 시크릿 목록에서 시크릿을 선택합니다.
새 추가:
- 공개 SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
- 시크릿 이름을 입력합니다.
- 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
- 저장을 클릭합니다.
- 선택 사항: YAML 및 CLI 보기를 클릭하여 YAML 파일을 확인합니다. CLI 를 클릭하여 CLI 명령을 확인합니다. YAML 파일 콘텐츠 또는 CLI 명령을 다운로드하거나 복사할 수도 있습니다.
- VirtualMachine 생성을 클릭합니다.
VM이 생성되면 VirtualMachine 세부 정보 페이지에서 상태를 모니터링할 수 있습니다.
7.1.4. 명령줄에서 가상 머신 생성
VirtualMachine
매니페스트를 편집하거나 생성하여 명령줄에서 VM(가상 머신)을 생성할 수 있습니다.
7.1.4.1. VirtualMachine 매니페스트에서 VM 생성
VirtualMachine
매니페스트에서 VM(가상 머신)을 생성할 수 있습니다.
프로세스
VM의
VirtualMachine
매니페스트를 편집합니다. 다음 예제에서는 RHEL(Red Hat Enterprise Linux) VM을 구성합니다.예 7.1. RHEL VM의 매니페스트 예
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: labels: app: <vm_name> 1 name: <vm_name> spec: dataVolumeTemplates: - apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: <vm_name> spec: sourceRef: kind: DataSource name: rhel9 2 namespace: openshift-virtualization-os-images storage: resources: requests: storage: 30Gi running: false template: metadata: labels: kubevirt.io/domain: <vm_name> spec: domain: cpu: cores: 1 sockets: 2 threads: 1 devices: disks: - disk: bus: virtio name: rootdisk - disk: bus: virtio name: cloudinitdisk interfaces: - masquerade: {} name: default rng: {} features: smm: enabled: true firmware: bootloader: efi: {} resources: requests: memory: 8Gi evictionStrategy: LiveMigrate networks: - name: default pod: {} volumes: - dataVolume: name: <vm_name> name: rootdisk - cloudInitNoCloud: userData: |- #cloud-config user: cloud-user password: '<password>' 3 chpasswd: { expire: False } name: cloudinitdisk
매니페스트 파일을 사용하여 가상 머신을 생성합니다.
$ oc create -f <vm_manifest_file>.yaml
선택 사항: 가상 머신을 시작합니다.
$ virtctl start <vm_name> -n <namespace>