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 进行动态路由
我是 运行 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 进行动态路由