如何与另一个StatefulSet共享StatefulSet的持久卷?

时间:2020-05-13 17:46:22

标签: kubernetes google-kubernetes-engine kubernetes-helm kubernetes-pod kubernetes-statefulset

我有一个运行3个副本的 StatefulSet-1 ,每个Pod将日志写入其自己的持久卷,例如 pv1,pv2,pv3 (使用 volumeClaimTemplates实现) :

我还有另一个运行3个副本的 StatefulSet-2 ,并且我希望每个 StatefulSet-2 的POD都已创建 StatefulSet-1 ”的卷,即 pv1,pv2和pv3 ,用于处理由 StatefulSet-1 的每个Pod编写的单独日志。

因此 pv1,pv2,pv3 应该同时用于 StatefulSet1 StatefulSet2 ,因为 pv1,pv2,pv3 StatefulSet-1 部署的一部分创建的! pv1,pv2,pv3当然会采用POD的名称 StatefulSet-1 ,对于 StatefulSet-2 来说是可以的。

如何配置 StatefulSet2 以实现上述情况?请帮忙!

谢谢! Sudhir

1 个答案:

答案 0 :(得分:1)

这行不通。 1. GCE磁盘支持的PV处于readWriteOnce模式,因此每个Pod 1 pvc。 2.您正在使用PVC模板来实现带有PVC的statefulset pod,这些模板依赖于动态卷供应来创建适当的PV和PVC。

如果您需要这些吊舱来共享PVC,最好的选择是使用readWriteMany PV,例如由NFS支持的PV。您还需要手动创建statefulSet-2的容器,以使它们安装适当的PVC。您可以通过为每个部署一个pod部署来实现这一目标。

还有其他需要考虑的问题,是否可以让每个statefulSet的容器​​在同一容器中一起运行?通常不建议这样做,但是这将允许他们两个共享相同的卷(只要他们不使用相同的端口)