如何重新创建 Kubernetes 持久卷?

问题描述

我有一个永久卷。

我想强制 Kubernetes 重新创建它,因为内容已损坏。或者,如果有办法解决这个问题,那就是一个解决方案。

我已使用以下方法检查持久卷是否按预期工作:

kubectl describe pv -n 

而且我的 pod 以前使用过它。但是,由于持久卷中的文件损坏,我的 pod 现在失败了。

我想重新创建持久卷。

如果我删除了持久卷,Kubernetes 会创建一个新的,还是我必须手动创建一个新的来附加?

解决方法

如果你删除了一个持久卷,那么 kubernetes 不会为你创建一个新的,你必须手动创建一个新的。基本上这是您问题的简单答案。

但是当您完成 pv 时,基本上有三个选项,您可以删除 PVC 对象,然后根据 PV 回收策略,您将有三个选项:DeleteRetain、{{ 1}}。现在这取决于您在光伏回收政策中设置的政策。

正如 kubernetes 官方文档所述:

当用户处理完他们的卷后,他们可以从允许回收资源的 API 中删除 PVC 对象。 PersistentVolume 的回收策略告诉集群在其声明被释放后如何处理该卷。目前,卷可以被保留、回收或删除。

有关更多信息,您可以查看 kubernetes 的 persistent volume 文档。

,

您应该能够通过从卷所在的主机访问卷来检查卷是否处于可用状态。只需尝试创建并读取其中的文件即可进行检查。

您还可以在块设备上执行 fsck 以检查文件系统是否可以修复。例如:# fsck /dev/sda3 如果它永久损坏,唯一的方法是从备份中恢复(如果可用)。否则数据就会消失,您需要创建一个新卷。

在 Kubernetes 中创建卷可以手动完成。当您使用 hostPath、awsElasticBlockStore 等选项时,在 pod 定义的卷部分下,卷创建是静态的。在这种情况下,必须已经存在的卷被分配给 pod - Kubernetes 不会为 pod 创建新卷。

如果您希望动态创建卷,那么您必须在 pod 定义的卷部分下使用 Persistent Volume Claim,并结合存储类。存储类允许使用诸如 AWSElasticBlockStore、AzureFile、AzureDisk、CephFS、GlusterFS 等的配置器来按需配置卷。