擴充 Cassandra 永久磁碟區

這個程序可讓您擴充 Apigee 混合 Cassandra 資料庫使用的持久性磁碟區,以便因應更大的儲存空間需求,而不需要為了提供更多儲存空間而建立新節點。

總覽

Apigee 混合 cassandra 元件會使用永久磁碟區來儲存資料。永久性磁碟區的大小會在安裝和初始設定期間定義。這個初始儲存空間大小是不可變動的值,無法變更。因此,新增至叢集的任何新節點都會使用相同的永久性磁碟區大小。

您可以直接在永久性磁碟集區宣告中進行變更,藉此增加現有永久性磁碟集區的大小,但新節點仍會使用較小的初始永久性磁碟集區大小。

如果混合型 Cassandra 資料庫的儲存空間即將用盡,您可以使用這個程序來擴充現有的永久磁碟區,並允許新節點擴充其永久磁碟區。

擴充 Cassandra 永久磁碟區

  1. 將磁碟區大小更新為所需大小:
    kubectl -n apigee edit pvc
  2. 查看更新後的磁碟區容量:
     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
  3. apigee-controller-manager 部署作業的備援機制設為 apigee-system 命名空間中的 0
    1. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   1/1     1            1           28m
    2. kubectl edit deployments -n apigee-system apigee-controller-manager
    3. kubectl get deployments -n apigee-system
      NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
      apigee-controller-manager   0/0     0            0           30m
  4. 刪除 STS 而不進行連鎖刪除:
    1. kubectl -n apigee delete sts --cascade=false apigee-cassandra
    2. kubectl get sts -n apigee
      No resources found in apigee namespace.
  5. 更新覆寫檔案,加入您在編輯 PVC 時指定的新磁碟大小:
    cassandra:
      storage:
        capacity: 100Gi
  6. 將更新後的設定套用至叢集:
    ../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
  7. 將控制器部署副本更新為先前的狀態 (`1`):
    kubectl edit deployments -n apigee-system apigee-controller-manager
  8. 檢查新建立的 sts 是否已更新儲存空間大小:
    kubectl get sts -n apigee apigee-cassandra -o yaml |grep storage
    storage: 100Gi
  9. 檢查 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