k8s上的恒星核心部署是否需要持久存储?

时间:2019-06-25 20:18:45

标签: kubernetes kubernetes-helm stellar

我想用CATCHUP COMPLETE在k8s上部署恒星核心。我正在使用此docker映像satoshipay/stellar-core

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

我想知道如果我使用部署而不是有状态集,然后重新启动Pod,更新其docker版本或删除它,将会发生什么情况?会再次初始化数据库吗?

恒星核还需要额外的存储空间吗?

2 个答案:

答案 0 :(得分:0)

状态集与部署

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

存储

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

  

容器中的磁盘文件是临时的

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

答案 1 :(得分:0)

部署中,指定由所有pod副本共享的 PersistentVolumeClaim 。换句话说,共享音量。

如果您有多个副本容器,则后备存储显然必须具有 ReadWriteMany ReadOnlyMany accessMode。

StatefulSet ,您可以指定一个 volumeClaimTemplates ,以便每个副本容器都具有唯一的 PersistentVolumeClaim 关联。 换句话说,没有共享卷。

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

因此,在您的情况下,具有更多隔离(没有共享卷)最好具有基于状态集的解决方案。

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

关于赶超:

通常,不建议在docker容器中运行CATCHUP_COMPLETE=true,因为它们默认情况下资源有限(如果您确实要这样做,请确保为他们提供更多资源的访问权限:CPU,内存和磁盘空间)。