0

我想通过 CATCHUP COMPLETE 在 k8s 上部署 stellar core。我正在使用这个泊坞窗图像satoshipay/stellar-core

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

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

恒星核心是否需要任何额外的存储来进行追赶?

4

2 回答 2

0

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

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

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

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

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

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

关于追赶:

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

于 2019-06-26T12:32:12.960 回答
0

有状态集与部署

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

贮存

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

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

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

于 2019-06-26T06:27:18.813 回答