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