Kubernetes删除Pod后的PV/PVC状态

Kubernetes删除Pod后的PV/PVC状态,kubernetes,kubernetes-pod,persistent-volumes,persistent-volume-claims,Kubernetes,Kubernetes Pod,Persistent Volumes,Persistent Volume Claims,我有一个Kubernetes集群,部署了一些吊舱(DB、前端、Redis)。我不能完全理解的一个部分是删除pod后PVC会发生什么 例如,如果我删除绑定到索赔A的POD A,我知道索赔A不会自动删除。如果我尝试重新创建POD,它会连接回同一个PVC,但所有数据都丢失了 有人能解释一下发生了什么吗?我看过官方文件,但目前没有任何意义 感谢您的帮助。PVC的寿命与POD无关。 如果仍然存在,可能是因为它已将ReceivePolicy设置为Retain,在这种情况下,即使PVC已消失,它也不会被删除

我有一个Kubernetes集群,部署了一些吊舱(DB、前端、Redis)。我不能完全理解的一个部分是删除pod后PVC会发生什么

例如,如果我删除绑定到索赔A的POD A,我知道索赔A不会自动删除。如果我尝试重新创建POD,它会连接回同一个PVC,但所有数据都丢失了

有人能解释一下发生了什么吗?我看过官方文件,但目前没有任何意义


感谢您的帮助。

PVC的寿命与POD无关。 如果仍然存在,可能是因为它已将ReceivePolicy设置为Retain,在这种情况下,即使PVC已消失,它也不会被删除

PersistentVolumes可以有各种回收策略,包括“保留”、“回收”和“删除”。对于动态配置的PersistentVolumes,默认回收策略为“删除”。这意味着,当用户删除相应的PersistentVolumeClaim时,将自动删除动态配置的卷。如果卷包含宝贵的数据,则此自动行为可能不合适。 请注意,回收策略是Delete(默认值),它是两个回收策略之一,另一个是Retain。(第三个策略回收已被弃用)。在删除的情况下,移除PVC时,PV将自动删除,PVC上的数据也将丢失

在这种情况下,使用“保留”策略更合适。使用“保留”策略,如果用户删除PersistentVolumeClaim,则不会删除相应的PersistentVolume。相反,它被移动到发布阶段,在该阶段,它的所有数据都可以手动恢复

当永久卷受到保护时,也可能发生这种情况。您应该能够交叉验证这一点:

命令:

$ kubectl describe pvc PVC_NAME | grep Finalizers
输出:

Finalizers:    [kubernetes.io/pvc-protection]
您可以通过使用kubectl修补程序将终结器设置为null来解决此问题:

$ kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge
编辑:

PersistentVolume可以以资源提供程序支持的任何方式装载到主机上。每个PV都有自己的访问模式集,描述特定PV的功能

访问模式为:

  • ReadWriteOnce–该卷可以由单个用户以读写方式装入 节点
  • ReadOnlyMany–卷可以由多个节点以只读方式装入
  • ReadWriteMany–卷可以由多个节点以读写方式装入
在CLI中,访问模式缩写为:

  • RWO-ReadWriteOnce
  • ROX-现成的
  • RWX-ReadWriteMany
所以,如果您重新创建pod并将其放置在不同的节点上,并且PV的回收策略设置为ReadWriteOnce,则您无法访问数据是正常的

在请求具有特定访问模式的存储时,声明使用与卷相同的约定。我的建议是将PV访问模式编辑为ReadWriteMany

$ kubectl edit pv your_pv
您应该在PersistentVolume中更新访问模式,如下所示

   accessModes:
      - ReadWriteMany

那么问题是如何让pod绑定回原来的pvc?我在DigitalOcean的单个节点上使用动态块存储。目前没有ReadWriteMany功能。您可以提供配置文件吗?