在 Kubernetes 中,要编写对应的 PV (Persistent Volume) 需要先确定 PVC (Persistent Volume Claim) 的需求,然后再创建一个与之匹配的 PV。
以下是创建 PVC 和 PV 的一般步骤:
- 创建 PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-name
spec:
accessModes:
- ReadWriteOnce # 访问模式为单个节点读写
resources:
requests:
storage: 1Gi # 请求的存储资源大小
- 根据 PVC 的需求创建对应的 PV
静态分配方式:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-name
spec:
capacity:
storage: 1Gi # 存储容量与 PVC 相同
accessModes:
- ReadWriteOnce # 访问模式与 PVC 相同
persistentVolumeReclaimPolicy: Retain # 回收策略为保留(不删除)
nfs: # 存储类型为 NFS,其他存储类型可根据需要更改。
server: nfs-server.example.com # NFS Server 的地址或域名。
path: /path/to/storage # NFS Server 中共享存储卷的路径。
动态分配方式:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-class-name
provisioner: kubernetes.io/<provisioner-name>
parameters:
type: <storage-type>
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: storage-class-name
其中,静态分配方式直接手动创建 PV,并将其与 PVC 相关联。而动态分配方式则通过 StorageClass 动态创建 PV。
需要注意的是,在创建 PV 和 PVC 的时候,访问模式(accessModes)必须一致才能匹配成功。否则,PVC 将无法找到对应的 PV。