Cassandra 資料庫會使用 動態建立的永久磁碟區儲存資料。為確保資料庫正常運作,Apigee 要求您設定由固態硬碟 (SSD) 支援的 StorageClass 定義。
如果您目前未為 Cassandra 設定 SSD,本主題將說明如何建立使用 SSD 的新 StorageClass,並將其設為預設類別。Cassandra 啟動時,會使用這個預設的 StorageClass。
本主題中 StorageClass 設定的步驟僅適用於 新的 Cassandra 安裝作業。如果已安裝 Cassandra 類別,您必須停用現有叢集,才能設定 StorageClass 定義。安裝後,系統不支援變更現有 Cassandra 叢集的 StorageClass 定義。
Apigee 建議在兩個或多個區域中部署混合式環境,以便在停用並重新安裝一個區域時,保留次要區域中的資料。或者,您也可以使用非 CSI 混合備份,在停用並設定必要的 StorageClass 定義後,還原單一區域安裝中的資料。
變更預設儲存空間級別
下列步驟說明如何建立 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: