검색

9.3. 자동 부팅 소스 업데이트 관리

download PDF

다음 부팅 소스에 대한 자동 업데이트를 관리할 수 있습니다.

부팅 소스를 사용하면 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 로 설정하면 기능 게이트가 다시 활성화되고 자동 업데이트가 다시 설정됩니다.

참고

사용자 지정 부팅 소스는 이 설정의 영향을 받지 않습니다.

프로세스

  • HyperConverged CR(사용자 정의 리소스)을 편집하여 자동 부팅 소스 업데이트 기능 게이트를 전환합니다.

    • 자동 부팅 소스 업데이트를 비활성화하려면 HyperConverged CR의 spec.featureGates.enableCommonBootImageImport 필드를 false 로 설정합니다. 예를 들면 다음과 같습니다.

      $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
        --type json -p '[{"op": "replace", "path": \
        "/spec/featureGates/enableCommonBootImageImport", \
        "value": false}]'
    • 자동 부팅 소스 업데이트를 다시 활성화하려면 HyperConverged CR의 spec.featureGates.enableCommonBootImageImport 필드를 true 로 설정합니다. 예를 들면 다음과 같습니다.

      $ oc patch hyperconverged kubevirt-hyperconverged -n openshift-cnv \
        --type json -p '[{"op": "replace", "path": \
        "/spec/featureGates/enableCommonBootImageImport", \
        "value": true}]'

9.3.2. 사용자 정의 부팅 소스 업데이트 관리

OpenShift Virtualization에서 제공하지 않는 사용자 정의 부팅 소스는 기능 게이트에서 제어하지 않습니다. HyperConverged CR(사용자 정의 리소스)을 편집하여 개별적으로 관리해야 합니다.

중요

스토리지 클래스를 구성해야 합니다. 그렇지 않으면 클러스터에서 사용자 정의 부팅 소스에 대한 자동 업데이트를 수신할 수 없습니다. 자세한 내용은 스토리지 클래스 정의를 참조하십시오.

9.3.2.1. 사용자 정의 부팅 소스 업데이트를 위한 스토리지 클래스 구성

HyperConverged CR(사용자 정의 리소스)을 편집하여 기본 스토리지 클래스를 덮어쓸 수 있습니다.

중요

부팅 소스는 기본 스토리지 클래스를 사용하여 스토리지에서 생성됩니다. 클러스터에 기본 스토리지 클래스가 없는 경우 사용자 정의 부팅 소스에 대한 자동 업데이트를 구성하기 전에 하나를 정의해야 합니다.

프로세스

  1. 다음 명령을 실행하여 기본 편집기에서 HyperConverged CR을 엽니다.

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. 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
          schedule: "0 */12 * * *" 2
          managedDataSource: <data_source> 3
    # ...
    1
    스토리지 클래스를 정의합니다.
    2
    필수: cron 형식으로 지정된 작업의 스케줄입니다.
    3
    필수: 사용할 데이터 소스입니다.
    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.
  3. 현재 기본 스토리지 클래스에서 storageclass.kubernetes.io/is-default-class 주석을 제거합니다.

    1. 다음 명령을 실행하여 현재 기본 스토리지 클래스의 이름을 검색합니다.

      $ oc get storageclass

      출력 예

      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 입니다.
    2. 다음 명령을 실행하여 현재 기본 스토리지 클래스에서 주석을 제거합니다.

      $ 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 값으로 바꿉니다.
  4. 다음 명령을 실행하여 새 스토리지 클래스를 기본값으로 설정합니다.

    $ 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 값으로 바꿉니다.

9.3.2.2. 사용자 정의 부팅 소스에 대한 자동 업데이트 활성화

OpenShift Virtualization은 기본적으로 시스템 정의 부팅 소스를 자동으로 업데이트하지만 사용자 정의 부팅 소스를 자동으로 업데이트하지는 않습니다. HyperConverged CR(사용자 정의 리소스)을 편집하여 자동 업데이트를 수동으로 활성화해야 합니다.

사전 요구 사항

  • 클러스터에는 기본 스토리지 클래스가 있습니다.

프로세스

  1. 다음 명령을 실행하여 기본 편집기에서 HyperConverged CR을 엽니다.

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. 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
          labels:
            instancetype.kubevirt.io/default-preference: centos.7
            instancetype.kubevirt.io/default-instancetype: u1.medium
        spec:
          schedule: "0 */12 * * *" 2
          template:
            spec:
              source:
                registry: 3
                  url: docker://quay.io/containerdisks/centos:7-2009
              storage:
                resources:
                  requests:
                    storage: 30Gi
          garbageCollect: Outdated
          managedDataSource: centos7 4

    1
    이 주석은 volumeBindingModeWaitForFirstConsumer 로 설정된 스토리지 클래스에 필요합니다.
    2
    cron 형식으로 지정된 작업의 스케줄입니다.
    3
    를 사용하여 레지스트리 소스에서 데이터 볼륨을 생성합니다. 노드 docker 캐시를 기반으로 하는 노드 pullMethod 가 아닌 기본 Pod pullMethod 를 사용합니다. 노드 Docker 캐시는 Container.Image 를 통해 레지스트리 이미지를 사용할 수 있지만 CDI 가져오기는 액세스할 수 없는 경우 유용합니다.
    4
    사용자 지정 이미지가 사용 가능한 부팅 소스로 감지되려면 이미지의 managedDataSource 이름이 VM 템플릿 YAML 파일의 spec.dataVolumeTemplates.spec.sourceRef.name 에 있는 템플릿의 DataSource 이름과 일치해야 합니다.
  3. 파일을 저장합니다.

9.3.2.3. 볼륨 스냅샷 부팅 소스 활성화

운영 체제 기본 이미지를 저장하는 스토리지 클래스와 연결된 StorageProfile 의 매개변수를 설정하여 볼륨 스냅샷 부팅 소스를 활성화합니다. DataImportCron 은 원래 PVC 소스만 유지하도록 설계되었지만 VolumeSnapshot 소스는 특정 스토리지 유형의 PVC 소스보다 더 잘 확장됩니다.

참고

단일 스냅샷에서 복제할 때 더 잘 확장하려면 검증된 스토리지 프로필에서 볼륨 스냅샷을 사용합니다.

사전 요구 사항

  • 운영 체제 이미지를 사용하여 볼륨 스냅샷에 액세스할 수 있어야 합니다.
  • 스토리지에서 스냅샷을 지원해야 합니다.

프로세스

  1. 다음 명령을 실행하여 부팅 소스를 프로비저닝하는 데 사용되는 스토리지 클래스에 해당하는 스토리지 프로필 오브젝트를 엽니다.

    $ oc edit storageprofile <storage_class>
  2. StorageProfiledataImportCronSourceFormat 사양을 검토하여 VM이 기본적으로 PVC 또는 볼륨 스냅샷을 사용 중인지 확인합니다.
  3. dataImportCronSourceFormat 사양을 스냅샷 으로 업데이트하여 필요한 경우 스토리지 프로필을 편집합니다.

    스토리지 프로필 예

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
    # ...
    spec:
      dataImportCronSourceFormat: snapshot

검증

  1. 부팅 소스를 프로비저닝하는 데 사용되는 스토리지 클래스에 해당하는 스토리지 프로필 오브젝트를 엽니다.

    $ oc get storageprofile <storage_class>  -oyaml
  2. StorageProfiledataImportCronSourceFormat 사양이 'snapshot'으로 설정되어 있고 DataImportCron 이 가리키는 모든 DataSource 오브젝트가 볼륨 스냅샷을 참조하는지 확인합니다.

이제 이러한 부팅 소스를 사용하여 가상 머신을 생성할 수 있습니다.

9.3.3. 단일 부팅 소스에 대한 자동 업데이트 비활성화

HyperConverged CR(사용자 정의 리소스)을 편집하여 사용자 정의 또는 시스템 정의 여부에 관계없이 개별 부팅 소스에 대한 자동 업데이트를 비활성화할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 기본 편집기에서 HyperConverged CR을 엽니다.

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
  2. spec.dataImportCronTemplates 필드를 편집하여 개별 부팅 소스에 대한 자동 업데이트를 비활성화합니다.

    사용자 정의 부팅 소스
    • spec.dataImportCronTemplates 필드에서 부팅 소스를 제거합니다. 자동 업데이트는 기본적으로 사용자 정의 부팅 소스에 대해 비활성화됩니다.
    시스템 정의 부팅 소스
    1. spec.dataImportCronTemplates 에 부팅 소스를 추가합니다.

      참고

      자동 업데이트는 시스템 정의 부팅 소스에 대해 기본적으로 활성화되지만 추가하지 않는 한 이러한 부팅 소스는 CR에 나열되지 않습니다.

    2. 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
      # ...
  3. 파일을 저장합니다.

9.3.4. 부팅 소스 상태 확인

HyperConverged CR(사용자 정의 리소스)을 확인하여 부팅 소스가 시스템 정의 또는 사용자 정의인지 확인할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 HyperConverged CR의 콘텐츠를 확인합니다.

    $ oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv -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
    # ...

    1
    시스템 정의 부팅 소스를 나타냅니다.
    2
    사용자 지정 부팅 소스를 나타냅니다.
  2. status.dataImportCronTemplates.status 필드를 검토하여 부팅 소스의 상태를 확인합니다.

    • 필드에 commonTemplate: true 가 포함된 경우 시스템 정의 부팅 소스입니다.
    • status.dataImportCronTemplates.status 필드에 {} 값이 있는 경우 사용자 지정 부팅 소스입니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.