pv 和 pvc - kube- efs

pv 和 pvc - kube- efs

我正在使用带有 EFS 的 PV。我创建了一个 PV 和 PVC。删除 StatefulSet 后,PV 恢复为已发布状态。当我删除并重新应用 StatefulSet 时,它不会附加到同一个 PV,相反 PVC 状态显示为待定。我的问题是如何让 StatefulSet 中的 Pod 重新绑定到同一个 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)

答案1

似乎您需要为新 Pod 创建一个新的 PVC 才能使用现有的 PV。

如果您PV.Spec.ClaimRef在 PV 设置中删除引用,则任何具有适当设置的新 PVC 都可以使用它。或者,如果您想将 PV 分配给确切的 PVC,您可以填写PV.Spec.ClaimRefPVC 的名称,然后使用该名称创建 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

PVC示例:

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "claim1"
spec:
  accessModes:
    - "ReadWriteOnce"
  resources:
    requests:
      storage: "1Gi"
  volumeName: "pv0001"

相关内容