Я использую PV с EFS. Я создал PV и PVC. Мой PV возвращается в статус выпущенного после того, как я удалю свои StatefulSets. Когда я удаляю и повторно применяю свои StatefulSets, он не привязывается к тому же PV, вместо этого отображается статус PVC. У меня вопрос: как мне заставить свои поды в StatefulSet отсканировать тот же PV?
[kubeXpress]# k get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY **STATUS** CLAIM STORAGECLASS REASON AGE
efsvol 1Mi RWO Retain **Released** default/efsvol aws-efs 10m
[kubeXpress]# k get pvc
efsvol **Pending** aws-efs 10m
[kubeXpress]# k get po
NAME READY STATUS RESTARTS AGE
web-0 0/1 **Pending** 0 4m
[kubeXpress]# k describe po web-0
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 2m (x37 over 12m) default-scheduler pod has unbound PersistentVolumeClaims (repeated 6 times)
Похоже, вам нужно создать новый PVC для нового модуля, чтобы использовать существующий PV.
Если вы удалите PV.Spec.ClaimRef
ссылка в настройках PV, любой новый PVC с соответствующими настройками может использовать его. Или, если вы хотите назначить PV конкретному PVC, вы можете заполнить PV.Spec.ClaimRef
с именем PVC, а затем создайте PVC с этим именем.
Не забывайте использовать Retain
политика для PV для предотвращения удаления после его выпуска.
Пример PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
path: /tmp
server: 172.17.0.2
persistentVolumeReclaimPolicy: Retain #Here is policy
claimRef: #Here is claim reference
name: claim1
namespace: default
Пример ПВХ:
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "claim1"
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "1Gi"
volumeName: "pv0001"