7장. 가상 머신
7.1. 가상 머신 생성
가상 머신을 생성하려면 다음 절차 중 하나를 사용하십시오.
- 가상 머신 마법사 실행
- 가상 머신 마법사를 사용하여 사전 구성된 YAML 파일 붙여넣기
- CLI 사용
- 가상 머신 마법사를 사용하여 VMware 가상 머신 또는 템플릿 가져오기
openshift-*
네임스페이스에 가상 머신을 생성하지 마십시오. 대신 새 네임스페이스를 만들거나 openshift
접두사 없이 기존 네임스페이스를 사용하십시오.
7.1.1. 가상 머신 마법사를 실행하여 가상 머신 생성
웹 콘솔에는 일반, 네트워킹, 스토리지, 고급, 검토 단계를 안내하는 대화식 마법사가 있어 가상 머신 생성 프로세스를 단순화합니다. 모든 필수 필드는 *
로 표시됩니다. 필수 필드가 완료되면 가상 머신을 검토하고 생성할 수 있습니다.
NIC(네트워크 인터페이스 컨트롤러) 및 스토리지 디스크를 생성한 후 가상 머신에 연결할 수 있습니다.
부팅 가능 디스크
일반 단계에서 URL
또는 Container
를 소스로 선택하면 rootdisk
디스크가 생성되어 가상 머신에 부팅 가능 디스크로 연결됩니다. rootdisk
를 수정할 수는 있지만 제거할 수는 없습니다.
가상 머신에 연결된 디스크가 없는 경우 PXE 소스에서 프로비저닝된 가상 머신에는 부팅 가능 디스크가 필요하지 않습니다. 하나 이상의 디스크가 가상 머신에 연결된 경우 하나의 디스크를 부팅 가능 디스크로 선택해야 합니다.
전제 조건
- 마법사를 사용하여 가상 머신을 생성할 때 가상 머신의 스토리지 매체에서 RWX(Read-Write-Many) PVC를 지원해야 합니다.
프로세스
-
사이드 메뉴에서 워크로드
가상화를 클릭합니다. - 가상 머신 탭을 클릭합니다.
- 가상 머신 생성을 클릭하고 마법사로 새로 생성을 선택합니다.
- 일반 단계의 모든 필수 필드를 입력합니다. 템플릿을 선택하면 해당 필드가 자동으로 채워집니다.
다음을 클릭하여 네트워킹 단계를 진행합니다. 기본적으로
nic0
NIC가 연결되어 있습니다.- 선택 사항: 네트워크 인터페이스 추가를 클릭하여 추가 NIC를 생성합니다.
- 선택 사항: 옵션 메뉴 를 클릭하고 삭제를 선택하여 일부 또는 모든 NIC를 제거할 수 있습니다. 가상 머신을 생성하기 위해 NIC를 연결하지 않아도 됩니다. NIC는 가상 머신을 생성한 후 생성할 수 있습니다.
다음을 클릭하여 스토리지 화면을 진행합니다.
- 선택 사항: 디스크 추가를 클릭하여 추가 디스크를 만듭니다. 이러한 디스크는 옵션 메뉴 를 클릭하고 삭제를 선택하여 제거할 수 있습니다.
- 선택 사항: 옵션 메뉴 를 클릭하여 디스크를 편집하고 변경 사항을 저장합니다.
- 검토 및 생성을 클릭합니다. 결과 화면에 가상 머신의 JSON 구성 파일이 표시됩니다.
가상 머신은 가상 머신 탭에 나열됩니다.
웹 콘솔 마법사를 실행하는 경우 가상 머신 마법사 필드 섹션을 참조하십시오.
7.1.1.1. 가상 머신 마법사 필드
이름 | 매개변수 | 설명 |
---|---|---|
템플릿 | 가상 머신을 생성할 템플릿입니다. 템플릿을 선택하면 기타 필드가 자동으로 완성됩니다. | |
소스 | PXE | PXE 메뉴에서 가상 머신을 프로비저닝합니다. 클러스터에 PXE 지원 NIC가 필요합니다. |
URL | HTTP 또는 S3 끝점의 사용 가능한 이미지에서 가상 머신을 프로비저닝합니다. | |
컨테이너 |
클러스터에서 액세스할 수 있는 레지스트리의 부팅 가능한 운영 체제 컨테이너에서 가상 머신을 프로비저닝합니다. 예를 들면 | |
디스크 | 디스크에서 가상 머신을 프로비저닝합니다. | |
운영 체제 | 가상 머신에 대해 선택된 기본 운영 체제입니다. | |
플레이버 | 작음, 중간, 큼, 매우 작음, 사용자 정의 | 가상 머신에 할당된 CPU 및 메모리의 양을 결정하는 사전 설정입니다. 플레이버에 표시되는 사전 설정은 운영 체제에 따라 다릅니다. |
메모리 | 가상 머신에 할당된 메모리 크기(GiB)입니다. | |
CPU | 가상 머신에 할당된 CPU의 양입니다. | |
워크로드 프로필 | 고성능 | 고성능 워크로드에 최적화된 가상 머신 구성입니다. |
서버 | 서버 워크로드를 실행하는 데 최적화된 프로필입니다. | |
데스크탑 | 데스크탑에서 사용할 가상 머신 구성입니다. | |
이름 |
이름에는 소문자( | |
설명 | 선택적 설명 필드입니다. | |
생성 시 가상 머신 시작 | 생성 시 가상 머신을 자동으로 시작하려면 선택합니다. |
7.1.1.2. Cloud-init 필드
이름 | 설명 |
---|---|
호스트 이름 | 가상 머신의 특정 호스트 이름을 설정합니다. |
인증된 SSH 키 | 가상 머신의 ~/.ssh/authorized_keys에 복사되는 사용자의 공개 키입니다. |
사용자 정의 스크립트 | 기타 옵션을 사용자 정의 cloud-init 스크립트를 붙여넣는 필드로 교체합니다. |
7.1.1.3. CD-ROM 필드
소스 | 설명 |
---|---|
컨테이너 |
컨테이너 경로를 지정합니다. 예를 들면 |
URL | URL 경로와 크기(GiB)를 지정합니다. 그런 다음 드롭다운 목록에서 이 URL의 스토리지 클래스를 선택합니다. |
디스크 연결 | 연결할 가상 머신 디스크를 선택합니다. |
7.1.1.4. 네트워킹 필드
이름 | 설명 |
---|---|
이름 | 네트워크 인터페이스 컨트롤러의 이름입니다. |
모델 | 네트워크 인터페이스 컨트롤러의 모델을 나타냅니다. 지원되는 값은 e1000e 및 virtio입니다. |
네트워크 | 사용 가능한 네트워크 연결 정의 목록입니다. |
유형 |
사용 가능한 바인딩 방법 목록입니다. 기본 Pod 네트워크의 경우 권장되는 유일한 바인딩 방법은 |
MAC 주소 | 네트워크 인터페이스 컨트롤러의 MAC 주소입니다. MAC 주소를 지정하지 않으면 주소가 자동으로 할당됩니다. |
7.1.1.5. 스토리지 필드
이름 | 설명 |
---|---|
소스 | 가상 머신의 빈 디스크를 선택하거나 사용 가능한 옵션 중에서 선택합니다. URL,컨테이너,복제된 디스크 연결 또는 디스크 연결. 기존 디스크를 선택하여 가상 머신에 연결하려면 사용 가능한 PVC(영구 볼륨 클레임) 목록에서 복제된 디스크 연결 또는 디스크 연결을 선택합니다. |
이름 |
디스크 이름입니다. 이름에는 소문자( |
크기(GiB) | 디스크 크기(GiB)입니다. |
인터페이스 | 디스크 장치의 유형입니다. 지원되는 인터페이스는 virtIO, SATA, SCSI입니다. |
스토리지 클래스 | 디스크를 만드는 데 사용되는 스토리지 클래스입니다. |
고급 | 영구 볼륨에서 포맷된 파일 시스템을 사용하는지 또는 원시 블록 상태를 사용하는지를 정의합니다. 기본값은 Filesystem입니다. |
고급 | 영구 볼륨의 액세스 모드입니다. 지원되는 액세스 모드는 ReadWriteOnce, ReadOnlyMany, ReadWriteMany입니다. |
고급 스토리지 설정
다음 고급 스토리지 설정은 비어 있음, URL을 통해 가져오기, 기존 PVC 복제 디스크에 사용할 수 있습니다. 해당 매개변수는 선택 사항입니다. 이러한 매개변수를 지정하지 않으면 kubevirt-storage-class-defaults
구성 맵의 기본값이 사용됩니다.
이름 | 매개변수 | 설명 |
---|---|---|
볼륨 모드 | 파일 시스템 | 파일 시스템 기반 볼륨에 가상 디스크를 저장합니다. |
블록 |
가상 디스크를 블록 볼륨에 직접 저장합니다. 기본 스토리지에서 지원하는 경우에만 | |
액세스 모드 | 단일 사용자(RWO) | 디스크는 단일 노드에서 읽기/쓰기로 마운트할 수 있습니다. |
공유 액세스(RWX) | 디스크는 여러 노드에서 읽기/쓰기로 마운트할 수 있습니다. 참고 이는 가상 머신의 노드 간 실시간 마이그레이션 등 일부 기능에 필요합니다. | |
읽기 전용(ROX) | 디스크는 많은 노드에서 읽기 전용으로 마운트할 수 있습니다. |
kubevirt-storage-class-defaults
구성 맵에 대한 자세한 내용은 데이터 볼륨의 스토리지 기본값을 참조하십시오.
7.1.1.6. 사전 구성된 YAML 파일에 붙여넣어 가상 머신 생성
YAML 구성 파일을 쓰거나 붙여넣어 가상 머신을 생성합니다. YAML 편집 화면을 열 때마다 기본적으로 유효한 example
가상 머신 구성이 제공됩니다.
생성을 클릭할 때 YAML 구성이 유효하지 않으면 오류 메시지에 오류가 발생하는 매개변수가 표시됩니다. 한 번에 하나의 오류만 표시됩니다.
편집하는 동안 YAML 화면을 벗어나면 구성 변경 사항이 취소됩니다.
프로세스
-
사이드 메뉴에서 워크로드
가상화를 클릭합니다. - 가상 머신 탭을 클릭합니다.
- 가상 머신 생성을 클릭하고 YAML에서 새로 생성을 선택합니다.
편집 가능한 창에서 가상 머신 구성을 작성하거나 붙여넣습니다.
-
또는 YAML 화면에서 기본적으로 제공되는
example
가상 머신을 사용하십시오.
-
또는 YAML 화면에서 기본적으로 제공되는
- 선택 사항: Download (다운로드)를 클릭하여 YAML 구성 파일을 현재 상태로 다운로드합니다.
- 생성을 클릭하여 가상 머신을 생성합니다.
가상 머신은 가상 머신 탭에 나열됩니다.
7.1.2. CLI를 사용하여 가상 머신 생성
virtualMachine
매니페스트에서 가상 머신을 생성할 수 있습니다.
프로세스
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 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>' 2 chpasswd: { expire: False } name: cloudinitdisk
매니페스트 파일을 사용하여 가상 머신을 생성합니다.
$ oc create -f <vm_manifest_file>.yaml
선택 사항: 가상 머신을 시작합니다.
$ virtctl start <vm_name>
7.1.3. 가상 머신 스토리지 볼륨 유형
스토리지 볼륨 유형 | 설명 |
---|---|
임시 | 네트워크 볼륨을 읽기 전용 백업 저장소로 사용하는 로컬 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.4. 가상 머신 RunStrategies 정보
가상 머신에 대한 RunStrategy
는 일련의 조건에 따라 VMI(가상 머신 인스턴스)의 동작을 결정합니다. spec.runStrategy
설정은 spec.running
설정의 대안으로, 가상 머신 구성 프로세스 내에 있습니다. spec.runStrategy
설정을 사용하면 true
또는 false
응답만 있는 spec.running
설정과 달리 VMI를 만들고 관리하는 방법에 대한 유연성을 높일 수 있습니다. 그러나 두 설정은 함께 사용할 수 없습니다. spec.running
또는 spec.runStrategy
중 하나만 사용할 수 있습니다. 둘 다 사용하면 오류가 발생합니다.
RunStrategies는 다음과 같이 네 가지로 정의되어 있습니다.
Always
-
가상 머신이 생성될 때 VMI가 항상 존재합니다. 어떠한 이유로 원본이 중지되면 새 VMI가 생성되는데, 이러한 동작은
spec.running: true
와 동일합니다. RerunOnFailure
- 오류로 인해 이전 인스턴스가 실패하면 VMI가 다시 생성됩니다. 가상 머신이 종료될 때와 같이 성공적으로 중지되면 인스턴스가 다시 생성되지 않습니다.
Manual
-
start
,stop
,restart
virtctl 클라이언트 명령을 사용하여 VMI의 상태 및 존재를 제어할 수 있습니다. Halted
-
가상 머신이 생성될 때 VMI가 존재하지 않으며 이 동작은
spec.running: false
와 동일합니다.
start
, stop
, restart
virtctl 명령의 다양한 조합은 사용되는 RunStrategy
에 영향을 미칩니다.
다음 표에는 다양한 상태에 따른 VM 전환이 표시되어 있습니다. 첫 번째 열에는 VM의 초기 RunStrategy
가 표시되어 있습니다. 각 추가 열에는 virtctl 명령과 해당 명령이 실행된 후의 새 RunStrategy
가 표시되어 있습니다.
초기 RunStrategy | 시작 | 중지 | 재시작 |
---|---|---|---|
Always | - | Halted | Always |
RerunOnFailure | - | Halted | RerunOnFailure |
Manual | Manual | Manual | Manual |
Halted | Always | - | - |
설치 관리자 프로비저닝 인프라를 사용하여 설치한 OpenShift Virtualization 클러스터에서 노드가 MachineHealthCheck에 실패하여 클러스터에서 노드를 사용할 수 없는 경우, 새 노드에 RunStrategy가 Always
또는 RerunOnFailure
인 VM이 다시 예약됩니다.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
spec:
RunStrategy: Always 1
template:
...
- 1
- VMI의 현재
RunStrategy
설정입니다.
7.1.5. 추가 리소스
KubeVirt v0.34.1 API 참조의
VirtualMachineSpec
정의에는 가상 머신 사양에 대한 매개변수 및 계층 구조에 대한 광범위한 컨텍스트가 있습니다.참고KubeVirt API 참조는 업스트림 프로젝트 참조이며 OpenShift Virtualization에서 지원되지 않는 매개변수를 포함할 수 있습니다.
-
가상 머신에
containerDisk
볼륨으로 추가할 컨테이너 디스크를 준비합니다. - 머신 상태 점검 배포 및 활성화에 대한 자세한 내용은 머신 상태 점검 배포를 참조하십시오.
- 설치 관리자 프로비저닝 인프라에 대한 자세한 내용은 설치 관리자 프로비저닝 인프라 개요를 참조하십시오.