更新时间: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命令行使用已有极速文件存储
- 使用kubectl连接集群,可参见通过kubectl连接集群。
- 创建PV。
- 创建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
- 执行以下命令,创建PV。
kubectl apply -f pv-sfsturbo.yaml
- 创建pv-sfsturbo.yaml文件。
- 创建PVC。
- 创建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的名称
- 执行以下命令,创建PVC。
kubectl apply -f pvc-sfsturbo.yaml
- 创建pvc-sfsturbo.yaml文件。
- 创建应用。
- 创建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名称
- 执行以下命令,创建一个挂载极速文件存储的应用。
kubectl apply -f web-demo.yaml
- 创建web-demo.yaml文件,本示例中将极速文件存储挂载至/data路径。
父主题: 容器存储管理