6.14. GCP PD CSI Driver Operator


6.14.1. 개요

OpenShift Container Platform은 GCP(Google Cloud Platform) PD(영구 디스크) 스토리지용 CSI(Container Storage Interface) 드라이버를 사용하여 PV(영구 볼륨)를 프로비저닝할 수 있습니다.

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

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

  • GCP PD CSI Driver Operator: 기본적으로 Operator는 PVC를 생성하는 데 사용할 수 있는 스토리지 클래스를 제공합니다. 필요한 경우 이 기본 스토리지 클래스를 비활성화할 수 있습니다( 기본 스토리지 클래스 관리참조). GCE 영구 디스크를 사용하는 영구 스토리지에 설명된 대로 GCP PD 스토리지 클래스를 생성하는 옵션도 있습니다.
  • GCP PD 드라이버: 이 드라이버를 사용하면 GCP PD PV를 생성 및 마운트할 수 있습니다.

    GCP PD CSI 드라이버는 베어 메탈 및 N4 머신 시리즈의 C3 인스턴스 유형을 지원합니다. C3 인스턴스 유형 및 N4 시스템 시리즈는 hyperdisk-balanced 디스크를 지원합니다.

OpenShift Container Platform은 동등한 CSI 드라이버로 GCE 영구 디스크 in-tree 볼륨 플러그인에 대한 자동 마이그레이션을 제공합니다. 자세한 내용은 CSI 자동 마이그레이션 을 참조하십시오.

6.14.2. 베어 메탈 및 N4 머신 시리즈의 C3 인스턴스 유형

6.14.2.1. C3 및 N4 인스턴스 유형 제한 사항

베어 메탈 및 N4 머신 시리즈의 C3 인스턴스 유형에 대한 GCP PD CSI 드라이버 지원에는 다음과 같은 제한 사항이 있습니다.

  • hyperdisk-balanced 디스크를 생성할 때 볼륨 크기를 4Gi 이상으로 설정해야 합니다. OpenShift Container Platform은 최소 크기까지 반올림하지 않으므로 올바른 크기를 직접 지정해야 합니다.
  • 스토리지 풀을 사용할 때는 볼륨 복제가 지원되지 않습니다.
  • 복제 또는 크기 조정을 위해 원래 볼륨 크기는 6Gi 이상이어야 합니다.
  • 기본 스토리지 클래스는 standard-csi입니다.

    중요

    스토리지 클래스를 수동으로 생성해야 합니다.

    스토리지 클래스 생성에 대한 자세한 내용은 hyperdisk-balanced 디스크 설정 섹션의 2단계를 참조하십시오.

  • 다양한 스토리지 유형을 사용하는 혼합 VM(가상 머신)이 있는 클러스터는 지원되지 않습니다. 이는 대부분의 기존 VM에서 하이퍼 디스크 분산 디스크를 사용할 수 없기 때문입니다. 마찬가지로 일반 영구 디스크는 N4/C3 VM에서 사용할 수 없습니다.
  • c3-standard-2, c3-standard-4, n4-standard-2, n4-standard-4 노드가 있는 GCP 클러스터는 연결할 수 있는 최대 디스크 번호(JIRA 링크)를 잘못 초과할 수 있습니다.
  • 추가 제한 사항.

6.14.2.2. hyperdisk-balanced 디스크용 스토리지 풀 개요

대규모 스토리지를 위해 Compute Engine과 함께 Hyperdisk 스토리지 풀을 사용할 수 있습니다. 하이퍼 디스크 스토리지 풀은 구매한 용량, 처리량 및 IOPS 컬렉션으로, 필요에 따라 애플리케이션을 프로비저닝할 수 있습니다. 하이퍼 디스크 스토리지 풀을 사용하여 풀에서 디스크를 생성 및 관리하고 여러 워크로드의 디스크를 사용할 수 있습니다. 디스크를 집계하여 관리하면 예상 용량 및 성능 증가를 달성하면서 비용을 절감할 수 있습니다. 하이퍼 디스크 스토리지 풀에서 필요한 스토리지만 사용하면 예측 용량의 복잡성을 줄이고 수백 개의 디스크를 관리에서 단일 스토리지 풀 관리로 이동하여 관리를 줄일 수 있습니다.

