【问题标题】:How to share persistent volume of a StatefulSet with another StatefulSet?如何与另一个 StatefulSet 共享 StatefulSet 的持久卷?
【发布时间】:2020-05-13 17:46:22
【问题描述】:

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

我有另一个 StatefulSet-2 运行 3 个副本,我希望 StatefulSet-2 访问的每个 POD 都已创建 StatefulSet-1' s 卷,即 pv1,pv2 & pv3,用于处理由 StatefulSet-1 的每个 pod 写入的单独日志。

所以 pv1,pv2,pv3 应该被 StatefulSet1StatefulSet2 使用,因为 pv1,pv2,pv3 > 作为 StatefulSet-1 部署的一部分创建的! pv1,pv2,pv3 当然会采用 POD 的 StatefulSet-1 名称,这对于 StatefulSet-2 来说是可以的。

如何配置StatefulSet2来实现上述场景?请帮忙!

感谢和问候, 苏迪尔

【问题讨论】:

  • following 有帮助吗?
  • 没有@danyL 在上面的链接我们不能用不同的名字链接 pvc。
  • 你能提供你的 statefulsets、pvc、pv 的配置文件(YAML/JSON)吗?您在集群中使用了多少个节点?您使用的是什么 GKE 版本?您是创建自己的存储类还是使用 GKE 提供的默认存储类?你能分享kubectl get pv,pvc的输出吗?
  • @PjoterS 我没有创建任何正在寻找的方法,所以没有什么可分享的,但是存储将是 GCP 的 GKE 的一切。

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


【解决方案1】:

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

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

还有一点需要考虑,你可以让每个 statefulSet 的容器在同一个 pod 中一起运行吗?通常不建议这样做,但它允许它们共享相同的卷(只要它们不使用相同的端口)

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2020-05-28
    • 2019-11-12
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多