【问题标题】:How do I make a PersistentVolumeClaim to regain access to dynamically provisioned released PersistentVolume如何使 PersistentVolumeClaim 重新获得对动态配置的已发布 PersistentVolume 的访问权限
【发布时间】:2021-06-09 14:40:47
【问题描述】:

我已使用以下 k8s 资源文件从具有保留 reclaimPolicy 的自定义存储类动态创建/配置 PVC 和 PV。

# StorageClass yaml spec
# kubectl apply -f storage-class.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-ssd
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-ssd
  fstype: ext4
  replication-type: none
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: Immediate
# PersistentVolumeClaim yaml specs
# kubectl apply -f mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: test-mysql
  name: test-mysql-pv-claim
spec:
  storageClassName: "fast-ssd"
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 51G

以下是重现我的场景的步骤顺序:

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntu/test$ kubectl apply -f mysql-pvc.yaml 
persistentvolumeclaim/test-mysql-pv-claim created

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntu/test$ kubectl get pvc,pv
NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/test-mysql-pv-claim   Bound    pvc-a6bd789c-9e3c-43c8-8604-2e91b2fee616   48Gi       RWO            fast-ssd       7s

NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                         STORAGECLASS   REASON   AGE
persistentvolume/pvc-a6bd789c-9e3c-43c8-8604-2e91b2fee616   48Gi       RWO            Retain           Bound    default/test-mysql-pv-claim   fast-ssd                6s

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntu/test$ kubectl delete -f mysql-pvc.yaml 
persistentvolumeclaim "test-mysql-pv-claim" deleted

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntu/test$ kubectl get pvc,pv
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                         STORAGECLASS   REASON   AGE
persistentvolume/pvc-a6bd789c-9e3c-43c8-8604-2e91b2fee616   48Gi       RWO            Retain           Released   default/test-mysql-pv-claim   fast-ssd                44s

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntutest$ kubectl apply -f mysql-pvc.yaml 
persistentvolumeclaim/test-mysql-pv-claim created

ubuntu@ubuntu-ThinkPad-X230-Tablet:/home/ubuntu/test$ kubectl get pvc,pv

NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/test-mysql-pv-claim   Bound    pvc-fbc266ab-60b0-441b-a789-84f950071390   48Gi       RWO            fast-ssd       6m6s

NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                         STORAGECLASS   REASON   AGE
persistentvolume/pvc-a6bd789c-9e3c-43c8-8604-2e91b2fee616   48Gi       RWO            Retain           Released   default/test-mysql-pv-claim   fast-ssd                7m6s
persistentvolume/pvc-fbc266ab-60b0-441b-a789-84f950071390   48Gi       RWO            Retain           Bound      default/test-mysql-pv-claim   fast-ssd                6m5s

从输出的最后一部分可以看出,新 PVC 绑定到新 PV,而不是旧发布的 PV。

那么我们能否在 mysql-pvc.yaml 文件中进行一些更改,以便我们的 PVC 可以再次重新分配/绑定到旧版本 PV,因为该 PV 将包含我们需要的重要数据?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    当您的回收政策为“保留”时,pvc YAML 中的任何更改都将不起作用。

    根据 Kubernetes 文档:

    保留回收政策允许手动回收资源。当PersistentVolumeClaim 被删除时,PersistentVolume 仍然存在并且该卷被视为“已释放”。但它还不能用于另一个索赔,因为前一个索赔人的数据仍在卷上。管理员可以通过以下步骤手动回收卷。

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

    参考: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#retain

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2012-02-13
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多