EKS 1.24中Helm升级ElasticSearch 6.5.4存储请求失败求助
解决方法
1. 手动扩容现有Elasticsearch PVC
首先列出所有与Elasticsearch StatefulSet关联的PVC:
kubectl get pvc -l app=elasticsearch
针对每个PVC执行扩容命令,将<new-storage-size>替换为你需要的容量(比如50Gi):
kubectl patch pvc <pvc-name> -p '{"spec":{"resources":{"requests":{"storage":"<new-storage-size>"}}}}'
验证扩容状态,当PVC状态变为Bound且CAPACITY显示新值时,说明扩容完成:
kubectl get pvc <pvc-name>
2. 更新Helm Chart配置
修改helm/templates/statefulset.yaml中的volumeClaimTemplates部分,将存储请求值设为目标大小;或者推荐在values.yaml中添加可配置参数,方便后续维护:
在values.yaml新增配置:
elasticsearch: persistence: storageSize: 50Gi
然后在statefulset.yaml中引用该参数:
volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: {{ .Values.elasticsearch.persistence.storageSize }}
3. 执行Helm Upgrade并处理报错
执行helm upgrade命令,会触发StatefulSet更新报错(这是Kubernetes的限制导致的预期现象):
helm upgrade <release-name> ./path/to/helm-chart
该报错不会影响现有Pod和已扩容的PVC,且Helm会将新的存储配置记录到Release中——后续若需扩容Elasticsearch副本数,新创建的Pod会自动使用新的存储请求创建PVC。
关键说明
Kubernetes限制StatefulSet的volumeClaimTemplates不可修改,因为PVC与StatefulSet的每个Pod绑定,修改模板无法自动更新已存在的PVC,必须手动扩容现有PVC才能完成存量节点的磁盘调整。此方案无需删除StatefulSet或转换为多角色部署,完全基于现有Helm Chart配置实现需求。
内容的提问来源于stack exchange,提问作者Darshan Deshmukh
相关产品推荐
相关产品推荐

