【问题标题】:Persistent Volumes & Claims & Replicas in Helm recommended approachHelm 推荐方法中的持久卷、声明和副本
【发布时间】:2019-01-30 12:59:12
【问题描述】:

我正在努力了解持久卷和持久卷声明以及应该如何在 Helm 中完成...

TLDR 版本的问题是:如何在 helm 中创建一个 PVC,以便我可以将未来的版本(无论是升级还是全新安装)附加到?

我目前的理解:

PV 是一块物理存储的接口。 PVC 是 Pod 声明存在供自己使用的 PV 的方式。当 pod 被删除时,PVC 也被删除,但 PV 被维护 - 因此被持久化。但那我怎么再次使用它呢?

我知道动态配置 PV 是可能的。以谷歌云为例,如果你创建ONLY a PVC,它会自动为你创建一个PV。

现在这是我坚持的部分......

我创建了一个显式创建 PVC 的掌舵图,因此将动态创建的 PV 作为发布的一部分。然后我稍后删除该版本,这也将删除 PVC。云提供商将维护 PV。在随后使用新版本安装同一图表时...如何重用旧 PV?有没有办法真正做到这一点?

我确实找到了this question 哪种答案...但是,这意味着您需要为您需要的每个 PVC 预先创建 PV,以及副本和自动缩放的全部要点是所有这些都应该按需生成。

与往常一样,该用例用于测试/开发环境,我希望在其中保留我的数据,但我并不总是希望服务器运行。

提前感谢您!我的脑子有点疼,因为我就是想不通……>.

【问题讨论】:

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


    【解决方案1】:

    确实会很头疼。

    让我们从如何使用 RWO 存储实现可扩展部署开始,这些 RWO 存储在单个 pod 启动时附加到它们。这就是volumeClaimTemplates 发挥作用的地方。您可以在部署扩展时动态创建 PVC。然而,当您的 pod 需要附加到 pod 的存储,但当 pod 消失时不再需要存储时,这很适合这种情况(可以按照回收政策重复使用卷。

    如果您需要在 pod 失败时重新连接此类数据,您应该考虑至少解决该部分的 StatefulSets。

    现在,如果您显式地预先创建 PVC,您可以更好地控制发生的事情,但动态可伸缩性对于 RWO 来说会遇到问题。您链接的响应中的这种手动 PV 管理实际上可以实现卷重用,这是我能想到的唯一允许它的机制。

    遇到这样的问题后,就该考虑替代方案了。例如,为什么不使用 StatefulSet 来保留运行集群中的存储空间,而不是删除图表,而是将其所有副本设置为 0,保留非计算资源,但将其缩小到零。然后,当您扩大规模时,仍绑定的 PVC 应该重新连接到重新调整规模的 pod。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2020-11-08
      • 2021-05-22
      相关资源
      最近更新 更多