8.15. 가상 머신 가져오기
8.15.1. 데이터 볼륨 가져오기에 필요한 TLS 인증서
8.15.1.1. 데이터 볼륨 가져오기 인증을 위한 TLS 인증서 추가
레지스트리 또는 HTTPS에서 데이터를 가져오려면 이러한 소스 끝점에 대한 TLS 인증서를 구성 맵에 추가해야 합니다. 이 구성 맵은 대상 데이터 볼륨의 네임스페이스에 있어야 합니다.
TLS 인증서의 상대 파일 경로를 참조하여 구성 맵을 만듭니다.
절차
올바른 네임스페이스에 있는지 확인합니다. 구성 맵은 동일한 네임스페이스에 있는 경우에만 데이터 볼륨에서 참조할 수 있습니다.
$ oc get ns
config map을 생성합니다.
$ oc create configmap <configmap-name> --from-file=</path/to/file/ca.pem>
8.15.1.2. 예제: TLS 인증서에서 생성된 구성 맵
다음은 ca.pem
TLS 인증서에서 생성한 구성 맵의 예입니다.
apiVersion: v1 kind: ConfigMap metadata: name: tls-certs data: ca.pem: | -----BEGIN CERTIFICATE----- ... <base64 encoded cert> ... -----END CERTIFICATE-----
8.15.2. 데이터 볼륨을 사용하여 가상 머신 이미지 가져오기
데이터 볼륨을 사용하여 가상 머신 이미지를 PVC(영구 볼륨 클레임)로 가져오려면 CDI(Containerized Data Importer)를 사용합니다. 영구 저장을 위해 데이터 볼륨을 가상 머신에 연결할 수 있습니다.
가상 머신 이미지는 HTTP 또는 HTTPS 끝점에서 호스팅하거나, 컨테이너 디스크에 빌드하고 컨테이너 레지스트리에 저장할 수 있습니다.
디스크 이미지를 PVC로 가져오면 PVC에 요청한 전체 스토리지 용량을 사용하도록 디스크 이미지가 확장됩니다. 이 공간을 사용하기 위해 가상 머신의 디스크 파티션 및 파일 시스템을 확장해야 할 수 있습니다.
크기 조정 절차는 가상 머신에 설치된 운영 체제에 따라 다릅니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.
8.15.2.1. 사전 요구 사항
- 끝점에 TLS 인증서가 필요한 경우 인증서가 데이터 볼륨과 동일한 네임스페이스의 구성 맵에 포함되어 있고 데이터 볼륨 구성에 참조되어 있어야 합니다.
컨테이너 디스크를 가져오려면 다음을 수행합니다.
- 가져오기 전에 가상 머신 이미지에서 컨테이너 디스크를 준비하여 컨테이너 레지스트리에 저장해야 할 수 있습니다.
-
컨테이너 레지스트리에 TLS가 없는 경우 컨테이너 디스크를 가져오기 전에
HyperConverged
사용자 지정 리소스의insecureRegistries
필드에 레지스트리를 추가해야 합니다.
- 이 작업을 완료하려면 스토리지 클래스를 정의하거나 CDI 스크래치 공간을 준비해야 할 수 있습니다.
8.15.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 클러스터 전체 프록시 구성을 사용합니다.
8.15.2.3. 데이터 볼륨 정보
Dataolume
오브젝트는 CDI(Containerized Data Importer) 프로젝트에서 제공하는 사용자 정의 리소스입니다. 데이터 볼륨은 기본 PVC(영구 볼륨 클레임)와 관련된 가져오기, 복제, 업로드 작업을 오케스트레이션합니다. 데이터 볼륨은 OpenShift Virtualization과 통합되며 PVC가 준비되기 전에 가상 머신이 시작되지 않도록 합니다.
8.15.2.4. 데이터 볼륨을 사용하여 가상 머신 이미지를 스토리지로 가져오기
데이터 볼륨을 사용하여 가상 머신 이미지를 스토리지로 가져올 수 있습니다.
가상 머신 이미지는 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: 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 인증서 구성 맵을 지정합니다.
가상 머신을 생성합니다.
$ oc create -f vm-fedora-datavolume.yaml
참고oc create
명령은 데이터 볼륨과 가상 머신을 생성합니다. CDI 컨트롤러에서 올바른 주석을 사용하여 기본 PVC를 생성하고 가져오기 프로세스가 시작됩니다. 가져오기가 완료되면 데이터 볼륨 상태가Succeeded
로 변경됩니다. 가상 머신을 시작할 수 있습니다.데이터 볼륨 프로비저닝은 백그라운드에서 이루어지므로 프로세스를 모니터링할 필요가 없습니다.
검증
가져오기 Pod는 지정된 URL에서 가상 머신 이미지 또는 컨테이너 디스크를 다운로드하여 프로비저닝된 PV에 저장합니다. 다음 명령을 실행하여 가져오기 Pod의 상태를 확인합니다.
$ oc get pods
다음 명령을 실행하여 상태가
Succeeded
될 때까지 데이터 볼륨을 모니터링합니다.$ oc describe dv fedora-dv 1
- 1
VirtualMachine
매니페스트에 정의된 데이터 볼륨 이름을 지정합니다.
직렬 콘솔에 액세스하여 프로비저닝이 완료되고 가상 머신이 시작되었는지 확인합니다.
$ virtctl console vm-fedora-datavolume
8.15.2.5. 추가 리소스
- 데이터 볼륨 작업에 대한 쓰기 성능을 향상하기 위해 사전 할당 모드를 구성합니다.
8.15.3. 데이터 볼륨을 사용하여 가상 머신 이미지를 블록 스토리지로 가져오기
기존 가상 머신 이미지를 OpenShift Container Platform 클러스터로 가져올 수 있습니다. OpenShift Virtualization은 데이터 볼륨을 사용하여 데이터 가져오기와 기본 PVC(영구 볼륨 클레임) 생성을 자동화합니다.
디스크 이미지를 PVC로 가져오면 PVC에 요청한 전체 스토리지 용량을 사용하도록 디스크 이미지가 확장됩니다. 이 공간을 사용하기 위해 가상 머신의 디스크 파티션 및 파일 시스템을 확장해야 할 수 있습니다.
크기 조정 절차는 가상 머신에 설치된 운영 체제에 따라 다릅니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.
8.15.3.1. 사전 요구 사항
- CDI 지원 작업 매트릭스에 따라 스크래치 공간이 필요한 경우, 이 작업을 완료하기 위해서는 먼저 스토리지 클래스를 정의하거나 CDI 스크래치 공간을 준비해야 합니다.
8.15.3.2. 데이터 볼륨 정보
Dataolume
오브젝트는 CDI(Containerized Data Importer) 프로젝트에서 제공하는 사용자 정의 리소스입니다. 데이터 볼륨은 기본 PVC(영구 볼륨 클레임)와 관련된 가져오기, 복제, 업로드 작업을 오케스트레이션합니다. 데이터 볼륨은 OpenShift Virtualization과 통합되며 PVC가 준비되기 전에 가상 머신이 시작되지 않도록 합니다.
8.15.3.3. 블록 영구 볼륨 정보
PV(블록 영구 볼륨)는 원시 블록 장치에서 지원하는 PV입니다. 이러한 볼륨은 파일 시스템이 없으며 오버헤드를 줄여 가상 머신의 성능을 향상시킬 수 있습니다.
원시 블록 볼륨은 volumeMode를 지정하여 프로비저닝됩니다. PV 및 PVC(영구 볼륨 클레임) 사양에서 block
8.15.3.4. 로컬 블록 영구 볼륨 생성
파일을 채우고 루프 장치로 마운트하여 노드에 로컬 블록 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
- 이전 단계에서 생성한 영구 볼륨의 파일 이름입니다.
8.15.3.5. 데이터 볼륨을 사용하여 가상 머신 이미지를 블록 스토리지로 가져오기
데이터 볼륨을 사용하여 가상 머신 이미지를 블록 스토리지로 가져올 수 있습니다. 가상 머신을 생성하기 전에 VirtualMachine
매니페스트의 데이터 볼륨을 참조합니다.
사전 요구 사항
-
RAW, ISO 또는 QCOW2 형식의 가상 머신 디스크 이미지(필요한 경우
xz
또는gz
를 사용하여 압축) - 데이터 소스에 액세스하는 데 필요한 인증 자격 증명과 함께 이미지가 호스팅되는 HTTP 또는 HTTPS 끝점
절차
데이터 소스에 인증이 필요한 경우 데이터 소스 인증 정보를 지정하여
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
DataVolume
매니페스트를 생성하여 가상 머신 이미지의 데이터 소스 및storage.volumeMode
의 경우Block
을 지정합니다.apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: import-pv-datavolume 1 spec: storageClassName: local 2 source: http: url: "https://mirror.arizona.edu/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-35-1.2.x86_64.qcow2" 3 secretRef: endpoint-secret 4 storage: volumeMode: Block 5 resources: requests: storage: 10Gi
데이터 볼륨을 생성하여 가상 머신 이미지를 가져옵니다.
$ oc create -f import-pv-datavolume.yaml
가상 머신을 생성하기 전에 VirtualMachine
매니페스트에서 이 데이터 볼륨을 참조할 수 있습니다.
8.15.3.6. CDI 지원 작업 매트릭스
이 매트릭스에는 끝점에 대한 콘텐츠 유형에 따라 지원되는 CDI 작업과 이러한 작업 중 스크래치 공간이 필요한 작업이 표시되어 있습니다.
콘텐츠 유형 | HTTP | HTTPS | HTTP 기본 인증 | 레지스트리 | 업로드 |
---|---|---|---|---|---|
KubeVirt (QCOW2) |
✓ QCOW2 |
✓ QCOW2** |
✓ QCOW2 |
✓ QCOW2* |
✓ QCOW2* |
KubeVirt(RAW) |
✓ RAW |
✓ RAW |
✓ RAW |
✓ RAW* |
✓ RAW* |
✓ 지원되는 작업
□ 지원되지 않는 작업
* 스크래치 공간 필요
** 사용자 정의 인증 기관이 필요한 경우 스크래치 공간 필요
이제 CDI에서 OpenShift Container Platform 클러스터 전체 프록시 구성을 사용합니다.
8.15.3.7. 추가 리소스
- 데이터 볼륨 작업에 대한 쓰기 성능을 향상하기 위해 사전 할당 모드를 구성합니다.
8.15.4. 단일 Red Hat Virtualization 가상 머신 가져오기
VM 가져오기 마법사 또는 CLI를 사용하여 단일 RHV(Red Hat Virtualization) 가상 머신을 OpenShift Virtualization으로 가져올 수 있습니다.
RHV VM 가져오기는 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Virtualization에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Virtualization에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Virtualization 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
이 기능은 Migration Toolkit for Virtualization으로 대체됩니다.
8.15.4.1. OpenShift Virtualization 스토리지 기능 매트릭스
다음 표에는 VM 가져오기를 지원하는 OpenShift Virtualization 스토리지 유형이 설명되어 있습니다.
RHV VM 가져오기 | |
---|---|
OpenShift Container Storage: rbd 블록 모드 볼륨 | 있음 |
OpenShift Virtualization hostpath 프로비전 프로그램 | 아니요 |
기타 다중 노드 쓰기 가능 스토리지 | 예 [1] |
기타 단일 노드 쓰기 가능 스토리지 | 예 [2] |
- PVC에서 ReadWriteMany 액세스 모드를 요청해야 합니다.
- PVC에서 ReadWriteOnce 액세스 모드를 요청해야 합니다.
8.15.4.2. 가상 머신 가져오기 사전 요구 사항
RHV(Red Hat Virtualization)에서 OpenShift Virtualization으로 가상 머신을 가져오려면 다음과 같은 사전 요구 사항을 충족해야 합니다.
- 관리자 권한이 있어야 합니다.
스토리지:
- OpenShift Virtualization 로컬 및 공유 영구 스토리지 클래스에서 VM 가져오기를 지원해야 합니다.
- 가상 디스크에 Ceph RBD 블록 모드 볼륨을 사용하고 있고 사용 가능한 스토리지 공간이 가상 디스크에 비해 너무 작으면 가져오기 프로세스 표시줄이 75%에서 20분 이상 중지되고 마이그레이션이 실패합니다. 웹 콘솔에 오류 메시지가 표시되지 않습니다. BZ#1910019
네트워크:
- RHV 네트워크와 OpenShift Virtualization 네트워크는 이름이 동일하거나 서로 매핑되어야 합니다.
-
RHV VM 네트워크 인터페이스는
e1000
,rtl8139
또는virtio
여야 합니다.
VM 디스크:
-
디스크 인터페이스는
sata
,virtio_scsi
또는virtio
여야 합니다. - 디스크를 직접 LUN으로 구성하지 않아야 합니다.
-
디스크 상태는
illegal
또는locked
가 아니어야 합니다. -
스토리지 유형이
image
여야 합니다. - SCSI 예약을 비활성화해야 합니다.
-
ScsiGenericIO
를 비활성화해야 합니다.
-
디스크 인터페이스는
VM 구성:
- VM에서 GPU 리소스를 사용하는 경우 GPU를 제공하는 노드를 구성해야 합니다.
- VM을 vGPU 리소스용으로 구성해서는 안 됩니다.
-
VM에
illegal
상태의 디스크가 있는 스냅샷이 없어야 합니다. - VM을 OpenShift Container Platform으로 생성한 후 RHV에 추가해서는 안 됩니다.
- VM을 USB 장치용으로 구성해서는 안 됩니다.
-
워치독 모델은
diag288
이 아니어야 합니다.
8.15.4.3. VM 가져오기 마법사를 사용하여 가상 머신 가져오기
VM 가져오기 마법사를 사용하여 단일 가상 머신을 가져올 수 있습니다.
절차
-
웹 콘솔에서 워크로드
가상 머신을 클릭합니다. - 가상 머신 생성을 클릭하고 마법사로 가져오기를 선택합니다.
- 공급자 목록에서 RHV(Red Hat Virtualization)를 선택합니다.
새 인스턴스에 연결 또는 저장된 RHV 인스턴스를 선택합니다.
새 인스턴스에 연결을 선택하는 경우 다음 필드를 채우십시오.
-
API URL: 예를 들면
https://<RHV_Manager_FQDN>/ovirt-engine/api
입니다. CA 인증서: Browse(찾아보기 )를 클릭하여 RHV Manager CA 인증서를 업로드하거나 CA 인증서를 필드에 붙여넣습니다.
다음 명령을 실행하여 CA 인증서를 확인합니다.
$ openssl s_client -connect <RHV_Manager_FQDN>:443 -showcerts < /dev/null
CA 인증서는 출력의 두 번째 인증서입니다.
-
사용자 이름: RHV Manager 사용자 이름(예:
ocpadmin@internal
) - 암호: RHV Manager 암호
-
API URL: 예를 들면
- 저장된 RHV 인스턴스를 선택하면 저장된 자격 증명을 사용하여 마법사가 RHV 인스턴스에 연결됩니다.
확인 및 저장을 클릭하고 연결이 완료될 때까지 기다립니다.
참고연결 세부 정보는 시크릿에 저장됩니다. 잘못된 URL, 사용자 이름 또는 암호를 사용하여 공급자를 추가하는 경우 워크로드
시크릿을 클릭하고 공급자 시크릿을 삭제합니다. - 클러스터와 가상 머신을 선택합니다.
- 다음을 클릭합니다.
- 검토 화면에서 설정을 검토합니다.
- 선택 사항: 생성 시 가상 머신 시작을 선택할 수 있습니다.
편집을 클릭하여 다음 설정을 업데이트합니다.
-
일반
이름: VM 이름은 63자로 제한됩니다. 일반
설명: VM에 대한 선택적 설명입니다. 스토리지 클래스: NFS 또는 ocs-storagecluster-ceph-rbd 를 선택합니다.
ocs-storagecluster-ceph-rbd를 선택하는 경우 디스크의 볼륨 모드를 블록으로 설정해야 합니다.
-
고급
볼륨 모드: Block 을 선택합니다.
-
고급
볼륨 모드: Block 을 선택합니다. -
네트워킹
네트워크: 사용 가능한 네트워크 연결 정의 오브젝트 목록에서 네트워크를 선택할 수 있습니다.
-
일반
가져오기 설정을 편집한 경우 가져오기 또는 검토 및 가져오기를 클릭합니다.
가상 머신 생성 완료 메시지와 가상 머신용으로 생성된 리소스 목록이 표시됩니다. 가상 머신은 워크로드
가상 머신에 나타납니다.
가상 머신 마법사 필드
이름 | 매개변수 | 설명 |
---|---|---|
이름 |
이름에는 소문자( | |
설명 | 선택적 설명 필드입니다. | |
운영 체제 | 템플릿에서 가상 머신에 대해 선택된 운영 체제입니다. 템플릿에서 가상 머신을 생성할 때 이 필드를 편집할 수 없습니다. | |
부팅 소스 | URL을 통해 가져오기(PVC 생성) | HTTP 또는 HTTPS 끝점에서 사용할 수 있는 이미지에서 콘텐츠를 가져옵니다. 예제: 운영 체제 이미지를 사용하여 웹 페이지에서 URL 링크 가져오기. |
기존 PVC 복제 (PVC 생성) | 클러스터에서 사용 가능한 기존 영구 볼륨 클레임을 선택하고 복제합니다. | |
레지스트리를 통해 가져오기(PVC 생성) |
클러스터에서 액세스할 수 있는 레지스트리의 부팅 가능한 운영 체제 컨테이너에서 가상 머신을 프로비저닝합니다. 예를 들면 | |
PXE (네트워크 부팅-네트워크 인터페이스 추가) | 네트워크의 서버에서 운영 체제를 부팅합니다. PXE 부팅 가능 네트워크 연결 정의가 필요합니다. | |
영구 볼륨 클레임 프로젝트 | PVC 복제에 사용할 프로젝트 이름입니다. | |
영구 볼륨 클레임 이름 | 기존 PVC를 복제하는 경우 이 가상 머신 템플릿에 적용할 PVC 이름입니다. | |
CD-ROM 부팅 소스로 마운트 | 운영 체제를 설치하기 위한 추가 디스크가 CD-ROM에 필요합니다. 확인란을 선택하여 디스크를 추가하고 나중에 사용자 지정합니다. | |
플레이버 | 매우 작음, 작음, 중간, 큼, 사용자 정의 | 해당 템플릿과 연결된 운영 체제에 따라 가상 시스템에 할당된 사전 정의된 값을 사용하여 가상 머신 템플릿의 CPU 및 메모리 양을 미리 설정합니다.
기본 템플릿을 선택하는 경우 사용자 지정 값을 사용하여 템플릿의 |
워크로드 유형 참고 잘못된 워크로드 유형을 선택하는 경우 성능 또는 리소스 사용률 문제(예: 느린 UI)가 있을 수 있습니다. | 데스크탑 | 데스크탑에서 사용할 가상 머신 구성입니다. 소규모에서 사용하기에 매우 적합합니다. 웹 콘솔과 함께 사용하는 것이 좋습니다. |
서버 | 성능을 밸런싱하고 다양한 서버 워크로드와 호환됩니다. | |
고성능 | 고성능 워크로드에 최적화된 가상 머신 구성입니다. | |
생성 후 가상 머신 시작. | 이 확인란은 기본적으로 선택되며 가상 머신이 생성 후 실행됩니다. 가상 머신이 생성될 때 시작하지 않도록 하려면 확인란의 선택을 해제합니다. |
네트워킹 필드
이름 | 설명 |
---|---|
이름 | 네트워크 인터페이스 컨트롤러의 이름입니다. |
모델 | 네트워크 인터페이스 컨트롤러의 모델을 나타냅니다. 지원되는 값은 e1000e 및 virtio입니다. |
네트워크 | 사용 가능한 네트워크 연결 정의 목록입니다. |
유형 |
사용 가능한 바인딩 방법 목록입니다. 기본 Pod 네트워크의 경우 권장되는 유일한 바인딩 방법은 |
MAC 주소 | 네트워크 인터페이스 컨트롤러의 MAC 주소입니다. MAC 주소를 지정하지 않으면 주소가 자동으로 할당됩니다. |
스토리지 필드
이름 | 선택 | 설명 |
---|---|---|
소스 | 비어있음 (PVC 생성) | 빈 디스크를 만듭니다. |
URL을 통해 가져오기(PVC 생성) | URL(HTTP 또는 HTTPS 끝점)을 통해 콘텐츠를 가져옵니다. | |
기존 PVC 사용 | 클러스터에서 이미 사용 가능한 PVC를 사용합니다. | |
기존 PVC 복제 (PVC 생성) | 클러스터에서 사용 가능한 기존 PVC를 선택하고 복제합니다. | |
레지스트리를 통해 가져오기(PVC 생성) | 컨테이너 레지스트리를 통해 콘텐츠를 가져옵니다. | |
컨테이너 (임시) | 클러스터에서 액세스할 수 있는 레지스트리에 있는 컨테이너에서 콘텐츠를 업로드합니다. 컨테이너 디스크는 CD-ROM 또는 임시 가상 머신과 같은 읽기 전용 파일 시스템에만 사용해야 합니다. | |
이름 |
디스크 이름입니다. 이름에는 소문자( | |
크기 | 디스크 크기(GiB)입니다. | |
유형 | 디스크의 유형입니다. 예제: 디스크 또는 CD-ROM | |
인터페이스 | 디스크 장치의 유형입니다. 지원되는 인터페이스는 virtIO, SATA, SCSI입니다. | |
스토리지 클래스 | 디스크를 만드는 데 사용되는 스토리지 클래스입니다. | |
고급 | 영구 볼륨에서 포맷된 파일 시스템을 사용하는지 또는 원시 블록 상태를 사용하는지를 정의합니다. 기본값은 Filesystem입니다. |
고급 스토리지 설정
이름 | 매개변수 | 설명 |
---|---|---|
볼륨 모드 | 파일 시스템 | 파일 시스템 기반 볼륨에 가상 디스크를 저장합니다. |
블록 |
가상 디스크를 블록 볼륨에 직접 저장합니다. 기본 스토리지에서 지원하는 경우에만 | |
액세스 모드 [1] | 단일 사용자(RWO) | 디스크는 단일 노드에서 읽기/쓰기로 마운트할 수 있습니다. |
공유 액세스(RWX) | 디스크는 여러 노드에서 읽기/쓰기로 마운트할 수 있습니다. | |
읽기 전용(ROX) | 디스크는 많은 노드에서 읽기 전용으로 마운트할 수 있습니다. |
- 명령줄 인터페이스를 사용하여 액세스 모드를 변경할 수 있습니다.
8.15.4.4. CLI를 사용하여 가상 머신 가져오기
Secret
및 VirtualMachineImport
CR(사용자 정의 리소스)을 생성하여 CLI로 가상 머신을 가져올 수 있습니다. Secret
CR은 RHV Manager 자격 증명과 CA 인증서를 저장합니다. VirtualMachineImport
CR은 VM 가져오기 프로세스의 매개변수를 정의합니다.
선택 사항: VirtualMachineImport
CR과 별도의 ResourceMapping
CR을 생성할 수 있습니다. ResourceMapping
CR은 예를 들면 추가 RHV VM을 가져오는 경우 향상된 유연성을 제공합니다.
기본 대상 스토리지 클래스는 NFS여야 합니다. Cinder에서는 RHV VM 가져오기를 지원하지 않습니다.
절차
다음 명령을 실행하여
Secret
CR을 생성합니다.$ cat <<EOF | oc create -f - apiVersion: v1 kind: Secret metadata: name: rhv-credentials namespace: default 1 type: Opaque stringData: ovirt: | apiUrl: <api_endpoint> 2 username: ocpadmin@internal password: 3 caCert: | -----BEGIN CERTIFICATE----- 4 -----END CERTIFICATE----- EOF
$ openssl s_client -connect :443 -showcerts < /dev/null
선택 사항: 다음 명령을 실행하여
VirtualMachineImport
CR에서 리소스 매핑을 분리하려면ResourceMapping
CR을 생성합니다.$ cat <<EOF | kubectl create -f - apiVersion: v2v.kubevirt.io/v1alpha1 kind: ResourceMapping metadata: name: resourcemapping_example namespace: default spec: ovirt: networkMappings: - source: name: <rhv_logical_network>/<vnic_profile> 1 target: name: <target_network> 2 type: pod storageMappings: 3 - source: name: <rhv_storage_domain> 4 target: name: <target_storage_class> 5 volumeMode: <volume_mode> 6 EOF
- 1
- RHV 논리 네트워크 및 vNIC 프로필을 지정합니다.
- 2
- OpenShift Virtualization 네트워크를 지정합니다.
- 3
- 스토리지 매핑이
ResourceMapping
CR과VirtualMachineImport
CR에 모두 지정된 경우VirtualMachineImport
CR이 우선합니다. - 4
- RHV 스토리지 도메인을 지정합니다.
- 5
NFS
또는ocs-storagecluster-ceph-rbd
를 지정합니다.- 6
ocs-storagecluster-ceph-rbd
스토리지 클래스를 지정한 경우 볼륨 모드를Block
으로 지정해야 합니다.
다음 명령을 실행하여
VirtualMachineImport
CR을 생성합니다.$ cat <<EOF | oc create -f - apiVersion: v2v.kubevirt.io/v1beta1 kind: VirtualMachineImport metadata: name: vm-import namespace: default spec: providerCredentialsSecret: name: rhv-credentials namespace: default # resourceMapping: 1 # name: resourcemapping-example # namespace: default targetVmName: vm_example 2 startVm: true source: ovirt: vm: id: <source_vm_id> 3 name: <source_vm_name> 4 cluster: name: <source_cluster_name> 5 mappings: 6 networkMappings: - source: name: <source_logical_network>/<vnic_profile> 7 target: name: <target_network> 8 type: pod storageMappings: 9 - source: name: <source_storage_domain> 10 target: name: <target_storage_class> 11 accessMode: <volume_access_mode> 12 diskMappings: - source: id: <source_vm_disk_id> 13 target: name: <target_storage_class> 14 EOF
- 1
ResourceMapping
CR을 생성하는 경우resourceMapping
섹션의 주석을 제거하십시오.- 2
- 대상 VM 이름을 지정합니다.
- 3
- 소스 VM ID를 지정합니다(예:
80554327-0569-496b-bdeb-fcbbf52b827b
). Manager 머신의 웹 브라우저에https://www.example.com/ovirt-engine/api/vms/
를 입력하여 모든 VM을 나열하는 방식으로 VM ID를 가져올 수 있습니다. 가져올 VM과 해당 VM ID를 찾습니다. VM 이름이나 클러스터 이름을 지정할 필요가 없습니다. - 4
- 소스 VM 이름을 지정하는 경우 소스 클러스터도 지정해야 합니다. 소스 VM ID는 지정하지 않도록 합니다.
- 5
- 소스 클러스터를 지정하는 경우 소스 VM 이름도 지정해야 합니다. 소스 VM ID는 지정하지 않도록 합니다.
- 6
ResourceMapping
CR을 생성하는 경우mappings
섹션을 주석으로 처리합니다.- 7
- 소스 VM의 논리 네트워크 및 vNIC 프로필을 지정합니다.
- 8
- OpenShift Virtualization 네트워크를 지정합니다.
- 9
- 스토리지 매핑이
ResourceMapping
CR과VirtualMachineImport
CR에 모두 지정된 경우VirtualMachineImport
CR이 우선합니다. - 10
- 소스 스토리지 도메인을 지정합니다.
- 11
- 대상 스토리지 클래스를 지정합니다.
- 12
ReadWriteOnce
,ReadWriteMany
또는ReadOnlyMany
를 지정합니다. 액세스 모드가 지정되지 않은 경우 {virt}는 RHV VM의 호스트마이그레이션 모드 설정 또는 가상 디스크 액세스 모드를 기반으로 올바른 볼륨 액세스 모드를 결정합니다. -
RHV VM 마이그레이션 모드가
수동 및 자동 마이그레이션 허용
인 경우 기본 액세스 모드는ReadWriteMany
입니다. -
RHV 가상 디스크 액세스 모드가
ReadOnly
이면 기본 액세스 모드는ReadOnlyMany
입니다. -
다른 모든 설정에서 기본 액세스 모드는
ReadWriteOnce
입니다.
-
RHV VM 마이그레이션 모드가
- 13
- 소스 VM 디스크 ID를 지정합니다(예:
8181ecc1-5db8-4193-9c92-3ddab3be7b05
). Manager 머신의 웹 브라우저에https://www.example.com/ovirt-engine/api/vms/vm23
을 입력하고 VM 세부 정보를 검토하여 디스크 ID를 가져올 수 있습니다. - 14
- 대상 스토리지 클래스를 지정합니다.
가상 머신 가져오기 진행률을 보고 가져오기가 성공했는지 확인합니다.
$ oc get vmimports vm-import -n default
가져오기가 성공했음을 나타내는 출력은 다음 예와 유사합니다.
출력 예
... status: conditions: - lastHeartbeatTime: "2020-07-22T08:58:52Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: Validation completed successfully reason: ValidationCompleted status: "True" type: Valid - lastHeartbeatTime: "2020-07-22T08:58:52Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: 'VM specifies IO Threads: 1, VM has NUMA tune mode specified: interleave' reason: MappingRulesVerificationReportedWarnings status: "True" type: MappingRulesVerified - lastHeartbeatTime: "2020-07-22T08:58:56Z" lastTransitionTime: "2020-07-22T08:58:52Z" message: Copying virtual machine disks reason: CopyingDisks status: "True" type: Processing dataVolumes: - name: fedora32-b870c429-11e0-4630-b3df-21da551a48c0 targetVmName: fedora32
8.15.4.4.1. VM 가져오기를 위한 구성 맵 만들기
기본 vm-import-controller
매핑을 재정의하거나 매핑을 추가하려는 경우 RHV(Red Hat Virtualization) 가상 머신 운영 체제를 OpenShift Virtualization 템플릿에 매핑하는 구성 맵을 만들 수 있습니다.
기본 vm-import-controller
구성 맵에는 다음 RHV 운영 체제와 해당하는 공통 OpenShift Virtualization 템플릿이 포함되어 있습니다.
RHV VM 운영 체제 | OpenShift Virtualization 템플릿 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
절차
웹 브라우저에서
http://<RHV_Manager_FQDN>/ovirt-engine/api/vms/<VM_ID>
로 이동하여 RHV VM 운영 체제의 REST API 이름을 확인합니다. 운영 체제 이름은 XML 출력의<os>
섹션에 다음 예와 같이 표시됩니다.... <os> ... <type>rhel_8x64</type> </os>
사용 가능한 OpenShift Virtualization 템플릿 목록을 확인합니다.
$ oc get templates -n openshift --show-labels | tr ',' '\n' | grep os.template.kubevirt.io | sed -r 's#os.template.kubevirt.io/(.*)=.*#\1#g' | sort -u
출력 예
fedora31 fedora32 ... rhel8.1 rhel8.2 ...
- RHV VM 운영 체제와 일치하는 OpenShift Virtualization 템플릿이 사용 가능한 템플릿 목록에 나타나지 않으면 OpenShift Virtualization 웹 콘솔을 사용하여 템플릿을 만듭니다.
RHV VM 운영 체제를 OpenShift Virtualization 템플릿에 매핑하는 구성 맵을 만듭니다.
$ cat <<EOF | oc create -f - apiVersion: v1 kind: ConfigMap metadata: name: os-configmap namespace: default 1 data: guestos2common: | "Red Hat Enterprise Linux Server": "rhel" "CentOS Linux": "centos" "Fedora": "fedora" "Ubuntu": "ubuntu" "openSUSE": "opensuse" osinfo2common: | "<rhv-operating-system>": "<vm-template>" 2 EOF
구성 맵 예
$ cat <<EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: os-configmap namespace: default data: osinfo2common: | "other_linux": "fedora31" EOF
사용자 정의 구성 맵이 생성되었는지 확인합니다.
$ oc get cm -n default os-configmap -o yaml
vm-import-controller-config
구성 맵을 패치하여 새 구성 맵을 적용합니다.$ oc patch configmap vm-import-controller-config -n openshift-cnv --patch '{ "data": { "osConfigMap.name": "os-configmap", "osConfigMap.namespace": "default" 1 } }'
- 1
- 구성 맵에서 네임스페이스를 변경한 경우 업데이트하십시오.
OpenShift Virtualization 웹 콘솔에 템플릿이 표시되는지 확인합니다.
-
사이드 메뉴에서 워크로드
가상화를 클릭합니다. - 가상 머신 템플릿 탭을 클릭하고 목록에서 템플릿을 찾습니다.
-
사이드 메뉴에서 워크로드
8.15.4.5. 가상 머신 가져오기 문제 해결
8.15.4.5.1. 로그
VM Import Controller Pod 로그에서 오류가 있는지 확인할 수 있습니다.
절차
다음 명령을 실행하여 VM Import Controller Pod 이름을 확인합니다.
$ oc get pods -n <namespace> | grep import 1
- 1
- 가져온 가상 머신의 네임스페이스를 지정합니다.
출력 예
vm-import-controller-f66f7d-zqkz7 1/1 Running 0 4h49m
다음 명령을 실행하여 VM Import Controller Pod 로그를 확인합니다.
$ oc logs <vm-import-controller-f66f7d-zqkz7> -f -n <namespace> 1
- 1
- VM Import Controller Pod 이름과 네임스페이스를 지정합니다.
8.15.4.5.2. 오류 메시지
다음과 같은 오류 메시지가 나타날 수 있습니다.
OpenShift Virtualization 스토리지 PV가 적합하지 않은 경우, VM Import Controller Pod 로그에 다음 오류 메시지가 표시되고 진행률 표시줄이 10%에서 멈춥니다.
Failed to bind volumes: provisioning failed for PVC
호환되는 스토리지 클래스를 사용해야 합니다. Cinder 스토리지 클래스는 지원되지 않습니다.
8.15.4.5.3. 확인된 문제
- 가상 디스크에 Ceph RBD 블록 모드 볼륨을 사용하고 있고 사용 가능한 스토리지 공간이 가상 디스크에 비해 너무 작으면 가져오기 프로세스 표시줄이 75%에서 20분 이상 중지되고 마이그레이션이 실패합니다. 웹 콘솔에 오류 메시지가 표시되지 않습니다. BZ#1910019
8.15.5. 단일 VMware 가상 머신 또는 템플릿 가져오기
VM Import 마법사를 사용하여 VMware vSphere 6.5, 6.7 또는 7.0 VM 또는 VM 템플릿을 OpenShift Virtualization으로 가져올 수 있습니다. VM 템플릿을 가져오는 경우 OpenShift Virtualization에서 해당 템플릿을 기반으로 가상 머신을 생성합니다.
VMware VM 가져오기는 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Virtualization에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Virtualization에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Virtualization 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
이 기능은 Migration Toolkit for Virtualization으로 대체됩니다.
8.15.5.1. OpenShift Virtualization 스토리지 기능 매트릭스
다음 표에는 VM 가져오기를 지원하는 OpenShift Virtualization 스토리지 유형이 설명되어 있습니다.
VMware VM 가져오기 | |
---|---|
OpenShift Container Storage: rbd 블록 모드 볼륨 | 예 |
OpenShift Virtualization hostpath 프로비전 프로그램 | 예 |
기타 다중 노드 쓰기 가능 스토리지 | 예 [1] |
기타 단일 노드 쓰기 가능 스토리지 | 예 [2] |
- PVC에서 ReadWriteMany 액세스 모드를 요청해야 합니다.
- PVC에서 ReadWriteOnce 액세스 모드를 요청해야 합니다.
8.15.5.2. VDDK 이미지 준비
가져오기 프로세스에서는 VMware VDDK(가상 디스크 개발 키트)를 사용하여 VMware 가상 디스크를 복사합니다.
VDDK SDK를 다운로드하여 VDDK 이미지를 생성한 후 이미지를 이미지 레지스트리에 업로드하고 HyperConverged
사용자 지정 리소스 (CR)의 spec.vddkInitImage
에 추가할 수 있습니다.
VDDK 이미지에 사용할 내부 OpenShift Container Platform 이미지 레지스트리 또는 안전한 외부 이미지 레지스트리를 구성할 수 있습니다. OpenShift Virtualization 환경에서 레지스트리에 액세스할 수 있어야 합니다.
VDDK 이미지를 공용 레지스트리에 저장하면 VMware 라이센스 약관을 위반할 수 있습니다.
8.15.5.2.1. 내부 이미지 레지스트리 구성
Image Registry Operator 구성을 업데이트하여 베어 메탈에 내부 OpenShift Container Platform 이미지 레지스트리를 구성할 수 있습니다.
경로를 사용하여 레지스트리를 노출하면 OpenShift Container Platform 클러스터 내에서 직접 또는 외부에서 레지스트리에 액세스할 수 있습니다.
이미지 레지스트리의 관리 상태 변경
이미지 레지스트리를 시작하려면 Image Registry Operator 구성의 managementState
를 Removed
에서 Managed
로 변경해야 합니다.
절차
managementState
Image Registry Operator 구성을Removed
에서Managed
로 변경합니다. 예를 들면 다음과 같습니다.$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
베어메탈 및 기타 수동 설치를 위한 레지스트리 스토리지 구성
클러스터 관리자는 설치한 후 스토리지를 사용하도록 레지스트리를 구성해야 합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - 베어 메탈과 같이 수동으로 프로비저닝된 RHCOS(Red Hat Enterprise Linux CoreOS) 노드를 사용하는 클러스터가 있어야 합니다.
Red Hat OpenShift Container Storage와 같이 클러스터용 영구 스토리지 프로비저닝이 있습니다.
중요OpenShift Container Platform은 복제본이 하나만 있는 경우 이미지 레지스트리 스토리지에 대한
ReadWriteOnce
액세스를 지원합니다.ReadWriteOnce
액세스에서는 레지스트리가Recreate
롤아웃 전략을 사용해야 합니다. 두 개 이상의 복제본으로 고 가용성을 지원하는 이미지 레지스트리를 배포하려면ReadWriteMany
액세스가 필요합니다.- "100Gi" 용량이 필요합니다.
절차
스토리지를 사용하도록 레지스트리를 구성하기 위해
configs.imageregistry/cluster
리소스에서spec.storage.pvc
를 변경합니다.참고공유 스토리지를 사용할 때 보안 설정을 확인하여 외부에서의 액세스를 방지합니다.
레지스트리 pod가 없는지 확인합니다.
$ oc get pod -n openshift-image-registry -l docker-registry=default
출력 예
No resourses found in openshift-image-registry namespace
참고출력에 레지스트리 Pod가 있는 경우 이 절차를 계속할 필요가 없습니다.
레지스트리 구성을 확인합니다.
$ oc edit configs.imageregistry.operator.openshift.io
출력 예
storage: pvc: claim:
image-registry-storage
PVC의 자동 생성을 허용하도록claim
필드를 비워 둡니다.clusteroperator
상태를 확인합니다.$ oc get clusteroperator image-registry
출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.7 True False False 6h50m
이미지를 빌드 및 푸시할 수 있도록 레지스트리의 관리가 설정되어 있는지 확인하십시오.
다음을 실행합니다.
$ oc edit configs.imageregistry/cluster
다음으로 라인을 변경하십시오.
managementState: Removed
다음으로 변경
managementState: Managed
클러스터에서 직접 레지스트리에 액세스
클러스터 내부에서 레지스트리에 액세스할 수 있습니다.
절차
내부 경로를 사용하여 클러스터에서 레지스트리에 액세스합니다.
노드의 이름을 가져와서 노드에 액세스합니다.
$ oc get nodes
$ oc debug nodes/<node_name>
노드의
oc
및podman
과 같은 툴에 대한 액세스를 활성화하려면 루트 디렉터리를/host
로 변경하십시오.sh-4.2# chroot /host
액세스 토큰을 사용하여 컨테이너 이미지 레지스트리에 로그인합니다.
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
다음과 같은 로그인 확인 메시지가 표시되어야합니다.
Login Succeeded!
참고사용자 이름에 모든 값을 지정할 수 있으므로 토큰에는 필요한 모든 정보가 포함됩니다. 콜론이 포함된 사용자 이름을 지정하면 로그인에 실패합니다.
이미지 레지스트리 Operator가 경로를 생성하므로
default-route-openshift-image-registry.<cluster_name>
과 유사합니다.레지스트리에 대해
podman pull
및podman push
작업을 수행합니다.중요모든 이미지를 가져올 수 있지만 system:registry 역할이 추가된 경우 프로젝트의 레지스트리에만 이미지를 푸시할 수 있습니다.
다음 예에서는 다음을 사용합니다.
구성 요소 값 <registry_ip>
172.30.124.220
<port>
5000
<project>
openshift
<image>
image
<tag>
생략됨 (기본값
latest
)모든 이미지를 가져옵니다.
sh-4.2# podman pull name.io/image
<registry_ip>:<port>/<project>/<image>
형식으로 새 이미지에 태그를 지정합니다. OpenShift Container Platform이 레지스트리에 이미지를 올바르게 배치하고 나중에 액세스할 수 있도록 이 풀 사양에 프로젝트 이름이 표시되어야합니다.sh-4.2# podman tag name.io/image image-registry.openshift-image-registry.svc:5000/openshift/image
참고사용자가 이미지를 작성하거나 푸시할 수 있도록 지정된 프로젝트에 대한
system:image-builder
역할이 있어야합니다. 그렇지 않으면 다음 단계의podman push
가 실패합니다. 테스트를 위해 이미지를 푸시할 새 프로젝트를 만들 수 있습니다.새로 태그가 지정된 이미지를 레지스트리로 푸시합니다.
sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/image
수동으로 보안 레지스트리 공개
클러스터 내에서 OpenShift Container Platform 레지스트리에 로그인하지 않고 외부에서 레지스트리에 액세스할 수 있도록 레지스트리의 라우팅을 공개합니다. 이를 통해 라우팅 주소를 사용하여 클러스터 외부에서 레지스트리에 로그인하고 라우팅 호스트를 사용하여 기존 프로젝트에 이미지를 태그 지정하거나 푸시할 수 있습니다.
사전 요구 사항
다음 사전 요구 사항이 자동으로 수행됩니다.
- 레지스트리 Operator를 배포합니다.
- Ingress Operator를 배포합니다.
절차
configs.imageregistry.operator.openshift.io
리소스에서 DefaultRoute
매개 변수를 사용하거나 사용자 지정 라우팅을 사용하여 라우팅을 공개할 수 있습니다.
DefaultRoute
를 사용하여 레지스트리를 공개하려면 다음을 수행합니다.
DefaultRoute
를True
로 설정합니다.$ oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge
podman
으로 로그인합니다.$ HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
$ podman login -u kubeadmin -p $(oc whoami -t) --tls-verify=false $HOST 1
- 1
--tls-verify=false
는 클러스터의 기본 라우팅 인증서를 신뢰할 수없는 경우 필요합니다. Ingress Operator를 사용하여 신뢰할 수있는 사용자 지정 인증서를 기본 인증서로 설정할 수 있습니다.
사용자 지정 라우팅을 사용하여 레지스트리를 공개하려면 다음을 수행합니다.
라우팅의 TLS 키로 보안 시크릿을 만듭니다.
$ oc create secret tls public-route-tls \ -n openshift-image-registry \ --cert=</path/to/tls.crt> \ --key=</path/to/tls.key>
이 단계는 선택 사항입니다. 보안 시크릿을 생성하지 않으면 라우팅은 Ingress Operator의 기본 TLS 구성을 사용합니다.
레지스트리 Operator에서 다음을 수행합니다.
spec: routes: - name: public-routes hostname: myregistry.mycorp.organization secretName: public-route-tls ...
참고레지스트리 라우팅에 대한 사용자 지정 TLS 구성을 제공하는 경우에만
secretName
을 설정합니다.
8.15.5.2.2. 외부 이미지 레지스트리 구성
VDDK 이미지에 외부 이미지 레지스트리를 사용하는 경우 외부 이미지 레지스트리의 인증 기관을 OpenShift Container Platform 클러스터에 추가할 수 있습니다.
필요한 경우 Docker 자격 증명에서 풀 시크릿을 생성하여 서비스 계정에 추가할 수 있습니다.
클러스터에 인증 기관 추가
다음 절차에 따라 이미지를 내보내고 가져올 때 사용할 클러스터에 인증서 CA(인증 기관)를 추가할 수 있습니다.
사전 요구 사항
- 클러스터 관리자 권한이 있어야합니다.
-
레지스트리의 공용 인증서(일반적으로
/etc/docker/certs.d/
디렉터리에 있는hostname/ca.crt
파일)에 액세스할 수 있어야 합니다.
절차
자체 서명 인증서를 사용하는 레지스트리의 경우 신뢰할 수 있는 인증서가 있는
openshift-config
네임스페이스에ConfigMap
을 생성합니다. 각 CA 파일에 대해ConfigMap
의 키가hostname[..port]
형식의 레지스트리 호스트 이름인지 확인하십시오.$ oc create configmap registry-cas -n openshift-config \ --from-file=myregistry.corp.com..5000=/etc/docker/certs.d/myregistry.corp.com:5000/ca.crt \ --from-file=otherregistry.com=/etc/docker/certs.d/otherregistry.com/ca.crt
클러스터 이미지 구성을 업데이트합니다.
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-cas"}}}' --type=merge
Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 허용
Docker 클라이언트의 .dockercfg
$HOME/.docker/config.json
파일은 이전에 보안 또는 비보안 레지스트리에 로그인한 적이 있는 경우 인증 정보를 저장하는 Docker 인증 정보 파일입니다.
OpenShift Container Platform의 내부 레지스트리가 아닌 다른 위치에서 보안 컨테이너 이미지를 가져오려면 Docker 인증 정보에서 풀 시크릿을 생성하여 서비스 계정에 추가해야 합니다.
절차
보안 레지스트리의
.dockercfg
파일이 이미 있는 경우 다음을 실행하여 해당 파일에서 시크릿을 생성할 수 있습니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$HOME/.docker/config.json
파일이 있는 경우 다음을 실행합니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
보안 레지스트리의 Docker 인증 정보 파일이 아직 없는 경우 다음을 실행하여 시크릿을 생성할 수 있습니다.
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Pod의 이미지 가져오기에 시크릿을 사용하려면 서비스 계정에 이 시크릿을 추가해야 합니다. 이 예제의 서비스 계정 이름은 Pod에서 사용하는 서비스 계정 이름과 일치해야 합니다.
default
는 기본 서비스 계정입니다.$ oc secrets link default <pull_secret_name> --for=pull
8.15.5.2.3. VDDK 이미지 생성 및 사용
VMware VDDK(가상 디스크 개발 키트)를 다운로드하고 VDDK 이미지를 빌드한 다음 VDDK 이미지를 이미지 레지스트리에 푸시할 수 있습니다. 그런 다음 HyperConverged
CR(사용자 정의 리소스)의 spec.vddkInitImage
필드에 VDDK 이미지를 추가합니다.
사전 요구 사항
- OpenShift Container Platform 내부 이미지 레지스트리 또는 보안 외부 레지스트리에 액세스할 수 있어야 합니다.
절차
임시 디렉터리를 만들고 해당 디렉터리로 이동합니다.
$ mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
- 브라우저에서 VMware 코드로 이동하여 SDK를 클릭합니다.
- Compute Virtualization에서 VDDK(가상 디스크 개발 키트)를 클릭합니다.
- 사용 중인 VMware vSphere 버전에 해당하는 VDDK 버전(예: vSphere 7.0의 경우 VDDK 7.0)을 선택하고, 다운로드를 클릭한 다음 임시 디렉터리에 VDDK 아카이브를 저장합니다.
VDDK 아카이브를 추출합니다.
$ tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
Dockerfile
을 생성합니다.$ cat > Dockerfile <<EOF FROM busybox:latest COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib RUN mkdir -p /opt ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"] EOF
이미지를 빌드합니다.
$ podman build . -t <registry_route_or_server_path>/vddk:<tag> 1
- 1
- 이미지 레지스트리를 지정합니다.
-
내부 OpenShift Container Platform 레지스트리의 경우 내부 레지스트리 경로를 사용합니다(예:
image-registry.openshift-image-registry.svc:5000/openshift/vddk:<tag>
). -
외부 레지스트리의 경우 서버 이름, 경로, 태그를 지정합니다(예:
server.example.com:5000/vddk:<tag>
).
-
내부 OpenShift Container Platform 레지스트리의 경우 내부 레지스트리 경로를 사용합니다(예:
이미지를 로컬 레지스트리로 푸시합니다.
$ podman push <registry_route_or_server_path>/vddk:<tag>
- OpenShift Virtualization 환경에서 이미지에 액세스할 수 있는지 확인합니다.
openshift-cnv 프로젝트에서
HyperConverged
CR을 편집합니다.$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
spec
스탠자에thevddkInitImage
매개변수를 추가합니다.apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: vddkInitImage: <registry_route_or_server_path>/vddk:<tag>
8.15.5.3. VM 가져오기 마법사를 사용하여 가상 머신 가져오기
VM 가져오기 마법사를 사용하여 단일 가상 머신을 가져올 수 있습니다.
또한 VM 템플릿을 가져올 수도 있습니다. VM 템플릿을 가져오는 경우 OpenShift Virtualization에서 해당 템플릿을 기반으로 가상 머신을 생성합니다.
사전 요구 사항
- 관리자 권한이 있어야 합니다.
- VMware VDDK(가상 디스크 개발 키트) 이미지는 OpenShift Virtualization 환경에서 액세스할 수 있는 이미지 레지스트리에 있어야 합니다.
-
VDDK 이미지는
HyperConverged
CR(사용자 정의 리소스)의spec.vddkInitImage
필드에 추가해야 합니다. - VM의 전원을 꺼야 합니다.
- 가상 디스크가 IDE 또는 SCSI 컨트롤러에 연결되어 있어야 합니다. 가상 디스크가 SATA 컨트롤러에 연결되어 있는 경우 IDE 컨트롤러로 변경한 다음 VM을 마이그레이션할 수 있습니다.
- OpenShift Virtualization 로컬 및 공유 영구 스토리지 클래스에서 VM 가져오기를 지원해야 합니다.
OpenShift Virtualization 스토리지는 가상 디스크를 수용할 수 있을 만큼 충분히 커야 합니다.
주의Ceph RBD 블록 모드 볼륨을 사용하는 경우 가상 디스크를 수용할 수 있도록 스토리지가 충분히 커야 합니다. 디스크가 사용 가능한 스토리지에 비해 너무 크면 가져오기 프로세스가 실패하고 가상 디스크를 복사하는 데 사용되는 PV가 해제되지 않습니다. 오브젝트 삭제를 지원할 리소스가 충분하지 않기 때문에 다른 가상 머신을 가져오거나 스토리지를 정리할 수 없습니다. 이 상황을 해결하려면 스토리지 백엔드에 오브젝트 스토리지 장치를 추가해야 합니다.
OpenShift Virtualization 송신 네트워크 정책에서 다음 트래픽을 허용해야 합니다.
대상 프로토콜 포트 VMware ESXi 호스트
TCP
443
VMware ESXi 호스트
TCP
902
VMware vCenter
TCP
5840
절차
-
웹 콘솔에서 워크로드
가상 머신을 클릭합니다. - 가상 머신 생성을 클릭하고 마법사로 가져오기를 선택합니다.
- 공급자 목록에서 VMware를 선택합니다.
새 인스턴스에 연결 또는 저장된 vCenter 인스턴스를 선택합니다.
- 새 인스턴스에 연결을 선택한 경우 vCenter 호스트 이름, 사용자 이름, 암호를 입력합니다.
- 저장된 vCenter 인스턴스를 선택하면 저장된 자격 증명을 사용하여 마법사가 vCenter 인스턴스에 연결됩니다.
확인 및 저장을 클릭하고 연결이 완료될 때까지 기다립니다.
참고연결 세부 정보는 시크릿에 저장됩니다. 잘못된 호스트 이름, 사용자 이름 또는 암호를 사용하여 공급자를 추가하는 경우 워크로드
시크릿을 클릭하고 공급자 시크릿을 삭제합니다. - 가상 머신 또는 템플릿을 선택합니다.
- 다음을 클릭합니다.
- 검토 화면에서 설정을 검토합니다.
편집을 클릭하여 다음 설정을 업데이트합니다.
일반:
- 설명
- 운영 체제
- 플레이버
- 메모리
- CPU
- 워크로드 프로필
네트워킹:
- 이름
- 모델
- 네트워크
- 유형
- MAC 주소
스토리지: VM 디스크의 옵션 메뉴 를 클릭하고 편집 을 선택하여 다음 필드를 업데이트합니다.
- 이름
- 출처: 예를 들면 디스크 가져오기 입니다.
- 크기
- 인터페이스
스토리지 클래스: NFS 또는 ocs-storagecluster-ceph-rbd(ceph-rbd) 를 선택합니다.
ocs-storagecluster-ceph-rbd를 선택하는 경우 디스크의 볼륨 모드를 블록으로 설정해야 합니다.
기타 스토리지 클래스도 작동할 수 있지만 공식적으로 지원되지 않습니다.
-
고급
볼륨 모드: Block 을 선택합니다. -
고급
액세스 모드
고급
Cloud-init: - 양식: Hostname(호스트 이름) 및 Authenticated SSH Keys(인증된 SSH 키 )를 입력합니다.
-
사용자 정의 스크립트: 텍스트 필드에
cloud-init
스크립트를 입력합니다.
-
고급
가상 하드웨어: 가져온 가상 머신에 가상 CD-ROM을 연결할 수 있습니다.
가져오기 설정을 편집한 경우 가져오기 또는 검토 및 가져오기를 클릭합니다.
가상 머신 생성 완료 메시지와 가상 머신용으로 생성된 리소스 목록이 표시됩니다. 가상 머신은 워크로드
가상 머신에 나타납니다.
가상 머신 마법사 필드
이름 | 매개변수 | 설명 |
---|---|---|
이름 |
이름에는 소문자( | |
설명 | 선택적 설명 필드입니다. | |
운영 체제 | 템플릿에서 가상 머신에 대해 선택된 운영 체제입니다. 템플릿에서 가상 머신을 생성할 때 이 필드를 편집할 수 없습니다. | |
부팅 소스 | URL을 통해 가져오기(PVC 생성) | HTTP 또는 HTTPS 끝점에서 사용할 수 있는 이미지에서 콘텐츠를 가져옵니다. 예제: 운영 체제 이미지를 사용하여 웹 페이지에서 URL 링크 가져오기. |
기존 PVC 복제 (PVC 생성) | 클러스터에서 사용 가능한 기존 영구 볼륨 클레임을 선택하고 복제합니다. | |
레지스트리를 통해 가져오기(PVC 생성) |
클러스터에서 액세스할 수 있는 레지스트리의 부팅 가능한 운영 체제 컨테이너에서 가상 머신을 프로비저닝합니다. 예를 들면 | |
PXE (네트워크 부팅-네트워크 인터페이스 추가) | 네트워크의 서버에서 운영 체제를 부팅합니다. PXE 부팅 가능 네트워크 연결 정의가 필요합니다. | |
영구 볼륨 클레임 프로젝트 | PVC 복제에 사용할 프로젝트 이름입니다. | |
영구 볼륨 클레임 이름 | 기존 PVC를 복제하는 경우 이 가상 머신 템플릿에 적용할 PVC 이름입니다. | |
CD-ROM 부팅 소스로 마운트 | 운영 체제를 설치하기 위한 추가 디스크가 CD-ROM에 필요합니다. 확인란을 선택하여 디스크를 추가하고 나중에 사용자 지정합니다. | |
플레이버 | 매우 작음, 작음, 중간, 큼, 사용자 정의 | 해당 템플릿과 연결된 운영 체제에 따라 가상 시스템에 할당된 사전 정의된 값을 사용하여 가상 머신 템플릿의 CPU 및 메모리 양을 미리 설정합니다.
기본 템플릿을 선택하는 경우 사용자 지정 값을 사용하여 템플릿의 |
워크로드 유형 참고 잘못된 워크로드 유형을 선택하는 경우 성능 또는 리소스 사용률 문제(예: 느린 UI)가 있을 수 있습니다. | 데스크탑 | 데스크탑에서 사용할 가상 머신 구성입니다. 소규모에서 사용하기에 매우 적합합니다. 웹 콘솔과 함께 사용하는 것이 좋습니다. |
서버 | 성능을 밸런싱하고 다양한 서버 워크로드와 호환됩니다. | |
고성능 | 고성능 워크로드에 최적화된 가상 머신 구성입니다. | |
생성 후 가상 머신 시작. | 이 확인란은 기본적으로 선택되며 가상 머신이 생성 후 실행됩니다. 가상 머신이 생성될 때 시작하지 않도록 하려면 확인란의 선택을 해제합니다. |
Cloud-init 필드
이름 | 설명 |
---|---|
호스트 이름 | 가상 머신의 특정 호스트 이름을 설정합니다. |
승인된 SSH 키 | 가상 머신의 ~/.ssh/authorized_keys에 복사되는 사용자의 공개 키입니다. |
사용자 정의 스크립트 | 기타 옵션을 사용자 정의 cloud-init 스크립트를 붙여넣는 필드로 교체합니다. |
네트워킹 필드
이름 | 설명 |
---|---|
이름 | 네트워크 인터페이스 컨트롤러의 이름입니다. |
모델 | 네트워크 인터페이스 컨트롤러의 모델을 나타냅니다. 지원되는 값은 e1000e 및 virtio입니다. |
네트워크 | 사용 가능한 네트워크 연결 정의 목록입니다. |
유형 |
사용 가능한 바인딩 방법 목록입니다. 기본 Pod 네트워크의 경우 권장되는 유일한 바인딩 방법은 |
MAC 주소 | 네트워크 인터페이스 컨트롤러의 MAC 주소입니다. MAC 주소를 지정하지 않으면 주소가 자동으로 할당됩니다. |
스토리지 필드
이름 | 선택 | 설명 |
---|---|---|
소스 | 비어있음 (PVC 생성) | 빈 디스크를 만듭니다. |
URL을 통해 가져오기(PVC 생성) | URL(HTTP 또는 HTTPS 끝점)을 통해 콘텐츠를 가져옵니다. | |
기존 PVC 사용 | 클러스터에서 이미 사용 가능한 PVC를 사용합니다. | |
기존 PVC 복제 (PVC 생성) | 클러스터에서 사용 가능한 기존 PVC를 선택하고 복제합니다. | |
레지스트리를 통해 가져오기(PVC 생성) | 컨테이너 레지스트리를 통해 콘텐츠를 가져옵니다. | |
컨테이너 (임시) | 클러스터에서 액세스할 수 있는 레지스트리에 있는 컨테이너에서 콘텐츠를 업로드합니다. 컨테이너 디스크는 CD-ROM 또는 임시 가상 머신과 같은 읽기 전용 파일 시스템에만 사용해야 합니다. | |
이름 |
디스크 이름입니다. 이름에는 소문자( | |
크기 | 디스크 크기(GiB)입니다. | |
유형 | 디스크의 유형입니다. 예제: 디스크 또는 CD-ROM | |
인터페이스 | 디스크 장치의 유형입니다. 지원되는 인터페이스는 virtIO, SATA, SCSI입니다. | |
스토리지 클래스 | 디스크를 만드는 데 사용되는 스토리지 클래스입니다. | |
고급 | 영구 볼륨에서 포맷된 파일 시스템을 사용하는지 또는 원시 블록 상태를 사용하는지를 정의합니다. 기본값은 Filesystem입니다. | |
고급 | 영구 볼륨의 액세스 모드입니다. 지원되는 액세스 모드는 단일 사용자(RWO), 공유 액세스(RWX), 읽기 전용(ROX)입니다. |
고급 스토리지 설정
다음 고급 스토리지 설정은 비어 있음, URL을 통해 가져오기, 기존 PVC 복제 디스크에 사용할 수 있습니다. 해당 매개변수는 선택 사항입니다. 이러한 매개변수를 지정하지 않으면 kubevirt-storage-class-defaults
구성 맵의 기본값이 사용됩니다.
이름 | 매개변수 | 설명 |
---|---|---|
볼륨 모드 | 파일 시스템 | 파일 시스템 기반 볼륨에 가상 디스크를 저장합니다. |
블록 |
가상 디스크를 블록 볼륨에 직접 저장합니다. 기본 스토리지에서 지원하는 경우에만 | |
액세스 모드 | 단일 사용자(RWO) | 디스크는 단일 노드에서 읽기/쓰기로 마운트할 수 있습니다. |
공유 액세스(RWX) | 디스크는 여러 노드에서 읽기/쓰기로 마운트할 수 있습니다. 참고 이는 가상 머신의 노드 간 실시간 마이그레이션 등 일부 기능에 필요합니다. | |
읽기 전용(ROX) | 디스크는 많은 노드에서 읽기 전용으로 마운트할 수 있습니다. |
8.15.5.3.1. 가져온 가상 머신의 NIC 이름 업데이트
OpenShift Virtualization 이름 지정 규칙을 준수하도록 VMware에서 가져온 가상 머신의 NIC 이름을 업데이트해야 합니다.
절차
- 가상 머신에 로그인합니다.
-
/etc/sysconfig/network-scripts
디렉터리로 이동합니다. 네트워크 구성 파일의 이름을 변경합니다.
$ mv vmnic0 ifcfg-eth0 1
- 1
- 첫 번째 네트워크 구성 파일의 이름은
ifcfg-eth0
입니다. 추가 네트워크 구성 파일은 순서대로 번호가 지정됩니다(예:ifcfg-eth1
,ifcfg-eth2)
.
네트워크 구성 파일에서
NAME
및DEVICE
매개변수를 업데이트합니다.NAME=eth0 DEVICE=eth0
네트워크를 재시작합니다.
$ systemctl restart network
8.15.5.4. 가상 머신 가져오기 문제 해결
8.15.5.4.1. 로그
V2V 변환 Pod 로그에서 오류가 있는지 확인할 수 있습니다.
절차
8.15.5.4.2. 오류 메시지
다음과 같은 오류 메시지가 나타날 수 있습니다.
VMware VM을 가져오기 전에 종료하지 않으면 OpenShift Container Platform 콘솔에서 가져온 가상 머신에 오류 메시지
Readiness probe failed
가 표시되고, V2V Conversion Pod 로그에 다음 오류 메시지가 표시됩니다.INFO - have error: ('virt-v2v error: internal error: invalid argument: libvirt domain ‘v2v_migration_vm_1’ is running or paused. It must be shut down in order to perform virt-v2v conversion',)"
관리자가 아닌 사용자가 VM을 가져오려고 하면 OpenShift Container Platform 콘솔에 다음 오류 메시지가 표시됩니다.
Could not load config map vmware-to-kubevirt-os in kube-public namespace Restricted Access: configmaps "vmware-to-kubevirt-os" is forbidden: User cannot get resource "configmaps" in API group "" in the namespace "kube-public"
VM은 관리자만 가져올 수 있습니다.