问题描述
首先,我没有使用 Cassandra 的经验,而且我不是创建此部署的人。
我在 AKS 的集群中运行 Cassandra。 statefulset 中配置的 PVC 为 1000Gi。目前,这些 Pod 已没有存储空间,并且一直处于不健康状态。
我希望扩展连接到 Pod 的卷。我面临的问题是我无法缩小 statefulset,因为 statefulset 只有在 all 的 pod 都健康时才会缩小。
我什至尝试删除 statefulset,然后用更大的 PVC 重新创建它(推荐 here)
但是,我似乎无法删除 statefulset。在我看来,CassandraDatacenter CRD 会在我删除它后立即重新创建 statefulset。让我没有时间改变任何东西。
我的问题如下:
- 有没有标准的方法可以在不丢失数据的情况下扩展卷?
- 如果我缩减 CassandraDatacenter 中的副本会怎样?它会删除 PVC 还是保留它?
- 如果没有标准,有没有人对如何在不丢失存储的情况下实现扩展卷大小有任何想法?
解决方法
通常在 Cassandra 集群中,最佳实践是水平扩展(而不是垂直扩展)。您需要更多 Cassandra 节点来分散负载以实现最大吞吐量。
Kubernetes 中的等价物是扩展您的部署。随着节点数的增加,每个单独的 Cassandra 节点上的数据量将按比例减少。
如果您真的想调整 PVC 的大小,则只有启用了 allowVolumeExpansion
才能动态调整。这样做不会丢失数据。
删除 STS 是行不通的,因为正如您所知,它会按照设计自动替换。如果您这样做,您也将无法缩减,因为集群中没有足够的容量(磁盘空间)。干杯!