StorageClass 設定

Cassandra 資料庫會使用 動態建立的永久磁碟區儲存資料。為確保資料庫正常運作,Apigee 要求您設定由固態硬碟 (SSD) 支援的 StorageClass 定義。

如果您目前未為 Cassandra 設定 SSD,本主題將說明如何建立使用 SSD 的新 StorageClass,並將其設為預設類別。Cassandra 啟動時,會使用這個預設的 StorageClass。

本主題中 StorageClass 設定的步驟僅適用於的 Cassandra 安裝作業。如果已安裝 Cassandra 類別,您必須停用現有叢集,才能設定 StorageClass 定義。安裝後,系統不支援變更現有 Cassandra 叢集的 StorageClass 定義。

Apigee 建議在兩個或多個區域部署混合式環境,以便停用及重新安裝一個區域,同時保留次要區域中的資料。或者,您也可以使用非 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: