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: