Kubernetes持久卷声明创建了一个新的持久卷,而不是绑定到可用的持久卷

时间:2020-02-15 21:44:36

标签: docker kubernetes yaml docker-for-mac

我正在使用Docker应用程序(已打开Kubernetes选项)运行mac OSX Catalina。我使用以下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

此创建和PersistentVolume的名称为pv-nfs-data。接下来,我将使用以下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

1 个答案:

答案 0 :(得分:3)

适用于Mac的Docker default storage classdynamic provisioning type,就像您在AKS / GKE上一样,它也在其中分配物理存储。

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

要使PVC使用现有的PV,可以禁用存储类,并在PV中指定哪个PVC可以将其与claimRef一起使用。

索赔参考

PV包含您要创建的PVC的claimRef

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并为其创建一个storage class来使用NFS进行动态路由,然后让kubernetes解决其余的问题。较新版本的Kubernetes(1.13+)可以使用CSI NFS driver