全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

CSI挂载及使用

最近更新时间:2026-10-13 23:31:02

静态PV

静态配置是最简单直接地在 Kubernetes 中使用 KPFS PV 的方式,直接将整个文件系统的根目录(或子目录)作为 PV 挂载到Pod里,适用于不同容器共享数据的场景。

创建PV

POSIX方式
# 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文件系统名/子目录名,需要提前创建子目录

NFS方式
# 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共享路径下的子目录,需要提前创建子目录)

创建PVC

# 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

创建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

动态配置方式,创建PV的基础配置参数在StorageClass中定义。您只需创建PVC,指定StorageClass,并且在Pod中引用该PVC,就会自动为您创建一个PV,每一个PV会最终对应KPFS文件系统中的一个子目录。适用于大量应用且不同应用、不同团队间需要实现数据隔离的场景。

创建StorageClass

POSIX方式
# 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文件系统名称

NFS方式
# 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=3
  • 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文件系统名称

  • Share:NFS共享路径,为NFS客户端挂载部分创建的NFS共享路径

  • Protocol:协议类型,设置为nfs

  • NFSServer:nfs访问区的域名,参见 访问授权-NFS协议-NFS协议详情栏位

创建PVC

# 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的容量

创建Pod

# 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名称

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