使用Kubernetes在Elasticsearch集群中进行持久性卷映射

时间:2017-07-23 06:28:59

标签: elasticsearch kubernetes volumes kubernetes-pod

我们计划使用Kubernetes建立ES群集。 k8s pod将包含3个数据节点,我们打算对数据进行持久性卷映射。

我是ES和k8的新手,但据我了解,在一个pod中,通常会共享一个卷。但在这种情况下,我们不应该共享3个实例的数据。实现pod的卷映射的最佳方法是什么? 如果我有3个实例,我应该像/ node1 / data,/ node2 / data一样分别映射每个实例,还是应该映射到单个卷'/ data',ES会确保实例之间的数据是隔离的?

我不确定映射卷是否应该具有节点名称,如node1,node2等,如上所述。具有3个ES节点(或多个数据节点)的pod设计是否正确?是否可以为Pod中的不同节点实例指定不同的持久卷?

如果pod已终止并且创建了新pod,会发生什么?是否应该在映射的卷和节点之间存在强绑定。实现这一目标的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

首先,它在某种程度上取决于您的群集的配置/运行方式。如果您在一个不错的云提供商上运行,kube将能够为您的PVC自动创建PV(Persistent Volumes)。

我是否正确理解您计划在一个Pod中包含3个节点?这听起来不对。您应该有3个独立的pod形成您的群集。由于这是一项有状态服务,您可能需要查看StatefulSet

在您的群集窗格中正确定义了PVC后,kube将确保它们正确绑定到您的窗格(即,在AWS AZ上始终在正确的区域中安排节点,以便它可以链接基于EBS的窗格的PV)。 p>

我建议您在pod定义中使用emptyDir卷开始构建群集,当您掌握它时,您可以继续确保在删除pod时正确保留数据并通过更新Deployment或StatefulSet重新创建。

旁注:虽然内部pod singe卷可以安装在该pod的多个容器中,但是没有多少后端支持ReadWriteMany访问模式,允许将相同的卷安装到不同的pod(即NFS确实如此)