Azure上Helm部署的Yugabyte集群磁盘存储扩容方法咨询
Yugabyte集群磁盘扩容解决方案(Azure + Helm)
报错原因解释
你遇到的问题是Kubernetes StatefulSet的设计限制导致的:StatefulSet的spec中,除了replicas、template、updateStrategy等少数字段外,PVC模板相关的字段(比如存储大小)不允许更新。通过Helm修改values.yaml里的storage.tserver.size后执行helm upgrade,本质是要修改StatefulSet的PVC模板,这触发了K8s的禁止规则,所以报错。
可行的扩容方法
方法1:直接扩容PVC(推荐)
这是最直接高效的方式,不需要修改Helm配置或重建StatefulSet:
- 先列出所有Yugabyte TServer的PVC:
kubectl get pvc | grep yb-tserver - 编辑单个PVC修改存储大小:
在编辑器中找到kubectl edit pvc data-yb-tserver-0spec.resources.requests.storage,将值改为100Gi后保存退出。 - 批量扩容所有TServer PVC(适合多节点集群):
for pvc in $(kubectl get pvc -l app=yb-tserver -o name); do kubectl patch $pvc -p '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}' done
注意:Azure磁盘支持在线扩容,无需重启Pod。扩容后可以登录TServer Pod执行
df -h确认磁盘大小是否生效,若未自动识别,重启对应Pod即可。
方法2:重建StatefulSet配合Helm管理
如果希望后续通过Helm维护存储配置,可以按以下步骤操作:
- 先删除现有StatefulSet,但保留Pod和PVC(避免数据丢失):
kubectl delete statefulset yb-tserver --cascade=orphan - 修改
values.yaml中storage.tserver.size为100Gi - 执行Helm upgrade重新创建StatefulSet:
helm upgrade yugabyte ./yugabyte-chart -f values.yaml
这种方式会让新的StatefulSet使用更新后的存储模板,后续新增TServer节点时会自动创建100GB的PVC,而现有节点的PVC已经是扩容后的,不受影响。
总结
不是只能通过kubectl直接操作PVC,但Helm的常规upgrade方式无法修改StatefulSet的PVC模板。直接扩容PVC是现有集群磁盘扩容最简便可靠的方案。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

