9.5. hostpath 프로비전 프로그램을 사용하여 로컬 스토리지 구성


HPP(Hostpath provisioner)를 사용하여 가상 머신의 로컬 스토리지를 구성할 수 있습니다.

OpenShift Virtualization Operator를 설치하면 Hostpath Provisioner Operator가 자동으로 설치됩니다. HPP는 Hostpath Provisioner Operator가 생성한 OpenShift Virtualization을 위해 설계된 로컬 스토리지 프로비전 프로그램입니다. HPP를 사용하려면 기본 스토리지 풀이 있는 HPP CR(사용자 정의 리소스)을 생성합니다.

9.5.1. 기본 스토리지 풀을 사용하여 hostpath 프로비전 프로그램 생성

storagePools 스탠자를 사용하여 HPP CR(사용자 정의 리소스)을 생성하여 기본 스토리지 풀로 HPP(Hostpath 프로비전 프로그램)를 구성합니다. 스토리지 풀은 CSI 드라이버에서 사용하는 이름과 경로를 지정합니다.

중요

운영 체제와 동일한 파티션에 스토리지 풀을 생성하지 마십시오. 그렇지 않으면 운영 체제 파티션이 용량으로 채워지기 때문에 성능에 영향을 미치거나 노드가 불안정하거나 사용할 수 없게 됩니다.

사전 요구 사항

  • spec.storagePools.path 에 지정된 디렉터리에는 읽기/쓰기 액세스 권한이 있어야 합니다.

프로세스

  1. 다음 예와 같이 storagePools 스탠자를 사용하여 hpp_cr.yaml 파일을 생성합니다.

    apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
    kind: HostPathProvisioner
    metadata:
      name: hostpath-provisioner
    spec:
      imagePullPolicy: IfNotPresent
      storagePools: 1
      - name: any_name
        path: "/var/myvolumes" 2
    workload:
      nodeSelector:
        kubernetes.io/os: linux
    1
    storagePools 스탠자는 여러 항목을 추가할 수 있는 배열입니다.
    2
    이 노드 경로 아래에 스토리지 풀 디렉터리를 지정합니다.
  2. 파일을 저장하고 종료합니다.
  3. 다음 명령을 실행하여 HPP를 생성합니다.

    $ oc create -f hpp_cr.yaml

9.5.1.1. 스토리지 클래스 생성 정보

스토리지 클래스를 생성할 때 해당 스토리지 클래스에 속하는 PV(영구 볼륨)의 동적 프로비저닝에 영향을 주는 매개변수를 설정합니다. StorageClass 오브젝트를 생성한 후에는 이 오브젝트의 매개변수를 업데이트할 수 없습니다.

hostpath 프로비전 프로그램(HPP)을 사용하려면 storagePools 스탠자를 사용하여 CSI 드라이버에 대한 관련 스토리지 클래스를 생성해야 합니다.

참고

가상 머신은 로컬 PV를 기반으로 하는 데이터 볼륨을 사용합니다. 로컬 PV는 특정 노드에 바인딩됩니다. 디스크 이미지는 가상 머신에서 사용할 수 있는 반면 가상 머신은 이전에 로컬 스토리지 PV가 고정된 노드에 예약할 수 없습니다.

이 문제를 해결하려면 Kubernetes Pod 스케줄러를 사용하여 PVC(영구 볼륨 클레임)를 올바른 노드의 PV에 바인딩합니다. volumeBindingMode 매개변수가 WaitForFirstConsumer 로 설정된 StorageClass 값을 사용하면 PVC를 사용하여 Pod가 생성될 때까지 PV의 바인딩 및 프로비저닝이 지연됩니다.

9.5.1.2. storagePools 스탠자를 사용하여 CSI 드라이버의 스토리지 클래스 생성

HPP(Hostpath provisioner)를 사용하려면 CSI(Container Storage Interface) 드라이버에 연결된 스토리지 클래스를 생성해야 합니다.

스토리지 클래스를 생성할 때 해당 스토리지 클래스에 속하는 PV(영구 볼륨)의 동적 프로비저닝에 영향을 주는 매개변수를 설정합니다. StorageClass 오브젝트를 생성한 후에는 이 오브젝트의 매개변수를 업데이트할 수 없습니다.

참고

가상 머신은 로컬 PV를 기반으로 하는 데이터 볼륨을 사용합니다. 로컬 PV는 특정 노드에 바인딩됩니다. 디스크 이미지는 가상 머신에서 사용할 수 있지만 이전에 로컬 스토리지 PV가 고정된 노드에 가상 머신을 예약할 수 없습니다.

이 문제를 해결하려면 Kubernetes Pod 스케줄러를 사용하여 PVC(영구 볼륨 클레임)를 올바른 노드의 PV에 바인딩합니다. volumeBindingMode 매개변수가 WaitForFirstConsumer 로 설정된 StorageClass 값을 사용하면 PVC를 사용하여 Pod가 생성될 때까지 PV의 바인딩 및 프로비저닝이 지연됩니다.

프로세스

  1. storageclass_csi.yaml 파일을 생성하여 스토리지 클래스를 정의합니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: hostpath-csi
    provisioner: kubevirt.io.hostpath-provisioner
    reclaimPolicy: Delete 1
    volumeBindingMode: WaitForFirstConsumer 2
    parameters:
      storagePool: my-storage-pool 3
    1
    reclaimPolicy에 사용할 수 있는 값은 DeleteRetain 두 가지입니다. 값을 지정하지 않으면 기본값은 Delete 입니다.
    2
    volumeBindingMode 매개변수는 동적 프로비저닝 및 볼륨 바인딩이 발생하는 시기를 결정합니다. PVC(영구 볼륨 클레임)를 사용하는 Pod가 생성될 때까지 PV(영구 볼륨)의 바인딩 및 프로비저닝을 지연하려면 WaitForFirstConsumer 를 지정합니다. 이렇게 하면 PV에서 Pod의 스케줄링 요구 사항을 충족할 수 있습니다.
    3
    HPP CR에 정의된 스토리지 풀의 이름을 지정합니다.
  2. 파일을 저장하고 종료합니다.
  3. 다음 명령을 실행하여 StorageClass 오브젝트를 만듭니다.

    $ oc create -f storageclass_csi.yaml

9.5.2. PVC 템플릿으로 생성된 스토리지 풀 정보

대규모 PV(영구 볼륨)가 단일 있는 경우 HPP(Hostpath provisioner) 사용자 정의 리소스(CR)에 PVC 템플릿을 정의하여 스토리지 풀을 생성할 수 있습니다.

PVC 템플릿으로 생성된 스토리지 풀에는 여러 HPP 볼륨이 포함될 수 있습니다. PV를 더 작은 볼륨으로 분할하면 데이터 할당의 유연성이 향상됩니다.

PVC 템플릿은 PersistentVolumeClaim 오브젝트의 spec 스탠자를 기반으로 합니다.

PersistentVolumeClaim 오브젝트의 예

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: iso-pvc
spec:
  volumeMode: Block 1
  storageClassName: my-storage-class
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

1
이 값은 블록 볼륨 모드 PV에만 필요합니다.

HPP CR의 pvcTemplate 사양을 사용하여 스토리지 풀을 정의합니다. Operator는 HPP CSI 드라이버가 포함된 각 노드의 pvcTemplate 사양에서 PVC를 생성합니다. PVC 템플릿에서 생성된 PVC는 단일 대규모 PV를 사용하므로 HPP에서 더 작은 동적 볼륨을 생성할 수 있습니다.

PVC 템플릿에서 생성된 스토리지 풀과 기본 스토리지 풀을 결합할 수 있습니다.

9.5.2.1. PVC 템플릿을 사용하여 스토리지 풀 생성

HPP CR(사용자 정의 리소스)에 PVC 템플릿을 지정하여 여러 HPP(Hostpath provisioner) 볼륨에 대한 스토리지 풀을 생성할 수 있습니다.

중요

운영 체제와 동일한 파티션에 스토리지 풀을 생성하지 마십시오. 그렇지 않으면 운영 체제 파티션이 용량으로 채워지기 때문에 성능에 영향을 미치거나 노드가 불안정하거나 사용할 수 없게 됩니다.

사전 요구 사항

  • spec.storagePools.path 에 지정된 디렉터리에는 읽기/쓰기 액세스 권한이 있어야 합니다.

프로세스

  1. 다음 예에 따라 storagePools 스탠자에 PVC(영구 볼륨) 템플릿을 지정하는 HPP CR의 hpp_pvc_template_pool.yaml 파일을 생성합니다.

    apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
    kind: HostPathProvisioner
    metadata:
      name: hostpath-provisioner
    spec:
      imagePullPolicy: IfNotPresent
      storagePools: 1
      - name: my-storage-pool
        path: "/var/myvolumes" 2
        pvcTemplate:
          volumeMode: Block 3
          storageClassName: my-storage-class 4
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 5Gi 5
      workload:
        nodeSelector:
          kubernetes.io/os: linux
    1
    storagePools 스탠자는 기본 및 PVC 템플릿 스토리지 풀을 모두 포함할 수 있는 배열입니다.
    2
    이 노드 경로 아래에 스토리지 풀 디렉터리를 지정합니다.
    3
    선택 사항: volumeMode 매개변수는 프로비저닝된 볼륨 형식과 일치하는 경우 Block 또는 Filesystem 일 수 있습니다. 값을 지정하지 않으면 기본값은 Filesystem 입니다. volumeModeBlock 인 경우 마운트 Pod는 마운트하기 전에 블록 볼륨에 XFS 파일 시스템을 생성합니다.
    4
    storageClassName 매개변수가 생략되면 기본 스토리지 클래스가 PVC를 생성하는 데 사용됩니다. storageClassName 을 생략하는 경우 HPP 스토리지 클래스가 기본 스토리지 클래스가 아닌지 확인합니다.
    5
    정적 또는 동적으로 프로비저닝된 스토리지를 지정할 수 있습니다. 두 경우 모두 요청된 스토리지 크기가 사실상 분할하려는 볼륨에 적합한지 확인하거나 PVC를 큰 PV에 바인딩할 수 없습니다. 사용 중인 스토리지 클래스가 동적으로 프로비저닝된 스토리지를 사용하는 경우 일반적인 요청 크기와 일치하는 할당 크기를 선택합니다.
  2. 파일을 저장하고 종료합니다.
  3. 다음 명령을 실행하여 스토리지 풀로 HPP를 생성합니다.

    $ oc create -f hpp_pvc_template_pool.yaml
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.