在 pod 之间使用共享卷与每个 pod 都有自己的 pvc 卷(在 statefulset 的情况下)有什么优点和缺点?

What advantage and disadvantages using shared volume between pod vs. each pod having own pvc volume(in case of statefulset)?

在 kubernetes 中,对所有 pod 使用单个共享 pvc 对每个 pod 使用多个 pvc 有什么优点和缺点。

Statefulset with single PV/PVCStatefulset with multiple PV/PVC 有不同的用例,应根据您要部署的应用程序来使用。你不能先于另一个。

让我用数据库的例子来解释你,如果你想部署像 postgresql 这样的 relational database,所有数据都存储在一个地方。您需要具有单个 PV/PVC 的 statefulset,并且该状态的所有副本仅写入该特定卷。这是在 postgresql 中保持数据一致的唯一方法。

现在假设您要部署一个 distributed nosql database,例如 cassandra/mongodb,其中数据沿着不同的机器和数据库集群拆分。在这样的数据库中,数据在不同的节点上复制,在这种情况下,statefulsets pods 充当该数据库的不同节点。所以,这样的 pods 需要不同的容量来存储他们的数据。因此,如果您的 运行 cassandra statefulset 具有 3 pods,则这些 pods 必须附加不同的 PV/PVC。每个节点在自己的 PV 上写入数据,并最终复制到其他节点。