這個程序可讓您擴充 Apigee 混合 Cassandra 資料庫使用的持久性磁碟區,以便因應更大的儲存空間需求,而不需要為了提供更多儲存空間而建立新節點。
總覽
Apigee 混合 cassandra
元件會使用永久磁碟區來儲存資料。永久性磁碟區的大小會在安裝和初始設定期間定義。這個初始儲存空間大小是不可變動的值,無法變更。因此,新增至叢集的任何新節點都會使用相同的永久性磁碟區大小。
您可以直接在永久性磁碟集區宣告中進行變更,藉此增加現有永久性磁碟集區的大小,但新節點仍會使用較小的初始永久性磁碟集區大小。
如果混合型 Cassandra 資料庫的儲存空間即將用盡,您可以使用這個程序來擴充現有的永久磁碟區,並允許新節點擴充其永久磁碟區。
擴充 Cassandra 永久磁碟區
- 將磁碟區大小更新為所需大小:
kubectl -n apigee edit pvc
- 查看更新後的磁碟區容量:
kubectl get pvc -n apigee
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cassandra-data-apigee-cassandra-default-0 Bound pvc-92234ba7-941b-4dab-82c6-8a5288a2c8d4 100Gi RWO standard 21m cassandra-data-apigee-cassandra-default-1 Bound pvc-6be911fc-91f7-465d-a02e-933428ee10b2 100Gi RWO standard 20m cassandra-data-apigee-cassandra-default-2 Bound pvc-14ba34e4-fd5c-4d59-8413-a331dcad3404 100Gi RWO standard 19m
- 將
apigee-controller-manager
部署作業的備援機制設為apigee-system
命名空間中的0
:kubectl get deployments -n apigee-system
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 28m
kubectl edit deployments -n apigee-system apigee-controller-manager
kubectl get deployments -n apigee-system
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 0/0 0 0 30m
- 備份、刪除並重新建立具有新儲存空間大小的 StatefulSet。下列指令會建立設定檔
apigee-cassandra-default.yaml
,您可以使用該檔案擷取目前的 Cassandra 設定。接著,您可以修改並套用這項設定:kubectl -n apigee get sts apigee-cassandra-default -o yaml > apigee-cassandra-default.yaml
kubectl -n apigee delete sts --cascade=false apigee-cassandra-default
- 確認
delete
作業已完成:kubectl get sts -n apigee
輸出內容應如下所示:
No resources found in apigee namespace.
- 使用新的儲存空間大小更新
apigee-cassandra-default.yaml
檔案中的儲存空間大小。這個值必須與您打算在overrides.yaml
中套用的大小相符。 例如:resources: requests: storage: 100Gi
- 重新套用具有更新儲存空間大小的 statefulset 設定:
kubectl apply -f apigee-cassandra-default.yaml
- 確認 statefulset 是否已正確重新建立:
kubectl get sts -n apigee
輸出內容應如下所示:
NAME READY AGE apigee-cassandra-default 3/3 6m56s
- 更新覆寫檔案,加入您在編輯 PVC 時指定的新磁碟大小:
cassandra: storage: capacity: 100Gi
- 將更新後的設定套用至叢集:
../apigeectl apply --datastore -f overrides/overrides.yaml
Parsing file: config/values.yaml Parsing file: overrides/overrides.yaml cleansing older AD's (v1alpha1) istio resources... Invoking "kubectl apply" with YAML config... apigeedatastore.apigee.cloud.google.com/apigee-cassandra unchanged
- 將控制器部署副本更新為先前的狀態 (
`1`
):kubectl edit deployments -n apigee-system apigee-controller-manager
- 檢查新建立的 sts 是否已更新儲存空間大小:
kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
storage: 100Gi
-
檢查 C* pods 資料磁碟區是否已更新為新大小:
kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
/dev/sdb 99G 69M 99G 1% /opt/apigee/data