通过此过程,您可以扩展 Apigee Hybrid Cassandra 数据库使用的永久性卷,以满足更大的存储需求,而无需创建新节点来提供更多存储空间。
概览
Apigee Hybrid cassandra
组件使用永久性卷存储数据。永久性卷的大小是在安装和初始配置期间定义的。该初始存储空间大小是不可变值,无法更改。因此,添加到集群的任何新节点都将使用相同的永久性卷大小。
您可以通过直接对永久性卷声明进行更改来增加现有永久性卷的大小,但新节点仍将使用较小的初始永久性卷大小。
如果您的 Hybrid 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-system
命名空间中的apigee-controller-manager
部署将副本设置为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* Pod 数据卷是否已更新为新的大小:
kubectl exec -n apigee -it apigee-cassandra-default-0 -- df -h|grep "/opt/apigee/data"
/dev/sdb 99G 69M 99G 1% /opt/apigee/data