更新时间:2025-04-27 GMT+08:00

使用SFS Turbo极速文件存储

极速文件存储(SFS Turbo)是一种具备高可用性和持久性的共享文件系统,适合海量的小文件、低延迟高IOPS的应用。本文介绍如何使用已有的极速文件存储静态创建PV和PVC,并在工作负载中实现数据持久化与共享性。

前提条件

  • 已经创建好一个集群,并且在该集群中安装华为云容器存储插件Everest。
  • 已经创建好一个状态可用的SFS Turbo,并且SFS Turbo与集群在同一个VPC内。

约束与限制

  • 支持多个PV挂载同一个SFS Turbo,但有如下限制:
    • 多个不同的PVC/PV使用同一个底层SFS Turbo卷时,如果挂载至同一Pod使用,会因为PV的volumeHandle参数值相同导致无法为Pod挂载所有PVC,出现Pod无法启动的问题,请避免该使用场景。
    • PV中persistentVolumeReclaimPolicy参数建议设置为Retain,否则可能存在一个PV删除时级联删除底层卷,其他关联这个底层卷的PV会由于底层存储被删除导致使用出现异常。
    • 重复用底层存储时,建议在应用层做好多读多写的隔离保护,防止产生的数据覆盖和丢失。
  • 对SFS Turbo类型的存储来说,删除集群或删除PVC时不会回收包周期的SFS Turbo资源,您需要在SFS Turbo控制台中自行回收。

通过kubectl命令行使用已有极速文件存储

  1. 使用kubectl连接集群,可参见通过kubectl连接集群
  2. 创建PV。

    1. 创建pv-sfsturbo.yaml文件。
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        annotations:
          pv.kubernetes.io/provisioned-by: everest-csi-provisioner
        name: pv-sfsturbo   # pv的名称
      spec:
        accessModes:
          - ReadWriteMany   # 访问模式,极速文件存储必须为ReadWriteMany
        capacity:
          storage: 500Gi   # 极速文件存储容量大小
        csi:
          driver: sfsturbo.csi.everest.io
          fsType: nfs
          volumeHandle: <your_volume_id>   # 极速文件存储的ID
          volumeAttributes:
            storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
            everest.io/share-export-location: <your_location>   # 极速文件存储的共享路径
        persistentVolumeReclaimPolicy: Retain
        storageClassName: csi-sfsturbo
    2. 执行以下命令,创建PV。
      kubectl apply -f pv-sfsturbo.yaml

  3. 创建PVC。

    1. 创建pvc-sfsturbo.yaml文件。
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-sfsturbo
        namespace: default
        annotations:
          volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner
      spec:
        accessModes:
          - ReadWriteMany        # 极速文件存储必须为ReadWriteMany 
        resources:
          requests:
            storage: 500Gi   # 极速文件存储大小
        storageClassName: csi-sfsturbo     # SFS Turbo存储类名称,必须与PV的存储类一致
        volumeName: pv-sfsturbo   # PV的名称
    2. 执行以下命令,创建PVC。
      kubectl apply -f pvc-sfsturbo.yaml

  4. 创建应用。

    1. 创建web-demo.yaml文件,本示例中将极速文件存储挂载至/data路径。
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: web-demo
        namespace: default
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: web-demo
        template:
          metadata:
            labels:
              app: web-demo
          spec:
            containers:
            - name: container-1
              image: nginx:latest
              volumeMounts:
              - name: pvc-sfsturbo-volume    #卷名称,需与volumes字段中的卷名称对应
                mountPath: /data  #存储卷挂载的位置
            imagePullSecrets:
              - name: default-secret
            volumes:
              - name: pvc-sfsturbo-volume    #卷名称,可自定义
                persistentVolumeClaim:
                  claimName: pvc-sfsturbo    #已创建的PVC名称
    2. 执行以下命令,创建一个挂载极速文件存储的应用。
      kubectl apply -f web-demo.yaml