比方说,我有一个预先存在(保留)的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支持
音量?
答案 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的名称。