如何在AKS上扩展Cassandra的PVC而不丢失数据?

lf5gs5x2  于 2022-09-27  发布在  Cassandra
关注(0)|答案(3)|浏览(233)

首先,我需要说的是,我没有使用Cassandra的经验,我不是创建这个部署的人。
我让Cassandra在AKS的一个集群中跑步。statefulset中配置的PVC为1000Gi。目前,吊舱没有储存空间,并且一直处于不健康状态。
我正在寻找扩展附加到吊舱的卷。我面临的问题是,我无法缩小状态集,因为状态集只有在所有豆荚都健康时才会缩小。
我甚至尝试删除statefulset,然后用更大的PVC重新创建它(建议使用here
然而,我似乎无法删除statefulset。在我看来,一旦我删除状态集,CassandraDatacenter CRD就会继续重新创建状态集。我没有时间改变任何事情。
我的问题如下:
1.是否有一种标准方法可以在不丢失数据的情况下扩展卷?
1.如果我缩小Cassandra数据中心中的副本,会发生什么?它会删除PVC还是保留它?
1.如果没有标准,有人知道如何在不丢失存储的情况下扩展卷大小吗?

t2a7ltrp

t2a7ltrp1#

通常,在Cassandra集群中,最佳实践是水平扩展(而不是垂直扩展)。您需要更多的Cassandra节点来分散负载,以实现最大吞吐量。
在Kubernetes中,等效的方法是扩大部署规模。随着节点数的增加,每个Cassandra节点上的数据量将按比例减少。
如果您真的想调整PVC的大小,只有启用allowVolumeExpansion才能动态调整。这样做不会丢失数据。
删除STS是行不通的,因为根据设计,它会自动替换,正如您所知道的那样。如果这样做,您也将无法缩小规模,因为集群中没有足够的容量(磁盘空间)。干杯

w80xi6nr

w80xi6nr2#

答案:如何在AKS上扩展StatefulSet的PVC而不丢失数据
虽然@Erick Raminez的答案对于Cassandra来说是一个非常好的建议,但我想回答更一般的问题“我如何在AKS上为我的StatefulSet扩展PVC而不丢失数据?”。
如果允许停机,您可以执行以下4个步骤:


# Delete StatefulSet

# This is required on AKS since the azure disk must have status "Unattached"

kubectl delete statefulsets.apps STATEFULSET_NAME

# Edit capacity in

# - your statefulset yaml file

# - each pvc

kubectl patch pvc PVC_NAME -p '{"spec": {"resources": {"requests": {"storage": "3Gi"}}}}'

# Deploy updated statefulset yaml (or helm chart)

kubectl apply -f statefulset.yaml

# Verify Capacity

kubectl get pvc

如果您不想停机,请查看第一个参考以了解其他步骤。
参考文献:

zbsbpyhn

zbsbpyhn3#

我终于找到时间来共享等待AKS磁盘分离的脚本:https://adamrushuk.github.io/aks-disk-detach-wait-scripts/

相关问题