You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Helm在Kubernetes部署Elasticsearch遇PVC绑定失败求助

解决Elasticsearch Helm部署中PVC绑定失败的问题

问题描述

执行Helm部署命令:

helm install elasticsearch elastic/elasticsearch -n efk

遇到PVC绑定失败错误,核心提示:

no persistent volumes available for this claim and no storage class is set

完整日志如下:

LAST SEEN           TYPE      REASON               OBJECT                                                              MESSAGE
18s (x2 over 18s)   Normal    NoPods               PodDisruptionBudget/elasticsearch-master-pdb                        未找到匹配的Pod
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Claim elasticsearch-master-elasticsearch-master-2及Pod elasticsearch-master-2
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Pod elasticsearch-master-1
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Claim elasticsearch-master-elasticsearch-master-1及Pod elasticsearch-master-1
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Pod elasticsearch-master-0
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Claim elasticsearch-master-elasticsearch-master-0及Pod elasticsearch-master-0
18s                 Normal    SuccessfulCreate     StatefulSet/elasticsearch-master                                    成功创建StatefulSet elasticsearch-master中的Pod elasticsearch-master-2
18s                 Warning   FailedScheduling     Pod/elasticsearch-master-0                                          0/4节点可用:4个Pod存在未绑定的即时PersistentVolumeClaims。抢占:0/4节点可用:4个节点抢占无法助力调度。
18s                 Warning   FailedScheduling     Pod/elasticsearch-master-1                                          0/4节点可用:4个Pod存在未绑定的即时PersistentVolumeClaims。抢占:0/4节点可用:4个节点抢占无法助力调度。
18s                 Warning   FailedScheduling     Pod/elasticsearch-master-2                                          0/4节点可用:4个Pod存在未绑定的即时PersistentVolumeClaims。抢占:0/4节点可用:4个节点抢占无法助力调度。
16s                 Warning   FailedScheduling     Pod/elasticsearch-master-0                                          0/4节点可用:4个Pod存在未绑定的即时PersistentVolumeClaims。抢占:0/4节点可用:4个节点抢占无法助力调度。
16s                 Warning   FailedScheduling     Pod/elasticsearch-master-1                                          0/4节点可用:4个Pod存在未绑定的即时PersistentVolumeClaims。抢占:0/4节点可用:4个节点抢占无法助力调度。
8s (x2 over 18s)    Normal    FailedBinding        PersistentVolumeClaim/elasticsearch-master-elasticsearch-master-0   no persistent volumes available for this claim and no storage class is set
8s (x2 over 18s)    Normal    FailedBinding        PersistentVolumeClaim/elasticsearch-master-elasticsearch-master-2   no persistent volumes available for this claim and no storage class is set
8s (x2 over 18s)    Normal    FailedBinding        PersistentVolumeClaim/elasticsearch-master-elasticsearch-master-1   no persistent volumes available for this claim and no storage class is set

解决方案

1. 使用动态存储类(推荐生产环境)

如果集群中已配置StorageClass,直接指定它让Kubernetes自动创建PV:

  • 先查看可用的StorageClass:
    kubectl get storageclasses.storage.k8s.io
    
  • 部署时通过--set指定存储类:
    helm install elasticsearch elastic/elasticsearch -n efk --set persistence.storageClass=<你的StorageClass名称>
    
  • 若需自定义更多存储参数,可先导出Chart的values文件修改后部署:
    helm show values elastic/elasticsearch > values.yaml
    
    编辑values.yaml中的persistence.storageClass字段,然后执行:
    helm install elasticsearch elastic/elasticsearch -n efk -f values.yaml
    

2. 创建静态PV绑定PVC

如果集群没有动态存储类,手动创建与PVC匹配的PV:

  • 注意PV的存储容量、访问模式需与PVC一致(Elasticsearch默认PVC请求10Gi,访问模式ReadWriteOnce)。
  • 示例PV配置文件(需创建3个,对应3个节点的PVC):
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: elasticsearch-pv-0
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:  # 测试环境用hostPath,生产环境请替换为NFS、Ceph等持久化存储
        path: /data/elasticsearch-0
      claimRef:
        namespace: efk
        name: elasticsearch-master-elasticsearch-master-0
    
  • 创建PV:
    kubectl apply -f pv.yaml
    
    重复上述步骤创建elasticsearch-pv-1、elasticsearch-pv-2,对应另外两个PVC。

3. 禁用持久化(仅测试环境)

如果只是快速测试,不需要保留数据,可直接禁用持久化:

helm install elasticsearch elastic/elasticsearch -n efk --set persistence.enabled=false

内容的提问来源于stack exchange,提问作者kernel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:35:39