5.19. VMware vSphere CSI Driver Operator

5.19.1. 개요

OpenShift Container Platform은 VMDK(Virtual Machine Disk) 볼륨용 CSI(Container Storage Interface) VMware vSphere 드라이버를 사용하여 영구 볼륨(PV)을 프로비저닝할 수 있습니다.

CSI Operator 및 드라이버를 사용할 때는 영구 스토리지CSI 볼륨 구성에 대해 숙지하는 것이 좋습니다.

vSphere 스토리지 자산에 마운트되는 CSI(영구 볼륨)를 생성하기 위해 OpenShift Container Platform은 openshift-cluster-csi-drivers 네임스페이스에 기본적으로 vSphere CSI Driver Operator 및 vSphere CSI 드라이버를 설치합니다.

  • vSphere CSI Driver Operator: Operator는 PVC(영구 볼륨 클레임)를 생성하는 데 사용할 수 있는 thin-csi 라는 스토리지 클래스를 제공합니다. vSphere CSI Driver Operator는 필요에 따라 스토리지 볼륨을 생성할 수 있어 클러스터 관리자가 스토리지를 사전 프로비저닝할 필요가 없어 동적 볼륨 프로비저닝을 지원합니다.
  • vSphere CSI 드라이버: 이 드라이버를 사용하면 vSphere PV를 생성 및 마운트할 수 있습니다. OpenShift Container Platform 4.12.21 이상에서 드라이버 버전은 2.7.1입니다. OpenShift Container Platform 4.12 버전 4.12.21에서 버전은 2.6.1입니다. vSphere CSI 드라이버는 XFS 및 Ext4를 포함하여 기본 Red Hat Core OS 릴리스에서 지원하는 모든 파일 시스템을 지원합니다. 지원되는 파일 시스템에 대한 자세한 내용은 사용 가능한 파일 시스템 개요 를 참조하십시오.
중요

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

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

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

참고

vSphere CSI 드라이버는 동적 및 정적 프로비저닝을 지원합니다. PV 사양에서 정적 프로비저닝을 사용하는 경우 csi.volumeAttributes 의 키 storage.kubernetes.io/csiProvisionerIdentity 를 사용하지 마십시오. 이 키는 동적으로 프로비저닝된 PV를 나타내기 때문입니다.

5.19.2. CSI 정보

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

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

5.19.3. vSphere 스토리지 정책

vSphere CSI Driver Operator 스토리지 클래스는 vSphere의 스토리지 정책을 사용합니다. OpenShift Container Platform은 클라우드 구성에 구성된 데이터 저장소를 대상으로 하는 스토리지 정책을 자동으로 생성합니다.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: thin-csi
provisioner: csi.vsphere.vmware.com
parameters:
  StoragePolicyName: "$openshift-storage-policy-xxxx"
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: false
reclaimPolicy: Delete

5.19.4. ReadWriteMany vSphere 볼륨 지원

기본 vSphere 환경에서 vSAN 파일 서비스를 지원하는 경우 OpenShift Container Platform에서 설치한 vSphere CSI(Container Storage Interface) Driver Operator는 RWX(ReadWriteMany) 볼륨 프로비저닝을 지원합니다. vSAN 파일 서비스가 구성되지 않은 경우 RWO(ReadWriteOnce)가 사용 가능한 유일한 액세스 모드입니다. vSAN 파일 서비스가 구성되어 있지 않고 RWX를 요청하면 볼륨이 생성되지 않고 오류가 기록됩니다.

사용자 환경에서 vSAN 파일 서비스를 구성하는 방법에 대한 자세한 내용은 vSAN 파일 서비스를 참조하십시오.

다음과 같은 PVC(영구 볼륨 클레임)를 사용하여 RWX 볼륨을 요청할 수 있습니다.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  resources:
    requests:
      storage: 1Gi
  accessModes:
     - ReadWriteMany
  storageClassName: thin-csi

RWX 볼륨 유형의 PVC를 요청하면 vSAN 파일 서비스에서 지원하는 PV(영구 볼륨)가 프로비저닝됩니다.

5.19.5. VMware vSphere CSI Driver Operator 요구 사항