스토리지 풀을 설정하려면 hyperdisk-balanced 디스크 설정을 참조하십시오.

6.14.2.3. hyperdisk-balanced 디스크 설정

사전 요구 사항

  • 관리 권한이 있는 클러스터에 액세스

프로세스

hyperdisk-balanced 디스크를 설정하려면 다음 단계를 완료합니다.

  1. 하이퍼 디스크 분산 디스크를 사용하여 프로비저닝된 연결된 디스크를 사용하여 GCP 클러스터를 생성합니다.
  2. 설치 중에 hyperdisk-balanced 디스크를 지정하는 스토리지 클래스를 생성합니다.

    1. 사용자 지정 섹션을 사용하여 GCP에 클러스터 설치 섹션의 절차를 따르십시오.

      install-config.yaml 파일의 경우 다음 예제 파일을 사용합니다.

      install-config YAML 파일의 예

      apiVersion: v1
      metadata:
        name: ci-op-9976b7t2-8aa6b
      
      sshKey: |
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      baseDomain: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      platform:
        gcp:
          projectID: XXXXXXXXXXXXXXXXXXXXXX
          region: us-central1
      controlPlane:
        architecture: amd64
        name: master
        platform:
          gcp:
            type: n4-standard-4 
      1
      
            osDisk:
              diskType: hyperdisk-balanced 
      2
      
              diskSizeGB: 200
        replicas: 3
      compute:
      - architecture: amd64
        name: worker
        replicas: 3
        platform:
          gcp:
            type: n4-standard-4 
      3
      
            osDisk:
              diskType: hyperdisk-balanced 
      4
      Copy to Clipboard Toggle word wrap

      1 3
      노드 유형을 n4-standard-4로 지정합니다.
      2 4
      노드의 root 디스크가 hyperdisk-balanced 디스크 유형으로 지원됩니다. 클러스터의 모든 노드는 hyperdisks-balanced 또는 pd-*인 동일한 디스크 유형을 사용해야 합니다.
      참고

      클러스터의 모든 노드는 hyperdisk-balanced 볼륨을 지원해야 합니다. 혼합 노드가 있는 클러스터는 지원되지 않습니다(예: hyperdisk-balanced 디스크를 사용하는 N2 및 N3).

    2. Cloud Credential Operator 유틸리티 매니페스트 섹션을 통합한 3단계 후 다음 매니페스트를 설치 프로그램에서 생성한 매니페스트 디렉터리에 복사합니다.

      • cluster_csi_driver.yaml - 기본 스토리지 클래스 생성 옵트아웃을 지정합니다.
      • StorageClass.yaml - 하이퍼 디스크별 스토리지 클래스를 생성합니다.

        클러스터 CSI 드라이버 YAML 파일의 예

        apiVersion: operator.openshift.io/v1
        kind: "ClusterCSIDriver"
        metadata:
          name: "pd.csi.storage.gke.io"
        spec:
          logLevel: Normal
          managementState: Managed
          operatorLogLevel: Normal
          storageClassState: Unmanaged 
        1
        Copy to Clipboard Toggle word wrap

        1
        기본 OpenShift Container Platform 스토리지 클래스 생성 비활성화를 지정합니다.

        스토리지 클래스 YAML 파일의 예

        apiVersion: storage.k8s.io/v1
        kind: StorageClass
        metadata:
          name: hyperdisk-sc 
        1
        
          annotations:
            storageclass.kubernetes.io/is-default-class: "true"
        provisioner: pd.csi.storage.gke.io 
        2
        
        volumeBindingMode: WaitForFirstConsumer
        allowVolumeExpansion: true
        reclaimPolicy: Delete
        parameters:
          type: hyperdisk-balanced 
        3
        
          replication-type: none
          provisioned-throughput-on-create: "140Mi" 
        4
        
          provisioned-iops-on-create: "3000" 
        5
        
          storage-pools: projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c 
        6
        
        allowedTopologies: 
        7
        
        - matchLabelExpressions:
          - key: topology.kubernetes.io/zone
            values:
            - us-east4-c
        ...
        Copy to Clipboard Toggle word wrap

        1
        스토리지 클래스의 이름을 지정합니다. 이 예에서는 hyperdisk-sc 입니다.
        2
        PD.csi.storage.gke.io 는 GCP CSI 프로비저너를 지정합니다.
        3
        hyperdisk-balanced 디스크를 사용하도록 지정합니다.
        4
        "Mi" 한정자를 사용하여 throughput 값을 MiBps로 지정합니다. 예를 들어 필요한 처리량이 250MiBps인 경우 "250Mi"를 지정합니다. 값을 지정하지 않으면 용량은 디스크 유형 기본값을 기반으로 합니다.
        5
        한정자 없이 IOPS 값을 지정합니다. 예를 들어 Cryostat IOPS가 필요한 경우 "7000"을 지정합니다. 값을 지정하지 않으면 용량은 디스크 유형 기본값을 기반으로 합니다.
        6
        스토리지 풀을 사용하는 경우 project/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME 형식으로 사용할 특정 스토리지 풀 목록을 지정합니다.
        7
        스토리지 풀을 사용하는 경우 프로비저닝된 볼륨의 토폴로지를 스토리지 풀이 존재하는 위치로 제한하도록 allowedTopologies 를 설정합니다. 이 예에서 us-east4-c.
  3. 다음 예제 YAML 파일을 사용하여 하이퍼 디스크별 스토리지 클래스를 사용하는 PVC(영구 볼륨 클레임)를 생성합니다.

    PVC YAML 파일의 예

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: hyperdisk-sc 
    1
    
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 2048Gi 
    2
    Copy to Clipboard Toggle word wrap

    1
    PVC는 스토리지 풀별 스토리지 클래스를 참조합니다. 예에서는 hyperdisk-sc 입니다.
    2
    hyperdisk-balanced 볼륨의 대상 스토리지 용량입니다. 예에서는 2048Gi 입니다.
  4. 방금 생성한 PVC를 사용하는 배포를 생성합니다. 배포를 사용하면 Pod를 재시작하고 일정을 변경한 후에도 애플리케이션이 영구 스토리지에 액세스할 수 있도록 합니다.

    1. 배포를 생성하기 전에 지정된 머신 시리즈가 있는 노드 풀이 실행 중인지 확인합니다. 그러지 않으면 Pod를 예약하지 못합니다.
    2. 다음 예제 YAML 파일을 사용하여 배포를 생성합니다.

      배포 YAML 파일의 예

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: postgres
      spec:
        selector:
          matchLabels:
            app: postgres
        template:
          metadata:
            labels:
              app: postgres
          spec:
            nodeSelector:
              cloud.google.com/machine-family: n4 
      1
      
            containers:
            - name: postgres
              image: postgres:14-alpine
              args: [ "sleep", "3600" ]
              volumeMounts:
              - name: sdk-volume
                mountPath: /usr/share/data/
            volumes:
            - name: sdk-volume
              persistentVolumeClaim:
                claimName: my-pvc 
      2
      Copy to Clipboard Toggle word wrap

      1
      머신 제품군을 지정합니다. 이 예에서 n4 입니다.
      2
      이전 단계에서 생성한 PVC의 이름을 지정합니다. 이 예에서는 my-pfc 입니다.
    3. 다음 명령을 실행하여 배포가 성공적으로 생성되었는지 확인합니다.

      $ oc get deployment
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME       READY   UP-TO-DATE   AVAILABLE   AGE
      postgres   0/1     1            0           42s
      Copy to Clipboard Toggle word wrap

      하이퍼 디스크 인스턴스가 프로비저닝을 완료하고 READY 상태를 표시하는 데 몇 분이 걸릴 수 있습니다.

    4. 다음 명령을 실행하여 PVC my-pvc 가 PV(영구 볼륨)에 성공적으로 바인딩되었는지 확인합니다.

      $ oc get pvc my-pvc
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       VOLUMEATTRIBUTESCLASS  AGE
      my-pvc        Bound    pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6   2Ti        RWO            hyperdisk-sc       <unset>                2m24s
      Copy to Clipboard Toggle word wrap

    5. hyperdisk-balanced 디스크의 예상 구성을 확인합니다.

      $ gcloud compute disks list
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                                        LOCATION        LOCATION_SCOPE  SIZE_GB  TYPE                STATUS
      instance-20240914-173145-boot               us-central1-a   zone            150      pd-standard         READY
      instance-20240914-173145-data-workspace     us-central1-a   zone            100      pd-balanced         READY
      c4a-rhel-vm                                 us-central1-a   zone            50       hyperdisk-balanced  READY 
      1
      Copy to Clipboard Toggle word wrap

      1
      Hyperdisk-balanced 디스크.
    6. 스토리지 풀을 사용하는 경우 다음 명령을 실행하여 스토리지 클래스 및 PVC에 지정된 대로 볼륨이 프로비저닝되었는지 확인합니다.

      $ gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                                      STATUS  PROVISIONED_IOPS  PROVISIONED_THROUGHPUT  SIZE_GB
      pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6  READY   3000              140                     2048
      Copy to Clipboard Toggle word wrap

