Cassandra 資料庫會使用 動態建立的永久磁碟區來儲存資料。為確保資料庫正常運作,Apigee 要求您設定由固態硬碟 (SSD) 支援的 StorageClass 定義。
如果您目前沒有為 Cassandra 設定 SSD,本主題會說明如何建立使用 SSD 的新 StorageClass,並將其設為預設類別。Cassandra 啟動時,會使用這個預設 StorageClass。
本主題中列出的 StorageClass 設定步驟僅適用於新安裝的 CASSANDRA。如果您已安裝 Cassandra 類別,則必須停用現有叢集,才能設定 StorageClass 定義。安裝後,系統不支援變更現有 Cassandra 叢集的 StorageClass 定義。
Apigee 建議您在兩個或更多區域中部署混合式,以便停用及重新安裝一個區域,同時保留次要區域中的資料。或者,您也可以在停用並設定必要的 StorageClass 定義後,使用非 CSI 混合式備份來還原單一區域安裝作業中的資料。
變更預設儲存空間級別
下列步驟說明如何建立 StorageClass 並將其設為預設類別。詳情請參閱 Kubernetes 說明文件中的「 變更預設的儲存空間級別」一節。
- 取得目前預設 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 - 說明名為
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>
- 建立名為
storageclass.yaml
的新檔案。 - 在檔案中新增下列程式碼:請注意,新類別的名稱是
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
- 將新的 StorageClass 套用至 Kubernetes 叢集:
kubectl apply -f storageclass.yaml
- 執行下列兩個指令,變更預設 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"}}}'
- 執行以下指令,確認新的預設 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
- 說明這兩個 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: