StorageClass 구성

Cassandra 데이터베이스는 동적으로 생성된 영구 볼륨을 사용하여 데이터를 저장합니다. 올바른 데이터베이스 기능을 위해 Apigee에서는 사용자가 솔리드 스테이트 드라이브(SSD)로 지원되는 StorageClass 정의를 구성해야 합니다.

현재 Cassandra에 SSD가 구성되지 않은 경우 이 주제에서는 SSD를 사용하는 새 StorageClass를 만들고 이를 기본 클래스로 지정하는 방법을 설명합니다. Cassandra가 시작되면 이 기본 StorageClass를 사용합니다.

StorageClass 구성에 대해 이 주제에서 설명된 단계는 Cassandra 설치에만 적용될 수 있습니다. Cassandra 클래스가 이미 설치되어 있는 경우 StorageClass 정의를 구성하려면 기존 클러스터를 사용 중단해야 합니다. 설치 후 기존 Cassandra 클러스터의 StorageClass 정의 변경은 지원되지 않습니다.

Apigee에서는 데이터를 보조 리전에 보존하면서 리전 하나를 사용 중단하고 다시 설치하기 위해 리전 2개 이상에 하이브리드를 배포하는 것을 권장합니다. 또는 필요한 StorageClass 정의를 사용 중단 및 구성한 후 CSI가 아닌 하이브리드 백업을 사용하여 단일 리전 설치에서 데이터를 복원할 수 있습니다.

기본 StorageClass 변경

다음 단계에서는 StorageClass를 만들고 이것을 기본 클래스로 설정하는 방법을 설명합니다. 자세한 내용은 Kubernetes 문서의 기본 스토리지 클래스 변경을 참조하세요.

  1. 현재 기본 StorageClass의 이름을 가져옵니다.
    kubectl get sc

    예:

    kubectl get sc
        NAME                    PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        premium-rwo             pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard                kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo (default)  pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  2. standard-rwo라는 StorageClass를 설명합니다. 유형은 pd-balanced입니다.
    kubectl describe sc standard-rwo

    예:

    kubectl describe sc standard-rwo
    Name:                  standard-rwo
    IsDefaultClass:        Yes
    Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
    Provisioner:           pd.csi.storage.gke.io
    Parameters:            type=pd-balanced
    AllowVolumeExpansion:  True
    MountOptions:          <none>
    ReclaimPolicy:         Delete
    VolumeBindingMode:     WaitForFirstConsumer
    Events:                <none>
  3. storageclass.yaml라는 새 파일을 만듭니다.
  4. 이 코드를 파일에 추가합니다. 새 클래스 이름은 apigee-sc이며, 원하는 이름을 사용할 수 있습니다. 또한 스토리지 유형은 pd-ssd입니다.
    ---
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: "apigee-sc"
    provisioner: pd.csi.storage.gke.io
    parameters:
      type: pd-ssd
      replication-type: none
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    
  5. 새 StorageClass를 Kubernetes 클러스터에 적용합니다.
    kubectl apply -f storageclass.yaml
  6. 다음 두 명령어를 실행하여 기본 StorageClass를 변경합니다.
    kubectl patch storageclass standard-rwo \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    kubectl patch storageclass apigee-sc \
      -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  7. 다음 명령어를 실행하여 새 기본 StorageClass를 apigee-sc라고 하는지 확인합니다.
    kubectl get sc

    예:

    kubectl get sc
      NAME                  PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
        apigee-sc (default)   pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   14h
        premium-rwo           pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
        standard              kubernetes.io/gce-pd    Delete          Immediate              true                   15h
        standard-rwo          pd.csi.storage.gke.io   Delete          WaitForFirstConsumer   true                   15h
      
  8. 두 StorageClass를 모두 설명하여 IsDefaultClass의 값을 확인합니다.
    kubectl describe sc apigee-sc
        Name:            apigee-sc
        IsDefaultClass:  Yes
        Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"apigee-sc"},"parameters":{"replication-type":"none","type":"pd-ssd"},"provisioner":"pd.csi.storage.gke.io","volumeBindingMode":"WaitForFirstConsumer"}
        ,storageclass.kubernetes.io/is-default-class=true
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            replication-type=none,type=pd-ssd
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events:                
        
    kubectl describe sc standard-rwo
        Name:                  standard-rwo
        IsDefaultClass:        No
        Annotations:           components.gke.io/layer=addon,storageclass.kubernetes.io/is-default-class=false
        Provisioner:           pd.csi.storage.gke.io
        Parameters:            type=pd-balanced
        AllowVolumeExpansion:  True
        MountOptions:          
        ReclaimPolicy:         Delete
        VolumeBindingMode:     WaitForFirstConsumer
        Events: