9.3. 자동 부팅 소스 업데이트 관리
다음 부팅 소스에 대한 자동 업데이트를 관리할 수 있습니다.
부팅 소스를 사용하면 VM(가상 머신)을 더 쉽게 쉽게 생성할 수 있습니다. 자동 부팅 소스 업데이트가 활성화되면 CDI(Containerized Data Importer)가 이미지를 가져오고, 폴링하고, 업데이트하여 새 VM에 대해 복제할 수 있도록 합니다. 기본적으로 CDI는 Red Hat 부팅 소스를 자동으로 업데이트합니다.
9.3.1. Red Hat 부팅 소스 업데이트 관리 링크 복사링크가 클립보드에 복사되었습니다!
enableCommonBootImageImport 기능 게이트를 비활성화하여 모든 시스템 정의 부팅 소스에 대한 자동 업데이트를 비활성화할 수 있습니다. 이 기능 게이트를 비활성화하면 모든 DataImportCron 오브젝트가 삭제됩니다. 관리자가 수동으로 삭제할 수 있지만 운영 체제 이미지를 저장하는 이전에 가져온 부팅 소스 오브젝트는 제거되지 않습니다.
enableCommonBootImageImport 기능 게이트를 비활성화하면 DataSource 오브젝트가 재설정되어 더 이상 원래 부팅 소스를 가리키지 않습니다. 관리자는 DataSource 오브젝트에 대한 새 PVC(영구 볼륨 클레임) 또는 볼륨 스냅샷을 생성한 다음 운영 체제 이미지로 채워 부팅 소스를 수동으로 제공할 수 있습니다.
9.3.1.1. 모든 시스템 정의 부팅 소스에 대한 자동 업데이트 관리 링크 복사링크가 클립보드에 복사되었습니다!
자동 부팅 소스 가져오기 및 업데이트를 비활성화하면 리소스 사용량을 줄일 수 있습니다. 연결이 끊긴 환경에서 자동 부팅 소스 업데이트를 비활성화하면 CDIDataImportCronOutdated 경고가 로그를 채울 수 없습니다.
모든 시스템 정의 부팅 소스에 대한 자동 업데이트를 비활성화하려면 값을 false 로 설정하여 enableCommonBootImageImport 기능 게이트를 끕니다. 이 값을 true 로 설정하면 기능 게이트가 다시 활성화되고 자동 업데이트가 다시 설정됩니다.
사용자 지정 부팅 소스는 이 설정의 영향을 받지 않습니다.
프로세스
HyperConvergedCR(사용자 정의 리소스)을 편집하여 자동 부팅 소스 업데이트 기능 게이트를 전환합니다.자동 부팅 소스 업데이트를 비활성화하려면
HyperConvergedCR의spec.featureGates.enableCommonBootImageImport필드를false로 설정합니다. 예를 들면 다음과 같습니다.oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": false}]'$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": false}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자동 부팅 소스 업데이트를 다시 활성화하려면
HyperConvergedCR의spec.featureGates.enableCommonBootImageImport필드를true로 설정합니다. 예를 들면 다음과 같습니다.oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": true}]'$ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": true}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2. 사용자 정의 부팅 소스 업데이트 관리 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Virtualization에서 제공하지 않는 사용자 정의 부팅 소스는 기능 게이트에서 제어하지 않습니다. HyperConverged CR(사용자 정의 리소스)을 편집하여 개별적으로 관리해야 합니다.
스토리지 클래스를 구성해야 합니다. 그렇지 않으면 클러스터에서 사용자 정의 부팅 소스에 대한 자동 업데이트를 수신할 수 없습니다. 자세한 내용은 스토리지 클래스 정의를 참조하십시오.
9.3.2.1. 사용자 정의 부팅 소스 업데이트를 위한 스토리지 클래스 구성 링크 복사링크가 클립보드에 복사되었습니다!
HyperConverged CR(사용자 정의 리소스)을 편집하여 기본 스토리지 클래스를 덮어쓸 수 있습니다.
부팅 소스는 기본 스토리지 클래스를 사용하여 스토리지에서 생성됩니다. 클러스터에 기본 스토리지 클래스가 없는 경우 사용자 정의 부팅 소스에 대한 자동 업데이트를 구성하기 전에 하나를 정의해야 합니다.
프로세스
다음 명령을 실행하여 기본 편집기에서
HyperConvergedCR을 엽니다.oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow storageClassName필드에 값을 입력하여 새 스토리지 클래스를 정의합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow For the custom image to be detected as an available boot source, the value of the `spec.dataVolumeTemplates.spec.sourceRef.name` parameter in the VM template must match this value.
For the custom image to be detected as an available boot source, the value of the `spec.dataVolumeTemplates.spec.sourceRef.name` parameter in the VM template must match this value.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 기본 스토리지 클래스에서
storageclass.kubernetes.io/is-default-class주석을 제거합니다.다음 명령을 실행하여 현재 기본 스토리지 클래스의 이름을 검색합니다.
oc get storageclass
$ oc get storageclassCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE csi-manila-ceph manila.csi.openstack.org Delete Immediate false 11d hostpath-csi-basic (default) kubevirt.io.hostpath-provisioner Delete WaitForFirstConsumer false 11d
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE csi-manila-ceph manila.csi.openstack.org Delete Immediate false 11d hostpath-csi-basic (default) kubevirt.io.hostpath-provisioner Delete WaitForFirstConsumer false 11d1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 예에서 현재 기본 스토리지 클래스의 이름은
hostpath-csi-basic입니다.
다음 명령을 실행하여 현재 기본 스토리지 클래스에서 주석을 제거합니다.
oc patch storageclass <current_default_storage_class> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'$ oc patch storageclass <current_default_storage_class> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;current_default_storage_class>를 기본 스토리지 클래스의storageClassName값으로 바꿉니다.
다음 명령을 실행하여 새 스토리지 클래스를 기본값으로 설정합니다.
oc patch storageclass <new_storage_class> -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'$ oc patch storageclass <new_storage_class> -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;new_storage_class>를HyperConvergedCR에 추가한storageClassName값으로 바꿉니다.
9.3.2.2. 사용자 정의 부팅 소스에 대한 자동 업데이트 활성화 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Virtualization은 기본적으로 시스템 정의 부팅 소스를 자동으로 업데이트하지만 사용자 정의 부팅 소스를 자동으로 업데이트하지는 않습니다. HyperConverged CR(사용자 정의 리소스)을 편집하여 자동 업데이트를 수동으로 활성화해야 합니다.
사전 요구 사항
- 클러스터에는 기본 스토리지 클래스가 있습니다.
프로세스
다음 명령을 실행하여 기본 편집기에서
HyperConvergedCR을 엽니다.oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow HyperConvergedCR을 편집하여dataImportCronTemplates섹션에 적절한 템플릿 및 부팅 소스를 추가합니다. 예를 들면 다음과 같습니다.사용자 정의 리소스의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 이 주석은
volumeBindingMode가WaitForFirstConsumer로 설정된 스토리지 클래스에 필요합니다. - 2
- cron 형식으로 지정된 작업의 스케줄입니다.
- 3
- 를 사용하여 레지스트리 소스에서 데이터 볼륨을 생성합니다. 노드 docker 캐시를 기반으로 하는
노드pullMethod가 아닌 기본PodpullMethod를 사용합니다.노드Docker 캐시는Container.Image를 통해 레지스트리 이미지를 사용할 수 있지만 CDI 가져오기는 액세스할 수 없는 경우 유용합니다. - 4
- 사용자 지정 이미지가 사용 가능한 부팅 소스로 감지되려면 이미지의
managedDataSource이름이 VM 템플릿 YAML 파일의spec.dataVolumeTemplates.spec.sourceRef.name에 있는 템플릿의DataSource이름과 일치해야 합니다. - 5
- cron 작업이 삭제될 때
모두데이터 볼륨 및 데이터 소스를 유지합니다. cron 작업이 삭제될 때 데이터 볼륨 및 데이터 소스를 삭제하려면None을 사용합니다.
- 파일을 저장합니다.
9.3.2.3. 볼륨 스냅샷 부팅 소스 활성화 링크 복사링크가 클립보드에 복사되었습니다!
운영 체제 기본 이미지를 저장하는 스토리지 클래스와 연결된 StorageProfile 의 매개변수를 설정하여 볼륨 스냅샷 부팅 소스를 활성화합니다. DataImportCron 은 원래 PVC 소스만 유지하도록 설계되었지만 VolumeSnapshot 소스는 특정 스토리지 유형의 PVC 소스보다 더 잘 확장됩니다.
단일 스냅샷에서 복제할 때 더 잘 확장하려면 검증된 스토리지 프로필에서 볼륨 스냅샷을 사용합니다.
사전 요구 사항
- 운영 체제 이미지를 사용하여 볼륨 스냅샷에 액세스할 수 있어야 합니다.
- 스토리지에서 스냅샷을 지원해야 합니다.
프로세스
다음 명령을 실행하여 부팅 소스를 프로비저닝하는 데 사용되는 스토리지 클래스에 해당하는 스토리지 프로필 오브젝트를 엽니다.
oc edit storageprofile <storage_class>
$ oc edit storageprofile <storage_class>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
StorageProfile의dataImportCronSourceFormat사양을 검토하여 VM이 기본적으로 PVC 또는 볼륨 스냅샷을 사용 중인지 확인합니다. dataImportCronSourceFormat사양을스냅샷으로 업데이트하여 필요한 경우 스토리지 프로필을 편집합니다.스토리지 프로필 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
부팅 소스를 프로비저닝하는 데 사용되는 스토리지 클래스에 해당하는 스토리지 프로필 오브젝트를 엽니다.
oc get storageprofile <storage_class> -oyaml
$ oc get storageprofile <storage_class> -oyamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
StorageProfile의dataImportCronSourceFormat사양이 'snapshot'으로 설정되어 있고DataImportCron이 가리키는 모든DataSource오브젝트가 볼륨 스냅샷을 참조하는지 확인합니다.
이제 이러한 부팅 소스를 사용하여 가상 머신을 생성할 수 있습니다.
9.3.3. 단일 부팅 소스에 대한 자동 업데이트 비활성화 링크 복사링크가 클립보드에 복사되었습니다!
HyperConverged CR(사용자 정의 리소스)을 편집하여 사용자 정의 또는 시스템 정의 여부에 관계없이 개별 부팅 소스에 대한 자동 업데이트를 비활성화할 수 있습니다.
프로세스
다음 명령을 실행하여 기본 편집기에서
HyperConvergedCR을 엽니다.oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnvCopy to Clipboard Copied! Toggle word wrap Toggle overflow spec.dataImportCronTemplates필드를 편집하여 개별 부팅 소스에 대한 자동 업데이트를 비활성화합니다.- 사용자 정의 부팅 소스
-
spec.dataImportCronTemplates필드에서 부팅 소스를 제거합니다. 자동 업데이트는 기본적으로 사용자 정의 부팅 소스에 대해 비활성화됩니다.
-
- 시스템 정의 부팅 소스
spec.dataImportCronTemplates에 부팅 소스를 추가합니다.참고자동 업데이트는 시스템 정의 부팅 소스에 대해 기본적으로 활성화되지만 추가하지 않는 한 이러한 부팅 소스는 CR에 나열되지 않습니다.
dataimportcrontemplate.kubevirt.io/enable주석의 값을'false'로 설정합니다.예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 파일을 저장합니다.
9.3.4. 부팅 소스 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
HyperConverged CR(사용자 정의 리소스)을 확인하여 부팅 소스가 시스템 정의 또는 사용자 정의인지 확인할 수 있습니다.
프로세스
다음 명령을 실행하여
HyperConvergedCR의 콘텐츠를 확인합니다.oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv -o yaml
$ oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow status.dataImportCronTemplates.status필드를 검토하여 부팅 소스의 상태를 확인합니다.-
필드에
commonTemplate: true가 포함된 경우 시스템 정의 부팅 소스입니다. -
status.dataImportCronTemplates.status필드에{}값이 있는 경우 사용자 지정 부팅 소스입니다.
-
필드에