Kubernetes Persistent Volume Claims 创建一个新的 Persistent Volume 而不是绑定到可用的 Persistent Volume

Kubernetes Persistent Volume Claims creates a new Persistent Volume instead of binding to the available Persistent Volume

我是 运行 mac OSX Catalina 使用 docker 应用程序并启用了 Kubernetes 选项。我使用以下 yaml 和命令创建了一个 PersistentVolume。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-data
spec:
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 10Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.1.250
    path: "/volume1/docker"

kubectl apply -f pv.yml

这将创建名为 pv-nfs-data 的 PersistentVolume。接下来,我使用以下 yaml 和命令创建一个 PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-nfs-data
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi

kubectl apply -f pvc.yml

这将创建一个名为 pvc-nfs-data 的 PersistentVolumeClaim,但它不会将其绑定到可用的 PersistentVolume (pv-nfs-data)。相反,它会创建一个新的并将其绑定到那个。如何使 PersistentVolumeClaim 绑定到可用的 PersistentVolume

Docker 用于 Mac default storage class is the dynamic provisioning type,就像您在 AKS/GKE 上一样,它也分配物理存储空间。

→ kubectl get StorageClass
NAME                 PROVISIONER          AGE
hostpath (default)   docker.io/hostpath   191d

对于要使用现有 PV 的 PVC,您可以禁用存储 class 并在 PV 中指定哪个 PVC 可以使用它 claimRef

索赔编号

PV 包含一个 claimRef 用于您将创建的 PVC

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-data
spec:
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 10Gi
  claimRef:
    namespace: insert-your-namespace-here
    name: pv-nfs-data-claim
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.1.250
    path: "/volume1/docker"

PVC 将 storageClassName 设置为 ''

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pv-nfs-data-claim
  namespace: insert-your-namespace-here
spec:
  storageClassName: ''
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

动态

您可以通过添加 NFS dynamic provisioner, create a storage class for it and let kubernetes work the rest out. More recent version of Kubernetes (1.13+) can use the CSI NFS driver

使用 NFS 进行动态路由