使用持久卷在Kubernetes上进行Elasticsearch部署

时间:2019-10-11 11:04:34

标签: elasticsearch kubernetes

我正在尝试在kubernetes中使用Statefulset部署Elasticsearch集群(replicas: 3),并且需要将Elasticsearch数据存储在持久卷(PV)中。由于每个Elasticsearch实例都有其自己的数据文件夹,因此我需要为PV中的每个副本具有单独的数据文件夹。我正在尝试使用volumeClaimTemplatesmountPath: /usr/share/elasticsearch/data,但这会导致错误:第二个窗格中的错误pod has unbound immediate PersistentVolumeClaims。因此,如何使用Statefulset实现此目的?

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用动态配置,则可以在后端自动创建卷,例如磁盘是Azure中PV的存储(用于一次Write Write Now操作),否则您需要手动创建

一旦创建了卷,只需在大小与pv匹配的适当名称空间中创建一个pvc,然后就应该在pvc定义中传递该卷名,它将自动绑定。

您可以尝试这样-

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: claimName
  namespace: namespace
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: default
  volumeName: pv-volumeName
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 1Gi

如果您仍然遇到问题,请分享

答案 1 :(得分:0)

没有信息,但是您如何尝试安装Elastic-Search: 作为示例,请遵循:

根据StatefulSet的文档-limitations

  

给定Pod的存储必须由PersistentVolume提供者根据请求的存储类进行设置,或者由管理员预先设置。

这看起来像您的示例,动态存储配置存在问题。

如果已创建pv和pvc并将它们与storage class中的volumeClaimTemplates绑定在一起,请验证存储类:

    volumeMounts:
      - name: "elasticsearch-master"
        mountPath: /usr/share/elasticsearch/data
 volumeClaimTemplates:
  - metadata:
      name: elasticsearch-master
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: name #please refer to this settings to see if you are using default storage class. In other case you should spceify this parameter manually
      resources:
        requests:
          storage: 30Gi

希望获得帮助。