【问题标题】:Persistent Volume mapping in Elasticsearch cluster using Kubernetes使用 Kubernetes 在 Elasticsearch 集群中进行持久卷映射
【发布时间】:2017-07-23 06:28:58
【问题描述】:

我们计划使用 Kubernetes 建立一个 ES 集群。 k8s pod 将包含 3 个数据节点,我们打算为数据提供持久的卷映射。

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

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

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

【问题讨论】:

    标签: elasticsearch kubernetes volumes kubernetes-pod


    【解决方案1】:

    对于初学者,在某种程度上它取决于您的集群是如何配置/运行的。如果你在一个不错的云提供商上运行,kube 将能够支持你为你的 PVC 自动创建 PV (Persistent Volumes)。

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

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

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

    旁注:虽然 pod 内的单个卷可以安装在该 pod 的多个容器中,但支持 ReadWriteMany 访问模式的后端并不多,允许将相同的卷安装到不同的 pod(即 NFS 支持)

    【讨论】:

    • 我认为一个 pod 应该包含一个集群的所有实例。从你的回答来看,我错了。一个集群可以由多个 Pod 组成。所以一个 Pod 可以只是集群的一个节点。在 ES 中,我们还有其他节点类型,例如“master-only”和“client-only”,它们也可以位于不同的 pod 中。对吗?
    • 没错。在 kube 中,pod 是在节点上调度的最小组织单元。很少直接使用 Pod,因为它通常通过使用 Deployments、DaemonSets、StatefulSets 或 Jobs 进行抽象。您应该通过这些更高级别的结构来创建集群,通常您会使用 Deployments 或 StatefulSets
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多