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