elasticsearch 使用Elasticsearch和Kubernetes进行数据存储的最佳实践,elasticsearch,kubernetes,elasticsearch,Kubernetes" /> elasticsearch 使用Elasticsearch和Kubernetes进行数据存储的最佳实践,elasticsearch,kubernetes,elasticsearch,Kubernetes" />

elasticsearch 使用Elasticsearch和Kubernetes进行数据存储的最佳实践

elasticsearch 使用Elasticsearch和Kubernetes进行数据存储的最佳实践,elasticsearch,kubernetes,elasticsearch,Kubernetes,在阅读了一些关于in-Kubernetes的文档之后,我想知道哪一个是运行高可用ElasticSearch集群的最佳设置(从存储方面来说)。我没有运行典型的(或ELK)设置,但我使用ElasticSearch作为一个合适的全文搜索引擎 我读过这本书,但我发现它缺乏澄清。根据“Kubernetes在行动”,第6章: 在pod中运行的应用程序需要将数据持久化到磁盘和 即使pod被重新安排为 另一个节点,您不能使用我们提到的任何卷类型 远的因为需要从任何群集节点访问此数据, 它必须存储在某种类型的网络

在阅读了一些关于in-Kubernetes的文档之后,我想知道哪一个是运行高可用ElasticSearch集群的最佳设置(从存储方面来说)。我没有运行典型的(或ELK)设置,但我使用ElasticSearch作为一个合适的全文搜索引擎

我读过这本书,但我发现它缺乏澄清。根据“Kubernetes在行动”,第6章:

在pod中运行的应用程序需要将数据持久化到磁盘和 即使pod被重新安排为 另一个节点,您不能使用我们提到的任何卷类型 远的因为需要从任何群集节点访问此数据, 它必须存储在某种类型的网络连接存储(NAS)上

因此,如果我没有弄错的话,我需要一个
,并通过
PersistentVolumes
PersistentVolumeClaim
策略访问它

当我观察时,我觉得应该自己定义音量类型。不过,在查看时,似乎没有任何卷设置。 我选择了那个教程,但是在媒体上有几十个都在做同样的事情


那么:对于ElasticSearch集群,哪种设置是最好的?当然要记住,为了不丢失索引中的任何数据,并且能够添加可以访问索引的pod(Kubernetes)或节点(ElasticSearch)。

在Kubernetes中部署ElasticSearch集群的一个好模式是定义
状态集

因为StatefulSet复制多个Pod,所以不能简单地引用持久卷声明。相反,您需要向StatefulSet状态定义添加一个
持久卷声明模板

为了使这些复制的支架周围卷正常工作,您需要创建一个和,它允许按需创建存储卷

在本教程中,永久卷声明模板如下所示:

  volumeClaimTemplates:
  - metadata:
      name: data
      labels:
        app: elasticsearch
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: do-block-storage
      resources:
        requests:
          storage: 100Gi

这里,
StorageClass
do block storage
。您可以用自己的存储类替换它

非常有趣的问题

您需要考虑Kubernetes中的Elasticsearch节点,它相当于Elasticsearch Pod

Kubernetes需要持有每个pod的标识,以便在停机时连接到正确的持久卷声明,下面是
StatefulSet

StatefulSet将确保相同的PersistentVolumeClaim在其生命周期内始终绑定到同一Pod

PersistentVolume(PV)是在提供的硬件上存储的Kubernetes抽象。这可以是AWS EBS、DigitalOcean卷等

我建议查看Elasticsearch官方掌舵图:


还有Elasticsearch操作员:

我一回去工作就会检查一下,看看会发生什么。但是谢谢你明确的回答。文档太多了,有时会让人觉得有点不知所措。特别是关于Kubernetes内的卷和数据存储