我想在k8s上部署stellar核心,并完成CATCHUP。我正在使用这个docker图像satoshipay/stellar-core
在docker镜像文档中,提到了/data用于存储有关数据库的一些信息。我已经看到helm模板正在使用一个持久卷并将其挂载到/data中。
我想知道如果我使用部署而不是有状态集,并且我重新启动pod,更新它的docker版本或删除它,会发生什么?它会再次初始化数据库吗?
另外,恒星核心是否需要任何额外的存储空间来进行追赶?
发布于 2019-06-26 14:27:19
状态集与部署
StatefulSet“保证了这些Pod的有序性和唯一性”。如果您的应用程序需要以特定的顺序启动,请使用statefulset。
存储
一定要为数据库使用持久卷。来自K8S Docs
容器中的
磁盘文件是短暂的
由于您似乎正在部署某种类型的区块链应用程序,这可能会导致启动的严重延迟
发布于 2019-06-26 20:32:13
在Deployment中,您可以指定一个由所有pod副本共享的PersistentVolumeClaim。换句话说,共享卷。
如果您有多个副本pod,后备存储显然必须具有ReadWriteMany或ReadOnlyMany accessMode。
您可以指定一个volumeClaimTemplates,以便每个副本pod都能获得与其关联的唯一PersistentVolumeClaim。StatefulSet换句话说,没有共享卷。
StatefulSet对于在集群中运行非常有用,例如Hadoop集群、MySQL集群,每个节点都有自己的存储。
因此,在您的情况下,有更多的隔离(没有共享卷)最好有基于状态集的解决方案。
如果您使用基于部署的解决方案(重新启动pod,更新其docker版本或删除它),您的数据库将再次初始化。
关于追赶的:
一般来说,不建议在docker容器中运行CATCHUP_COMPLETE=true,因为默认情况下它们的资源有限(如果您真的想这样做,请确保让它们访问更多的资源: CPU、内存和磁盘空间)。
https://stackoverflow.com/questions/56761445
复制相似问题