11.7. 자동 부팅 소스 업데이트 관리
자동 부팅 소스 업데이트를 관리합니다.
11.7.1. 자동 부팅 소스 업데이트 정보
부팅 소스를 사용하면 VM(가상 머신)을 더 쉽게 쉽게 생성할 수 있습니다. 자동 부팅 소스 업데이트가 활성화되면 CDI(Containerized Data Importer)가 이미지를 가져오고, 폴링하고, 업데이트하여 새 VM에 대해 복제할 수 있도록 합니다. 기본적으로 CDI는 OpenShift Virtualization에서 제공하는 시스템 정의 부팅 소스를 자동으로 업데이트합니다.
enableCommonBootImageImport
기능 게이트를 비활성화하여 모든 시스템 정의 부팅 소스에 대한 자동 업데이트를 비활성화할 수 있습니다. 이 기능 게이트를 비활성화하면 모든 DataImportCron
오브젝트가 삭제됩니다. 이는 관리자가 수동으로 삭제할 수 있지만 운영 체제 이미지를 저장하는 이전에 가져온 PVC(PersistentVolume VolumeClaim
) 오브젝트는 제거되지 않습니다.
enableCommonBootImageImport
기능 게이트를 비활성화하면 DataSource
오브젝트가 재설정되어 더 이상 원래 PVC를 가리키지 않습니다. 관리자는 DataSource
개체의 새 PVC를 생성하고 운영 체제 이미지로 PVC를 채우는 방식으로 부팅 소스를 수동으로 제공할 수 있습니다.
OpenShift Virtualization에서 제공하지 않는 사용자 정의 부팅 소스는 기능 게이트에서 제어하지 않습니다. HyperConverged
CR(사용자 정의 리소스)을 편집하여 개별적으로 관리해야 합니다. 이 방법을 사용하여 개별 시스템 정의 부팅 소스를 관리할 수도 있습니다.
11.7.2. 모든 시스템 부팅 소스에 대한 자동 업데이트 활성화 또는 비활성화
기능 게이트를 사용하여 모든 시스템 정의 부팅 소스에 대한 자동 업데이트를 제어합니다.
11.7.2.1. 모든 시스템 정의 부팅 소스에 대한 자동 업데이트 관리
자동 부팅 소스 가져오기 및 업데이트를 비활성화하면 리소스 사용량을 줄일 수 있습니다. 연결이 끊긴 환경에서 자동 부팅 소스 업데이트를 비활성화하면 CDIDataImportCronOutdated
경고가 로그를 채울 수 없습니다.
모든 시스템 정의 부팅 소스에 대한 자동 업데이트를 비활성화하려면 값을 false
로 설정하여 enableCommonBootImageImport
기능 게이트를 끕니다. 이 값을 true
로 설정하면 기능 게이트가 다시 활성화되고 자동 업데이트가 다시 설정됩니다.
사용자 지정 부팅 소스는 이 설정의 영향을 받지 않습니다.
절차
HyperConverged
CR(사용자 정의 리소스)을 편집하여 자동 부팅 소스 업데이트 기능 게이트를 전환합니다.자동 부팅 소스 업데이트를 비활성화하려면
HyperConverged
CR의spec.featureGates.enableCommonBootImageImport
필드를false
로 설정합니다. 예를 들면 다음과 같습니다.$ oc patch hco kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": false}]'
자동 부팅 소스 업데이트를 다시 활성화하려면
HyperConverged
CR의spec.featureGates.enableCommonBootImageImport
필드를true
로 설정합니다. 예를 들면 다음과 같습니다.$ oc patch hco kubevirt-hyperconverged -n openshift-cnv \ --type json -p '[{"op": "replace", "path": \ "/spec/featureGates/enableCommonBootImageImport", \ "value": true}]'
11.7.3. 사용자 정의 부팅 소스에 대한 자동 업데이트 활성화
클러스터에 기본 스토리지 클래스가 있는지 확인합니다. 그런 다음 사용자 정의 부팅 소스에 대한 자동 업데이트를 활성화합니다.
11.7.3.1. 사용자 정의 부팅 소스 업데이트를 위한 스토리지 클래스 구성
HyperConverged
CR(사용자 정의 리소스)에서 새 기본 스토리지 클래스를 지정합니다.
부팅 소스는 기본 스토리지 클래스를 사용하여 스토리지에서 생성됩니다. 클러스터에 기본 스토리지 클래스가 없는 경우 사용자 정의 부팅 소스에 대한 자동 업데이트를 구성하기 전에 하나를 정의해야 합니다.
절차
다음 명령을 실행하여 기본 편집기에서
HyperConverged
CR을 엽니다.$ oc edit hco -n openshift-cnv kubevirt-hyperconverged
storageClassName
필드에 값을 입력하여 새 스토리지 클래스를 정의합니다.apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: dataImportCronTemplates: - metadata: name: rhel8-image-cron spec: template: spec: storageClassName: <new_storage_class> 1 #...
- 1
- 스토리지 클래스를 정의합니다.
현재 기본 스토리지 클래스에서
storageclass.kubernetes.io/is-default-class
주석을 제거합니다.다음 명령을 실행하여 현재 기본 스토리지 클래스의 이름을 검색합니다.
$ oc get sc
출력 예
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 1 ...
- 1
- 이 예에서 현재 기본 스토리지 클래스의 이름은
hostpath-csi-basic
입니다.
다음 명령을 실행하여 현재 기본 스토리지 클래스에서 주석을 제거합니다.
$ oc patch storageclass <current_default_storage_class> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}' 1
- 1
- &
lt;current_default_storage_class
>를 기본 스토리지 클래스의storageClassName
값으로 바꿉니다.
다음 명령을 실행하여 새 스토리지 클래스를 기본값으로 설정합니다.
$ oc patch storageclass <new_storage_class> -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' 1
- 1
- &
lt;new_storage_class
>를HyperConverged
CR에 추가한storageClassName
값으로 바꿉니다.
11.7.3.2. 사용자 정의 부팅 소스에 대한 자동 업데이트 활성화
OpenShift Virtualization은 기본적으로 시스템 정의 부팅 소스를 자동으로 업데이트하지만 사용자 정의 부팅 소스를 자동으로 업데이트하지는 않습니다. HyperConverged
CR(사용자 정의 리소스)을 편집하여 자동 업데이트를 수동으로 활성화해야 합니다.
사전 요구 사항
- 클러스터에는 기본 스토리지 클래스가 있습니다.
절차
다음 명령을 실행하여 기본 편집기에서
HyperConverged
CR을 엽니다.$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
HyperConverged
CR을 편집하여dataImportCronTemplates
섹션에 적절한 템플릿 및 부팅 소스를 추가합니다. 예를 들면 다음과 같습니다.사용자 정의 리소스의 예
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: dataImportCronTemplates: - metadata: name: centos7-image-cron annotations: cdi.kubevirt.io/storage.bind.immediate.requested: "true" 1 spec: schedule: "0 */12 * * *" 2 template: spec: source: registry: 3 url: docker://quay.io/containerdisks/centos:7-2009 storage: resources: requests: storage: 10Gi managedDataSource: centos7 4 retentionPolicy: "None" 5
- 1
- 이 주석은
volumeBindingMode
가WaitForFirstConsumer
로 설정된 스토리지 클래스에 필요합니다. - 2
- cron 형식에 지정된 작업의 스케줄입니다.
- 3
- 을 사용하여 레지스트리 소스에서 데이터 볼륨을 생성합니다. 노드 Docker 캐시를 기반으로 하는
노드
pullMethod
가 아닌 기본Pod
pullMethod
를 사용합니다.노드
Docker 캐시는Container.Image
를 통해 레지스트리 이미지를 사용할 수 있지만 CDI 가져오기 관리자는 액세스할 수 없는 경우 유용합니다. - 4
- 사용자 지정 이미지를 사용 가능한 부팅 소스로 탐지하려면 VM 템플릿 YAML 파일의
spec.dataVolumeTemplates.spec.sourceRef.name
에 있는 템플릿의DataSource
의 이름과 이미지managedDataSource
의 이름이 일치해야 합니다. - 5
All
을 사용하여 cron 작업이 삭제될 때 데이터 볼륨 및 데이터 소스를 유지합니다. cron 작업이 삭제될 때None
을 사용하여 데이터 볼륨 및 데이터 소스를 삭제합니다.
- 파일을 저장합니다.
11.7.4. 특정 부팅 소스에 대한 자동 업데이트 비활성화
개별 부팅 소스에 대한 자동 업데이트를 비활성화합니다.
11.7.4.1. 단일 부팅 소스에 대한 자동 업데이트 비활성화
HyperConverged
CR(사용자 정의 리소스)을 편집하여 사용자 정의 또는 시스템 정의 여부에 관계없이 개별 부팅 소스에 대한 자동 업데이트를 비활성화할 수 있습니다.
절차
다음 명령을 실행하여 기본 편집기에서
HyperConverged
CR을 엽니다.$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
spec.dataImportCronTemplates
필드를 편집하여 개별 부팅 소스에 대한 자동 업데이트를 비활성화합니다.- 사용자 정의 부팅 소스
-
spec.dataImportCronTemplates
필드에서 부팅 소스를 제거합니다. 자동 업데이트는 기본적으로 사용자 정의 부팅 소스에 대해 비활성화됩니다.
-
- 시스템 정의 부팅 소스
spec.dataImportCronTemplates
에 부팅 소스를 추가합니다.참고자동 업데이트는 시스템 정의 부팅 소스에 대해 기본적으로 활성화되지만 추가하지 않는 한 이러한 부팅 소스는 CR에 나열되지 않습니다.
dataimportcrontemplate.kubevirt.io/enable
주석의 값을'false'
로 설정합니다.예를 들면 다음과 같습니다.
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: dataImportCronTemplates: - metadata: annotations: dataimportcrontemplate.kubevirt.io/enable: 'false' name: rhel8-image-cron # ...
- 파일을 저장합니다.
11.7.5. 부팅 소스의 상태 확인
HyperConverged
CR(사용자 정의 리소스)을 확인하여 부팅 소스가 시스템 정의 또는 사용자 정의인지 확인할 수 있습니다.
절차
다음 명령을 실행하여
HyperConverged
CR의 콘텐츠를 확인합니다.$ oc get hco -n openshift-cnv kubevirt-hyperconverged -o yaml
출력 예
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged spec: # ... status: # ... dataImportCronTemplates: - metadata: annotations: cdi.kubevirt.io/storage.bind.immediate.requested: "true" name: centos-7-image-cron spec: garbageCollect: Outdated managedDataSource: centos7 schedule: 55 8/12 * * * template: metadata: {} spec: source: registry: url: docker://quay.io/containerdisks/centos:7-2009 storage: resources: requests: storage: 30Gi status: {} status: commonTemplate: true 1 # ... - metadata: annotations: cdi.kubevirt.io/storage.bind.immediate.requested: "true" name: user-defined-dic spec: garbageCollect: Outdated managedDataSource: user-defined-centos-stream8 schedule: 55 8/12 * * * template: metadata: {} spec: source: registry: pullMethod: node url: docker://quay.io/containerdisks/centos-stream:8 storage: resources: requests: storage: 30Gi status: {} status: {} 2 # ...
status.dataImportCronTemplates.status
필드를 검토하여 부팅 소스의 상태를 확인합니다.-
필드에
commonTemplate: true
가 포함된 경우 시스템 정의 부팅 소스입니다. -
status.dataImportCronTemplates.status
필드에{}
값이 있는 경우 사용자 지정 부팅 소스입니다.
-
필드에