最近更新时间:2026-10-13 23:31:02
静态配置是最简单直接地在 Kubernetes 中使用 KPFS PV 的方式,直接将整个文件系统的根目录(或子目录)作为 PV 挂载到Pod里,适用于不同容器共享数据的场景。
# cat pv.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: kpfs-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
csi:
driver: kpfs-p2.csi.driver
readOnly: false
volumeAttributes:
StorageServer: ${KPFS_URL}
StoragePool: ${KPFS_POOL}
FileSystemName: ${KPFS_NAME}
volumeHandle: ${KPFS_NAME}/${VOLUME_NAME}字段说明:
accessModes:访问模式,需按照使用模式指定。可选项:
ReadWriteOnce:单节点读写
ReadOnlyMany:多节点只读
ReadWriteMany:多节点读写
persistentVolumeReclaimPolicy:PV保留策略。仅支持Retain,PV删除时对应文件系统目录不会被删除
StorageServer:访问KPFS服务API的 https://IP:端口 地址,IP为文件系统详情-挂载方法-挂载IP,端口为443,如https://198.19.86.189:443
StoragePool:KPFS服务的存储池名称,参见 文件系统详情>基本信息>存储池名称
FileSystemName:KPFS文件系统名称
volumeHandle:KPFS文件系统名/子目录名,需要提前创建子目录
# cat pv.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
mountOptions:
- nfsvers=3
csi:
driver: kpfs-p2.csi.driver
readOnly: false
volumeAttributes:
StorageServer: ${KPFS_URL}
StoragePool: ${KPFS_POOL}
FileSystemName: ${KPFS_NAME}
Protocol: nfs
NFSServer: ${KPFS_SERVER}
volumeHandle: ${KPFS_NAME}-${NFS-SHARE}字段说明:
accessModes:访问模式,需按照使用模式指定。可选项:
ReadWriteOnce:单节点读写
ReadOnlyMany:多节点只读
ReadWriteMany:多节点读写
persistentVolumeReclaimPolicy:PV保留策略。仅支持Retain,PV删除时对应文件系统目录不会被删除
StorageServer:访问KPFS服务API的 https://IP:端口 地址,IP为文件系统详情-挂载方法-挂载IP,端口为443,如https://198.19.86.189:443
StoragePool:KPFS服务的存储池名称,参见 文件系统详情>基本信息>存储池名称
FileSystemName:KPFS文件系统名称
Protocol:协议类型,设置为nfs
NFSServer:nfs访问区的域名,参见 访问授权-NFS协议-NFS协议详情栏位
volumeHandle:KPFS文件系统名-共享路径(为NFS客户端挂载部分创建的NFS共享路径或NFS共享路径下的子目录,需要提前创建子目录)
# cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kpfspvc-static
namespace: static-csi
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: kpfs-pv字段说明:
accessModes:访问模式,需按照使用模式指定,必须与PV的accessModes一致才能绑定。可选项:
ReadWriteOnce:单节点读写
ReadOnlyMany:多节点只读
ReadWriteMany:多节点读写
volumeName:静态PV名称
storage:静态PV容量。不支持给静态PV 设置存储容量,填写任意小于静态PV 的 storage 有效值即可
创建Pod,引用PVC
# cat pod.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app1-deployment-static
namespace: static-csi
labels:
app: app1-static
spec:
replicas: 1
selector:
matchLabels:
app: app1-static
template:
metadata:
labels:
app: app1-static
spec:
containers:
- name: con1
image: docker.io/library/golang:1.21
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 30; done"]
volumeMounts:
- name: static-rwmpv-example
mountPath: /data
volumes:
- name: static-rwmpv-example
persistentVolumeClaim:
claimName: kpfspvc-static参数说明:
volumeMounts.name:引用的卷名称
volumeMounts. mountPath:容器内的挂载点路径
persistentVolumeClaim.claimName:PVC名称
Pod创建完成后,可以进入容器确认数据正常写入:
kubectl exec -ti app1-deployment-static -- tail -f /data/out.txt动态配置方式,创建PV的基础配置参数在StorageClass中定义。您只需创建PVC,指定StorageClass,并且在Pod中引用该PVC,就会自动为您创建一个PV,每一个PV会最终对应KPFS文件系统中的一个子目录。适用于大量应用且不同应用、不同团队间需要实现数据隔离的场景。
# cat StorageClass.yaml
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: kpfs-dynamic
provisioner: kpfs-p2.csi.driver
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
StorageServer: ${KPFS_URL}
StoragePool: ${KPFS_POOL}
FileSystemName: ${KPFS_NAME}参数说明:
reclaimPolicy:PV保留策略,支持Delete和Retain两种策略
Retain:删除PVC时保留对应文件系统目录
Delete:删除PVC时删除对应文件系统目录。K8S默认策略
volumeBindingMode:PV绑定模式,可选项:
Immediate:创建PVC后自动创建一个PV,K8S默认策略
WaitForFirstConsumer:在创建POD使用PVC时创建PV
allowVolumeExpansion:允许动态PV扩容,可选项:
true:允许扩容
false:不允许扩容PV,K8S默认策略
StorageServer:访问KPFS服务API的 https://IP:端口 地址,IP为文件系统详情-挂载方法-挂载IP,端口为443,如https://198.19.86.189:443
StoragePool:KPFS服务的存储池名称,参见 文件系统详情>基本信息>存储池名称
FileSystemName:KPFS文件系统名称
# cat storageclass.yaml
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: nfs-dynamic
provisioner: kpfs-p2.csi.driver
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
StorageServer: ${KPFS_URL}
StoragePool: ${KPFS_POOL}
FileSystemName: ${KPFS_NAME}
Share: ${NFS-SHARE}
Protocol: nfs
NFSServer: ${KPFS_SERVER}
mountOptions:
- nfsvers=3reclaimPolicy:PV保留策略,支持Delete和Retain两种策略
Retain:删除PVC时保留对应文件系统目录
Delete:删除PVC时删除对应文件系统目录。K8S默认策略
volumeBindingMode:PV绑定模式,可选项:
Immediate:创建PVC后自动创建一个PV,K8S默认策略
WaitForFirstConsumer:在创建POD使用PVC时创建PV
allowVolumeExpansion:允许动态PV扩容,可选项:
true:允许扩容
false:不允许扩容PV,K8S默认策略
StorageServer:访问KPFS服务API的 https://IP:端口 地址,IP为文件系统详情-挂载方法-挂载IP,端口为443,如https://198.19.86.189:443
StoragePool:KPFS服务的存储池名称,参见 文件系统详情>基本信息>存储池名称
FileSystemName:KPFS文件系统名称
Share:NFS共享路径,为NFS客户端挂载部分创建的NFS共享路径
Protocol:协议类型,设置为nfs
NFSServer:nfs访问区的域名,参见 访问授权-NFS协议-NFS协议详情栏位
# cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: kpfs-rwmpvc-dynamic
namespace: dynamic-csi
spec:
accessModes:
- ReadWriteMany
storageClassName: kpfs-dynamic
resources:
requests:
storage: 1Gi参数说明:
accessModes:访问模式,需按照使用模式指定,可选项:
ReadWriteOnce:单节点读写
ReadOnlyMany:多节点只读
ReadWriteMany:多节点读写
storageClassName:StorageClass名称
storage:创建PV的容量
# cat pod.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app1-deployment-dynamic
namespace: dynamic-csi
labels:
app: app1-dynamic
spec:
replicas: 1
selector:
matchLabels:
app: app1-dynamic
template:
metadata:
labels:
app: app1-dynamic
spec:
containers:
- name: con1
image: docker.io/library/golang:1.21
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u) >> /data/out1.txt; sleep 30; done"]
volumeMounts:
- name: dynamic-rwmpv-example
mountPath: /data
volumes:
- name: dynamic-rwmpv-example
persistentVolumeClaim:
claimName: kpfs-rwmpvc-dynamic参数说明:
volumeMounts.name:引用的卷名称
volumeMounts.mountPath:容器内的挂载点路径
persistentVolumeClaim.claimName:PVC名称
纯净模式
