如何创建由预先存在的EBS卷支持的PVC / PV?

时间:2020-08-27 11:42:59

标签: kubernetes

比方说,我有一个预先存在(保留)的EBS卷,该EBS卷是由PVC / PV创建的,但已被误删除。该卷是这样创建的:

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gp2-retain
parameters:
  fsType: ext4
  type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: Immediate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    app: prometheus
  name: prometheus-server
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  storageClassName: gp2-retain
  volumeMode: Filesystem

,并由舵图创建的吊舱使用

helm install prometheus-current stable/prometheus server.persistentVolume.existingClaim=prometheus-server

因此,此EBS包含由我想要保留的Pod创建的一些文件。现在,我们设法删除了PVC / PV ,但是由于reclaimPolicy,EBS的容量得以保留

所以我想以指向此特定EBS volumeID aws://eu-west-1/vol-xxxxx的方式重新创建PersistingVolumeClaim和PersistentVolume。如何在不触发动态配置的情况下创建PVC并创建新的PV由全新的EBS支持 音量?

1 个答案:

答案 0 :(得分:2)

您可以将现有的EBS卷“采用”到新的PVC / PV中,重点是:

  • 使用您选择的PersistentVolume创建一个.metadata.name(例如vol-imported-prometheus-server和等于.spec.awsElasticBlockStore.volumeID的{​​{1}}
    • 如果您指定aws://region/vol-xxxx,Kubernetes将不会尝试分配新的EBS卷
  • 创建一个volumeID,其中PersistentVolumeClaim等于上一步中PV的名称
    • 如果您指定spec.volumeName,Kubernetes将把PVC绑定到现有的PV上,而不是尝试根据volumeName动态地提供新的PV

像这个例子:

StorageClass

如果您--- apiVersion: v1 kind: PersistentVolume metadata: name: vol-imported-prometheus-server spec: accessModes: - ReadWriteOnce awsElasticBlockStore: fsType: ext4 volumeID: aws://eu-west-1c/vol-xxxxx capacity: storage: 8Gi persistentVolumeReclaimPolicy: Retain storageClassName: gp2-retain volumeMode: Filesystem --- apiVersion: v1 kind: PersistentVolumeClaim metadata: labels: app: prometheus name: imported-prometheus-server spec: accessModes: - ReadWriteOnce resources: requests: storage: 8Gi storageClassName: gp2-retain volumeMode: Filesystem volumeName: vol-imported-prometheus-server ,最终将获得所需的PVC-> PV->现有EBS体积。

kubectl apply -f thatfile.yaml

然后您可以像这样在掌舵中使用该PVC名称:

kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                   STORAGECLASS   REASON   AGE
vol-imported-prometheus-server             8Gi        RWO            Retain           Bound    prometheus/imported-prometheus-server   gp2-retain              15m

kubectl get pvc
NAME                         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
imported-prometheus-server   Bound    vol-imported-prometheus-server             8Gi        RWO            gp2-retain     16m

其中helm install prometheus-current stable/prometheus server.persistentVolume.existingClaim=imported-prometheus-server 是您刚创建的PVC的名称。