StorageClass 設定

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

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

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

Apigee 建議您在兩個或更多區域中部署混合式,以便停用及重新安裝一個區域,同時保留次要區域中的資料。或者,您也可以在停用並設定必要的 StorageClass 定義後,使用非 CSI 混合式備份來還原單一區域安裝作業中的資料。

變更預設儲存空間級別

下列步驟說明如何建立 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: