4.9. OpenStack Cinder CSI Driver Operator

4.9.1. 개요

OpenShift Container Platform은 OpenStack Cinder 용 CSI(Container Storage Interface) 드라이버를 사용하여 PV(영구 볼륨)를 프로비저닝할 수 있습니다.

CSI(Container Storage Interface) Operator 및 드라이버를 사용하여 작업하는 경우 영구 스토리지 및 CSI 볼륨 구성에 대한 지식이 권장됩니다.

OpenStack Cinder 스토리지 자산에 마운트되는 CSI 프로비저닝 PV를 생성하기 위해 OpenShift Container Platform은 openshift-cluster-csi-drivers 네임스페이스에 OpenStack Cinder CSI 드라이버와 OpenStack Cinder CSI 드라이버를 설치합니다.

  • OpenStack Cinder CSI Driver Operator는 PVC를 생성하는 데 사용할 수 있는 CSI 스토리지 클래스를 제공합니다.
  • OpenStack Cinder CSI 드라이버를 사용하면 OpenStack Cinder PV를 생성 및 마운트할 수 있습니다.

OpenShift Container Platform의 경우 OpenStack Cinder in-tree에서 CSI 드라이버로의 자동 마이그레이션을 TP(Technology Preview) 기능으로 사용할 수 있습니다. 마이그레이션이 활성화되면 기존 in-tree 플러그인을 사용하여 프로비저닝된 볼륨이 자동으로 마이그레이션되어 OpenStack Cinder CSI 드라이버를 사용합니다. 자세한 내용은 CSI 자동 마이그레이션 기능을 참조하십시오.

4.9.2. CSI 정보

스토리지 벤더는 일반적으로 Kubernetes의 일부로 스토리지 드라이버를 제공합니다. CSI(Container Storage Interface) 구현을 통해 타사 공급자는 코어 Kubernetes 코드를 변경하지 않고 표준 인터페이스를 사용하여 스토리지 플러그인을 제공할 수 있습니다.

CSI Operator는 in-tree 볼륨 플러그인에서 사용할 수 없는 볼륨 스냅샷과 같은 OpenShift Container Platform 사용자 스토리지 옵션을 제공합니다.

중요

OpenShift Container Platform은 기본적으로 Cinder 스토리지를 프로비저닝하는 데 in-tree(비CSI) 플러그인을 사용합니다.

향후 OpenShift Container Platform 버전에서는 기존 in-tree 플러그인을 사용하여 프로비저닝된 볼륨이 동등한 CSI 드라이버로 마이그레이션할 계획입니다. CSI 자동 마이그레이션은 원활해야 합니다. 마이그레이션은 영구 볼륨, 영구 볼륨 클레임 및 스토리지 클래스와 같은 기존의 모든 API 오브젝트를 사용하는 방법은 변경하지 않습니다. 마이그레이션에 대한 자세한 내용은 CSI 자동 마이그레이션을 참조하십시오.

전체 마이그레이션 후 in-tree 플러그인은 향후 OpenShift Container Platform 버전에서 제거됩니다.

4.9.3. OpenStack Cinder CSI를 기본 스토리지 클래스로 설정

OpenStack Cinder CSI 드라이버는 cinder.csi.openstack.org 매개변수 키를 사용한 동적 프로비저닝을 지원합니다.

OpenShift Container Platform에서 OpenStack Cinder CSI 프로비저닝을 활성화하려면 기본 in-tree 스토리지 클래스를 standard-csi로 덮어쓰는 것이 좋습니다. 다른 방법으로 PVC(영구 볼륨 클레임)를 생성하고 스토리지 클래스를 "standard-csi"로 지정할 수 있습니다.

OpenShift Container Platform에서 기본 스토리지 클래스는 in-tree Cinder 드라이버를 참조합니다. 그러나 CSI 자동 마이그레이션이 활성화되면 기본 스토리지 클래스를 사용하여 생성된 볼륨에서 실제로 CSI 드라이버를 사용합니다.

권장 절차

기본 in-tree 스토리지 클래스를 작성하여 standard-csi 스토리지 클래스를 적용하려면 다음 단계를 사용합니다.

  1. 스토리지 클래스를 나열합니다.

    $ oc get storageclass

    출력 예

    NAME                   PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    standard(default)      cinder.csi.openstack.org   Delete          WaitForFirstConsumer   true                   46h
    standard-csi           kubernetes.io/cinder       Delete          WaitForFirstConsumer   true                   46h

  2. 기본 StorageClass에 대해 주석 storageclass.kubernetes.io/is-default-class의 값을 false로 변경합니다.

    $ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
  3. 주석을 storageclass.kubernetes.io/is-default-class=true로 추가하거나 수정하여 다른 스토리지 클래스를 기본값으로 설정합니다.

    $ oc patch storageclass standard-csi -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
  4. PVC가 기본적으로 CSI 스토리지 클래스를 참조하는지 확인합니다.

    $ oc get storageclass

    출력 예

    NAME                   PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    standard               kubernetes.io/cinder       Delete          WaitForFirstConsumer   true                   46h
    standard-csi(default)  cinder.csi.openstack.org   Delete          WaitForFirstConsumer   true                   46h

  5. 선택 사항: 스토리지 클래스를 지정하지 않고도 새 PVC를 정의할 수 있습니다.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cinder-claim
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi

    특정 스토리지 클래스를 지정하지 않는 PVC는 기본 스토리지 클래스를 사용하여 자동으로 프로비저닝됩니다.

  6. 선택 사항: 새 파일을 구성한 후 클러스터에서 파일을 생성합니다.

    $ oc create -f cinder-claim.yaml

추가 리소스