我正在努力让我了解永久卷和永久卷声明以及在Helm中应如何进行...
问题的 TLDR 版本是:如何以掌 Helm 方式创建PVC,可以将将来的版本(无论是升级版本还是全新安装的)附加到PVC上?
我目前的理解:
PV是一块物理存储的接口(interface)。
PVC是 pods 声称自己存在PV的方式。当 pods 被删除时,PVC也被删除,但是PV被保留-因此被保留。但是,我该如何再次使用它呢?
我知道可以动态设置PV。就像以Google Cloud为例,如果您创建ONLY a PVC,它将自动为您创建一个PV。
现在这是我坚持的部分...
我创建了一个 Helm chart ,该 Helm chart 显式创建了PVC,因此具有动态创建的PV作为发行版的一部分。然后,我稍后删除发行版,该发行版也将删除PVC。云提供商将维护PV。在随后的同一图表的新版本安装中...如何重用旧的PV?有办法真正做到这一点吗?
我确实找到了this question可以回答该问题……但是,这意味着您需要为将要使用的每个PVC预先创建PV,而复制品和自动缩放的全部要点是,所有这些应按需生成。
与往常一样,该用例用于测试/开发环境,在这些环境中我想保留我的数据,但我并不总是希望服务器在运行。
先感谢您!我的大脑有点疼,因为我无法弄清楚...>。<
最佳答案
确实会很头疼。
让我们从应该如何做起,以实现RWO存储实现可伸缩部署,并在单个Pod挂起时将其附加到您的单个Pod中。这就是volumeClaimTemplates发挥作用的地方。您可以根据部署规模动态创建PVC。但是,这非常适合当您的Pod需要连接到Pod的存储,但在Pod离开时不再需要的时候(根据回收策略可以重新使用该卷)。
如果需要在pod发生故障时重新收集这样的数据,则应考虑至少可以解决该问题的StatefulSets。
现在,如果您明确地预先创建PVC,则可以更好地控制所发生的事情,但是对于RWO,动态可伸缩性会遇到问题。您所链接的响应中的这种和手动PV管理实际上可以实现卷重用,这是我可以想到的唯一允许重用的机制。
在碰到这种情况后,就该考虑替代方法了。例如,为什么不使用StatefulSet来为运行中的群集保留存储空间,而不是删除图表,而是将其所有副本设置为0,保留非计算资源,但将其缩减为零。然后,在按比例缩放时,仍然绑定(bind)的PVC应该重新连接到按比例缩放的 pods 。
关于kubernetes - 推荐使用Helm中的持久卷,声明和副本建议的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51997793/