6.14.3. CSI 정보

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

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

6.14.4. GCP PD CSI 드라이버 스토리지 클래스 매개변수

GCP(Google Cloud Platform) PD(영구 디스크) CSI(Container Storage Interface) 드라이버는 CSI 외부 프로비저너 사이드카를 컨트롤러로 사용합니다. 이 컨테이너는 CSI 드라이버와 함께 배포된 별도의 Helper 컨테이너입니다. 사이드카는 CreateVolume 작업을 트리거하여 PV(영구 볼륨)를 관리합니다.

GCP PD CSI 드라이버는 csi.storage.k8s.io/fstype 매개변수 키를 사용하여 동적 프로비저닝을 지원합니다. 다음 표에는 OpenShift Container Platform에서 지원하는 모든 GCP PD CSI 스토리지 클래스 매개변수를 설명합니다.

Expand
표 6.5. CreateVolume 매개 변수
매개변수기본설명

type

PD-ssd,pd-standard 또는 pd-balanced

pd-standard

표준 PV 또는 솔리드 스테이트 드라이브 PV 중 하나를 선택할 수 있습니다.

드라이버는 값을 확인하지 않으므로 가능한 모든 값이 허용됩니다.

replication-type

none 또는 regional-pd

none

존 또는 지역 PV 중 하나를 선택할 수 있습니다.

