【问题标题】:How to recreate a Kubernetes persistentVolume?如何重新创建 Kubernetes 持久卷?
【发布时间】:2021-02-08 03:02:19
【问题描述】:

我有一个持久的音量。

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

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

kubectl describe pv -n 

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

我想重新创建持久卷。

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

【问题讨论】:

  • 你能提供你的 pod 的 yaml 吗?还有你是如何创建 pv 的?通过 pvc 还是手动?请通过提供更多信息来详细说明您的问题

标签: kubernetes amazon-eks amazon-ebs


【解决方案1】:

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

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

正如 kubernetes 官方文档所说:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      相关资源
      最近更新 更多