vSphere CSI Driver Operator를 설치하려면 다음 요구 사항을 충족해야 합니다.

  • VMware vSphere 버전: 7.0 업데이트 2 이상; 8.0 업데이트 1 이상
  • vCenter 버전: 7.0 업데이트 2 이상; 8.0 업데이트 1 이상
  • 하드웨어 버전 15 이상의 가상 머신
  • 클러스터에 이미 설치된 타사 vSphere CSI 드라이버가 없음

타사 vSphere CSI 드라이버가 클러스터에 있는 경우 OpenShift Container Platform은 이를 덮어쓰지 않습니다. 타사 vSphere CSI 드라이버가 있으면 OpenShift Container Platform이 OpenShift Container Platform 4.13 이상으로 업데이트되지 않습니다.

참고

VMware vSphere CSI Driver Operator는 설치 매니페스트에서 platform: vsphere 와 함께 배포된 클러스터에서만 지원됩니다.

타사 CSI 드라이버를 제거하려면 타사 vSphere CSI 드라이버 제거를 참조하십시오.

5.19.6. 타사 vSphere CSI Driver Operator 제거

OpenShift Container Platform 4.10 이상에는 Red Hat에서 지원하는 vSphere CSI(Container Storage Interface) Operator 드라이버의 기본 제공 버전이 포함되어 있습니다. 커뮤니티 또는 다른 공급업체에서 제공하는 vSphere CSI 드라이버를 설치한 경우 4.13 이상과 같은 OpenShift Container Platform의 다음 주요 버전으로 업데이트할 수 있습니다.

OpenShift Container Platform 4.12 이상에서는 클러스터가 완전 지원되며 4.12.z와 같은 4.12의 z-stream 릴리스는 차단되지 않지만 OpenShift Container Platform의 다음 주요 버전으로 업데이트되기 전에 타사 vSphere CSI 드라이버를 제거하여 이 상태를 수정해야 합니다. 타사 vSphere CSI 드라이버를 제거해도 연결된 PV(영구 볼륨) 오브젝트를 삭제할 필요가 없으며 데이터 손실이 발생하지 않습니다.

참고

이러한 지침이 완료되지 않을 수 있으므로 공급 업체 또는 커뮤니티 공급자 설치 제거 가이드를 참조하여 드라이버 및 구성 요소를 제거합니다.

타사 vSphere CSI 드라이버를 제거하려면 다음을 수행합니다.

  1. 타사 vSphere CSI 드라이버(VMware vSphere Container Storage 플러그인) 배포 및 데몬 세트 오브젝트를 삭제합니다.
  2. 이전에 타사 vSphere CSI 드라이버를 사용하여 설치한 configmap 및 시크릿 오브젝트를 삭제합니다.
  3. 타사 vSphere CSI 드라이버 CSIDriver 오브젝트를 삭제합니다.

    ~ $ oc delete CSIDriver csi.vsphere.vmware.com
    csidriver.storage.k8s.io "csi.vsphere.vmware.com" deleted

OpenShift Container Platform 클러스터에서 타사 vSphere CSI 드라이버를 제거한 후 Red Hat vSphere CSI Driver Operator를 자동으로 다시 시작하며 OpenShift Container Platform 4.11 이상으로의 업그레이드를 차단할 수 있는 모든 조건이 자동으로 제거됩니다. 기존 vSphere CSI PV 오브젝트가 있는 경우 이제 Red Hat의 vSphere CSI Driver Operator에서 라이프사이클을 관리합니다.

5.19.7. vSphere CSI 토폴로지 구성

OpenShift Container Platform은 vSphere용 OpenShift Container Platform을 다른 영역 및 리전에 배포할 수 있는 기능을 제공하므로 여러 컴퓨팅 클러스터에 배포할 수 있으므로 단일 장애 지점을 방지할 수 있습니다.

참고

vSphere의 OpenShift Container Platform은 여러 데이터 센터를 지원하지 않습니다.

이는 vCenter에서 영역 및 지역 카테고리를 정의한 다음 이러한 카테고리를 이러한 영역 및 지역 카테고리에 대한 태그를 생성하여 컴퓨팅 클러스터와 같은 다른 장애 도메인에 할당하여 수행됩니다. 적절한 카테고리를 생성하고 vCenter 오브젝트에 할당된 태그를 생성한 후 이러한 장애 도메인에서 Pod를 예약해야 하는 VM(가상 머신)을 생성하는 추가 머신 세트를 생성할 수 있습니다.

절차

  1. VMware vCenter vSphere 클라이언트 GUI에서 적절한 영역 및 리전 카테고리 및 태그를 정의합니다.

    vSphere를 사용하면 임의의 이름으로 카테고리를 생성할 수 있지만 OpenShift Container Platform은 토폴로지를 정의하기 위해 openshift-regionopenshift-zone 이름을 사용하는 것이 좋습니다.

    다음 예제에서는 하나의 리전과 두 개의 영역이 있는 두 개의 실패 도메인을 정의합니다.

    표 5.4. 하나의 리전과 두 개의 영역이 있는 vSphere 토폴로지

    컴퓨팅 클러스터실패 도메인설명

    컴퓨팅 클러스터: ocp1, Datacenter: Atlanta

    openshift-region: us-east-1(tag), openshift-zone: us-east-1a(tag)

    이는 us-east-1 리전에서 us-east-1의 실패 도메인을 정의합니다.

    컴퓨터 클러스터: ocp2, Datacenter: Atlanta

    openshift-region: us-east-1(tag), openshift-zone: us-east-1b(tag)

    이는 us-east-1b라는 동일한 리전 내에 다른 실패 도메인을 정의합니다.

    vSphere 카테고리 및 태그에 대한 자세한 내용은 VMware vSphere 설명서를 참조하십시오.

  2. CSI(Container Storage Interface) 드라이버가 이 토폴로지를 감지할 수 있도록 하려면 clusterCSIDriver 오브젝트 YAML 파일 driverConfig 섹션을 편집합니다.

    • 이전에 생성한 openshift-zoneopenshift-region 카테고리를 지정합니다.
    • driverTypevSphere 로 설정합니다.

      ~ $ oc edit clustercsidriver csi.vsphere.vmware.com -o yaml

      출력 예

      apiVersion: operator.openshift.io/v1
      kind: ClusterCSIDriver
      metadata:
       name: csi.vsphere.vmware.com
      spec:
       logLevel: Normal
       managementState: Managed
       observedConfig: null
       operatorLogLevel: Normal
       unsupportedConfigOverrides: null
       driverConfig:
        driverType: vSphere 1
          vSphere:
            topologyCategories: 2
            - openshift-zone
            - openshift-region

      1
      driverTypevSphere 로 설정되어 있는지 확인합니다.
      2
      vCenter에서 이전에 생성된 openshift-zoneopenshift-region 카테고리입니다.
  3. 다음 명령을 실행하여 CSINode 오브젝트에 토폴로지 키가 있는지 확인합니다.

    ~ $ oc get csinode

    출력 예

    NAME                        DRIVERS     AGE
    co8-4s88d-infra-2m5vd       1           27m
    co8-4s88d-master-0          1           70m
    co8-4s88d-master-1          1           70m
    co8-4s88d-master-2          1           70m
    co8-4s88d-worker-j2hmg      1           47m
    co8-4s88d-worker-mbb46      1           47m
    co8-4s88d-worker-zlk7d      1           47m

    ~ $ oc get csinode co8-4s88d-worker-j2hmg -o yaml

    출력 예

    ...
    spec:
        drivers:
        - allocatable:
            count: 59
        name: csi-vsphere.vmware.com
        nodeID: co8-4s88d-worker-j2hmg
        topologyKeys: 1
        - topology.csi.vmware.com/openshift-zone
        - topology.csi.vmware.com/openshift-region

    1
    vSphere openshift-zoneopenshift-region catagories의 토폴로지 키입니다.
    참고

    CSINode 오브젝트는 업데이트된 토폴로지 정보를 수신하는 데 시간이 걸릴 수 있습니다. 드라이버를 업데이트한 후 CSINode 오브젝트에 토폴로지 키가 있어야 합니다.

  4. 장애 도메인에서 데이터 저장소에 할당할 태그를 생성합니다.

    OpenShift Container Platform이 두 개 이상의 장애 도메인에 걸쳐 있는 경우 데이터 저장소는 이러한 장애 도메인에서 공유되지 않을 수 있습니다. 이 경우 PV(영구 볼륨)의 토폴로지 인식 프로비저닝이 유용합니다.

    1. vCenter에서 데이터 저장소를 태그하는 카테고리를 생성합니다. 예를 들면 openshift-zonal-datastore-cat 입니다. 카테고리는 OpenShift Container Platform 클러스터에 참여하는 데이터 저장소에 태그 지정에 사용되는 경우 다른 카테고리 이름을 사용할 수 있습니다. 또한 StoragePod,Datastore, Folder 가 생성된 카테고리에 대해 연결 가능한 엔티티로 선택되어 있는지 확인합니다.
    2. vCenter에서 이전에 생성된 카테고리를 사용하는 태그를 생성합니다. 이 예에서는 태그 이름 openshift-zonal-datastore 를 사용합니다.
    3. 이전에 생성된 태그(이 예에서는 openshift-zonal-datastore)를 동적 프로비저닝에 고려되는 장애 도메인의 각 데이터 저장소에 할당합니다.

      참고

      카테고리 및 태그에 원하는 이름을 사용할 수 있습니다. 이 예제에서 사용되는 이름은 권장 사항으로 제공됩니다. 정의한 태그 및 카테고리가 OpenShift Container Platform 클러스터의 모든 호스트와 공유되는 데이터 저장소만 고유하게 식별해야 합니다.

  5. 각 실패 도메인에서 태그 기반 데이터 저장소를 대상으로 하는 스토리지 정책을 생성합니다.

    1. vCenter의 메인 메뉴에서 정책 및 프로필을 클릭합니다.
    2. Policies and Profiles 페이지의 탐색 창에서 VM Storage Policies 를 클릭합니다.
    3. CREATE 를 클릭합니다.
    4. 스토리지 정책의 이름을 입력합니다.
    5. 규칙의 경우 Tag Placement 규칙을 선택하고 원하는 데이터 저장소를 대상으로 하는 태그와 카테고리(예: openshift-zonal-datastore 태그)를 선택합니다.

      데이터 저장소는 스토리지 호환성 테이블에 나열됩니다.

  6. 새로운 zoned 스토리지 정책을 사용하는 새 스토리지 클래스를 생성합니다.

    1. 스토리지 > StorageClasses 를 클릭합니다.
    2. StorageClasses 페이지에서 Create StorageClass 를 클릭합니다.
    3. Name 에 새 스토리지 클래스의 이름을 입력합니다.
    4. Provisioner 에서 csi.vsphere.vmware.com 을 선택합니다.
    5. 추가 매개변수 에서 StoragePolicyName 매개변수의 경우 Value 를 이전에 생성한 새 영역 스토리지 정책의 이름으로 설정합니다.
    6. 생성을 클릭합니다.

      출력 예

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: zoned-sc 1
      provisioner: csi.vsphere.vmware.com
      parameters:
        StoragePolicyName: zoned-storage-policy 2
      reclaimPolicy: Delete
      allowVolumeExpansion: true
      volumeBindingMode: WaitForFirstConsumer

      1
      새 토폴로지는 스토리지 클래스 이름을 인식합니다.
      2
      zoned 스토리지 정책을 지정합니다.
      참고

      이전 YAML 파일을 편집하고 oc create -f $FILE 명령을 실행하여 스토리지 클래스를 생성할 수도 있습니다.

결과

토폴로지 인식 스토리지 클래스에서 PVC(영구 볼륨 클레임) 및 PV를 생성하여 Pod 예약 방법에 따라 각 영역에서 데이터 저장소를 사용해야 합니다.

~ $ oc get pv <pv-name> -o yaml

출력 예

...
nodeAffinity:
  required:
    nodeSelectorTerms:
    - matchExpressions:
      - key: topology.csi.vmware.com/openshift-zone 1
        operator: In
        values:
        - <openshift-zone>
      -key: topology.csi.vmware.com/openshift-region 2
        operator: In
        values:
        - <openshift-region>
...
peristentVolumeclaimPolicy: Delete
storageClassName: <zoned-storage-class-name> 3
volumeMode: Filesystem
...

1 2
PV에 영역이 지정된 키가 있습니다.
3
PV는 영역이 지정된 스토리지 클래스를 사용합니다.

5.19.8. 추가 리소스