disk-encryption-kms-key

새 디스크를 암호화하는 데 사용할 키가 정규화된 리소스 식별자입니다.

빈 문자열

CMEK(고객 관리 암호화 키)를 사용하여 새 디스크를 암호화합니다.

6.14.5. 사용자 정의 암호화 영구 볼륨 생성

PersistentVolumeClaim 오브젝트를 생성할 때 OpenShift Container Platform은 새 PV(영구 볼륨)를 프로비저닝하고 PersistentVolume 오브젝트를 생성합니다. 새로 생성된 PV를 암호화하여 클러스터에서 PV를 보호하기 위해 GCP(Google Cloud Platform)에 사용자 지정 암호화 키를 추가할 수 있습니다.

암호화를 위해 새로 연결된 PV는 신규 또는 기존 Google Cloud KMS(키 관리 서비스) 키를 사용하여 클러스터에서 CMEK(고객 관리 암호화 키)를 사용합니다.

사전 요구 사항

  • 실행 중인 OpenShift Container Platform 클러스터에 로그인되어 있습니다.
  • Cloud KMS 키 링 및 키 버전이 생성되어 있습니다.

CMEK 및 Cloud KMS 리소스에 대한 자세한 내용은 CMEK(고객 관리 암호화 키) 사용을 참조하십시오.

절차

