如何重新创建 Kubernetes persistentVolume?

How to recreate a Kubernetes persistentVolume?

我有一个持久卷。

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

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

kubectl describe pv -n 

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

我想重新创建持久卷。

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

如果你删除了一个持久卷然后kubernetes不会为你创建一个新的,你必须手动创建一个新的。基本上就是对你问题的简单回答。

但是当你完成你的 pv 时基本上有三个选项,你可以删除 PVC 对象然后根据 PV 回收策略你将有三个选项:DeleteRetainRecycle。现在就看你的pv reclaim policy中设置了什么policy了。

正如 kubernetes 官方文档所述:

When a user is done with their volume, they can delete the PVC objects from the API that allows reclamation of the resource. The reclaim policy for a PersistentVolume tells the cluster what to do with the volume after it has been released of its claim. Currently, volumes can either be Retained, Recycled, or Deleted.

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

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

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

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

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