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(사용자 정의 리소스)에서 새 기본 스토리지 클래스를 지정합니다.

중요

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

절차

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

    $ oc edit hco -n openshift-cnv kubevirt-hyperconverged
  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
    #...
    1
    스토리지 클래스를 정의합니다.
  3. 현재 기본 스토리지 클래스에서 storageclass.kubernetes.io/is-default-class 주석을 제거합니다.

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

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

11.7.3.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
        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
    이 주석은 volumeBindingModeWaitForFirstConsumer 로 설정된 스토리지 클래스에 필요합니다.
    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 을 사용하여 데이터 볼륨 및 데이터 소스를 삭제합니다.
  3. 파일을 저장합니다.

11.7.4. 특정 부팅 소스에 대한 자동 업데이트 비활성화

개별 부팅 소스에 대한 자동 업데이트를 비활성화합니다.

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

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

11.7.5. 부팅 소스의 상태 확인

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

절차

  1. 다음 명령을 실행하여 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
    # ...

    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.