사용자 정의 PV를 생성하려면 다음 단계를 완료합니다.

  1. Cloud KMS 키를 사용하여 스토리지 클래스를 생성합니다. 다음 예시에서는 암호화된 볼륨의 동적 프로비저닝을 활성화합니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: csi-gce-pd-cmek
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: "WaitForFirstConsumer"
    allowVolumeExpansion: true
    parameters:
      type: pd-standard
      disk-encryption-kms-key: projects/<key-project-id>/locations/<location>/keyRings/<key-ring>/cryptoKeys/<key> 
    1
    Copy to Clipboard Toggle word wrap
    1
    이 필드는 새 디스크를 암호화하는 데 사용할 키의 리소스 식별자여야 합니다. 값은 대소문자를 구분합니다. 키 ID 값을 제공하는 방법에 대한 자세한 내용은 리소스의 ID 검색Cloud KMS 리소스 ID 가져오기를 참조하십시오.
    참고

    disk-encryption-✓s-key 매개변수를 기존 스토리지 클래스에 추가할 수 없습니다. 그러나 스토리지 클래스를 삭제하고 동일한 이름과 다른 매개변수 세트로 다시 생성할 수 있습니다. 이렇게 하는 경우 기존 클래스의 프로비저너가 pd.csi.storage.gke.io여야 합니다.

  2. oc 명령을 사용하여 OpenShift Container Platform 클러스터에 스토리지 클래스를 배포합니다.

    $ oc describe storageclass csi-gce-pd-cmek
    Copy to Clipboard Toggle word wrap

    출력 예

    Name:                  csi-gce-pd-cmek
    IsDefaultClass:        No
    Annotations:           None
    Provisioner:           pd.csi.storage.gke.io
    Parameters:            disk-encryption-kms-key=projects/key-project-id/locations/location/keyRings/ring-name/cryptoKeys/key-name,type=pd-standard
    AllowVolumeExpansion:  true
    MountOptions:          none
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                none
    Copy to Clipboard Toggle word wrap

  3. 이전 단계에서 생성한 스토리지 클래스 오브젝트의 이름과 일치하는 pvc.yaml 파일을 생성합니다.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: csi-gce-pd-cmek
      resources:
        requests:
          storage: 6Gi
    Copy to Clipboard Toggle word wrap
    참고

    새 스토리지 클래스를 기본값으로 표시한 경우 storageClassName 필드를 생략할 수 있습니다.

  4. 클러스터에 PVC를 적용합니다.

    $ oc apply -f pvc.yaml
    Copy to Clipboard Toggle word wrap
  5. PVC 상태를 가져온 후 새로 프로비저닝된 PV에 바인딩되었는지 확인합니다.

    $ oc get pvc
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME      STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS     AGE
    podpvc    Bound     pvc-e36abf50-84f3-11e8-8538-42010a800002   10Gi       RWO            csi-gce-pd-cmek  9s
    Copy to Clipboard Toggle word wrap

    참고

    스토리지 클래스에 WaitForFirstConsumer로 설정된 volumeBindingMode 필드가 있는 경우 이를 확인하기 전에 PVC를 사용하도록 Pod를 생성해야 합니다.

이제 CMEK가 지원하는 PV를 OpenShift Container Platform 클러스터와 함께 사용할 준비가 되었습니다.

6.14.6. 사용자 관리 암호화

사용자 관리 암호화 기능을 사용하면 OpenShift Container Platform 노드 루트 볼륨을 암호화하는 설치 중에 키를 제공하고 모든 관리 스토리지 클래스가 이러한 키를 사용하여 프로비저닝된 스토리지 볼륨을 암호화할 수 있습니다. install-config YAML 파일의 platform.<cloud_type>.defaultMachinePlatform 필드에 사용자 지정 키를 지정해야 합니다.

이 기능은 다음 스토리지 유형을 지원합니다.

  • AWS(Amazon Web Services) EBS(Elastic Block Storage)
  • Microsoft Azure Disk 스토리지
  • GCP(Google Cloud Platform) PD(영구 디스크) 스토리지
  • IBM Virtual Private Cloud (VPC) 블록 스토리지

GCP PD의 사용자 관리 암호화로 설치하는 방법에 대한 자세한 내용은 설치 구성 매개변수를 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat