我想用CATCHUP COMPLETE在k8s上部署恒星核心。我正在使用此docker映像satoshipay/stellar-core
在docker image文档中提到/ data用于存储有关DB的一些信息。而且我已经看到helm模板正在使用一个持久卷并将其安装在/ data中。
我想知道如果我使用部署而不是有状态集,然后重新启动Pod,更新其docker版本或删除它,将会发生什么情况?会再次初始化数据库吗?
恒星核还需要额外的存储空间吗?
答案 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,内存和磁盘空间)。