【问题标题】:Bound a PVC with status Released绑定状态为 Released 的 PVC
【发布时间】:2020-02-10 23:54:16
【问题描述】:

让我把你放在上下文中。我得到的 pod 的配置看起来接近这个:

spec:
  nodeSets:
  - name: default
    count: 3
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 5Gi
        storageClassName: repd-ssd-xfs

我也有我的StorageClass

apiVersion: ...
kind: StorageClass
metadata:
  name: repd-ssd-xfs
parameters:
  type: pd-ssd
  fsType: xfs
  replication-type: regional-pd
  zones: us-central1-a, us-central1-b, us-central1-f
reclaimPolicy: Retain
volumeBindingMode: Immediate

我删除了 pod 的命名空间,然后再次应用,我注意到我的 pod 使用的 pvc 更改并绑定到一个新的 pvc,pod 使用的最后一个 pvc 处于已释放状态。我的问题是,有没有办法指定 pod 使用我的旧 pvc? StorageClass 政策是 Retain 但这意味着我仍然可以使用状态已释放的 pvc?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine persistent-volumes


    【解决方案1】:

    如果是部署或独立 pod,您可以在 pod 规范中明确指定持久卷声明名称,如下面的代码:

     volumes:
      - name: task-pv-storage
         persistentVolumeClaim:
           claimName: task-pv-claim
    

    但是,如果是 StatefulSet,它会在 pod 每次重启时自动附加到同一个 PVC。希望这会有所帮助。

    【讨论】:

    【解决方案2】:

    除了 @shashank tyagi 提供的答案。

    查看文档Persistent VolumesRetain 部分,您可以找到:

    当 PersistentVolumeClaim 被删除时,PersistentVolume 仍然 存在并且该卷被认为是“已释放”。但现在还没有 可用于另一项索赔,因为前一个索赔人的数据 保留在卷上。管理员可以手动收回 卷的步骤如下。

    • 删除持久卷。外部基础设施(例如 AWS EBS、GCE PD、Azure 磁盘或 删除 PV 后 Cinder volume) 仍然存在。
    • 相应地手动清理相关存储资产上的数据。
    • 手动删除关联的存储资产,或者如果您想重复使用相同的存储资产,请使用
      创建一个新的 PersistentVolume 存储资产定义。

    查看文档Persistent volumes with Persistent Disks 和此示例How to set ReclaimPolicy for PersistentVolumeClaim 可能会有所帮助。

    更新请看文章Persistent Volume Claim for StatefulSet

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多