【问题标题】:Does stellar core deployment on k8s needs persistent storage?k8s 上的 stellar core 部署需要持久化存储吗?
【发布时间】:2019-06-25 20:18:45
【问题描述】:

我想通过 CATCHUP COMPLETE 在 k8s 上部署 stellar core。我正在使用这个 docker 镜像satoshipay/stellar-core

在 docker image docs 中提到 /data 用于存储有关 DB 的一些信息。而且我已经看到 helm 模板正在使用持久卷并将其安装在 /data 中。

我想知道如果我使用部署而不是状态集并重新启动 pod、更新它的 docker 版本或删除它会发生什么?它会再次初始化数据库吗?

恒星核心是否还需要额外的存储空间来进行追赶?

【问题讨论】:

    标签: kubernetes kubernetes-helm stellar


    【解决方案1】:

    Statefulset 与部署

    StatefulSet“提供有关这些 Pod 的顺序和唯一性的保证”。 如果您的应用程序需要按特定顺序启动,请使用statefulset

    存储

    绝对利用数据库的持久卷。来自K8S Docs

    容器中的磁盘文件是短暂的

    由于您似乎正在部署某种区块链应用程序,这可能会导致启动严重延迟

    【讨论】:

      【解决方案2】:

      Deployment 中,您指定一个由所有 pod 副本共享的 PersistentVolumeClaim。换句话说,共享卷。

      如果您有多个副本 pod,则后备存储显然必须具有 ReadWriteManyReadOnlyMany 访问模式。

      StatefulSet 您指定一个 volumeClaimTemplates,以便每个副本 pod 获得一个与之关联的唯一 PersistentVolumeClaim。 换句话说,没有共享卷。

      StatefulSet 对于在集群中运行事物很有用,例如 Hadoop 集群、MySQL 集群,其中每个节点都有自己的存储。

      因此,在您的情况下,拥有更多隔离(无共享卷)最好使用基于 statefulset 的解决方案。

      如果您使用基于部署的解决方案(重新启动 pod、更新其 docker 版本或删除它),您的数据库将再次初始化。

      关于追赶:

      一般来说,不建议在 docker 容器中运行CATCHUP_COMPLETE=true,因为默认情况下它们的资源有限(如果你真的想这样做,请确保让它们访问更多资源:CPU、内存和磁盘空间)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-14
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-15
        相关资源
        最近更新 更多