背景
一般而言,用户只需要声明 PVC,Kubernetes 的 StorageClass 就能动态帮我们创建 PV 并绑定了。
但有时候我们希望为 PVC 绑定我们手动创建的 PV,这时候就需要一些手工介入了。
步骤
只需要在 PVC 声明时,将绑定字段 volumeName
预填好就行了,想绑谁绑谁,是不是很简单呢!
来看一个简单示例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /opt/data
type: ""
persistentVolumeReclaimPolicy: Retain
storageClassName: example-sc
volumeMode: Filesystem
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: example-pvc
finalizers:
- kubernetes.io/pvc-protection
spec:
storageClassName: example-sc
volumeMode: Filesystem
volumeName: example-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
# kubectl apply -f example.yaml
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
example-pvc Bound example-pv 20Gi RWO example-sc 84s
# kubectl get pv example-pv -o yaml
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"name":"example-pv"},"spec":{"accessModes":["ReadWriteOnce"],"capacity":{"storage":"20Gi"},"hostPath":{"path":"/opt/data","type":""},"persistentVolumeReclaimPolicy":"Retain","storageClassName":"example-sc","volumeMode":"Filesystem"}}
pv.kubernetes.io/bound-by-controller: "yes"
creationTimestamp: "2020-12-29T12:10:42Z"
finalizers:
- kubernetes.io/pv-protection
name: example-pv
resourceVersion: "10251127"
selfLink: /api/v1/persistentvolumes/example-pv
uid: c355412b-d29a-4a02-9ab9-418746ff4ded
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: example-pvc
namespace: default
resourceVersion: "10251125"
uid: 2a312a6b-ffc2-4e27-af3b-39a5564dca17
hostPath:
path: /opt/data
type: ""
persistentVolumeReclaimPolicy: Retain
storageClassName: example-sc
volumeMode: Filesystem
status:
phase: Bound