文档首页 > > 用户指南> 存储管理> 使用极速文件存储卷

使用极速文件存储卷

分享
更新时间: 2020/05/18 GMT+08:00

极速文件存储具有按需申请,快速供给,弹性扩展,方便灵活等特点,适用于多种使用场景,主要面向DevOps、容器微服务、企业办公等场景。

图1 CCE挂载极速文件存储卷

使用说明

  • 符合标准文件协议,用户可以将文件系统挂载给服务器,像使用本地文件目录一样。
  • 数据共享,多台服务器可挂载相同的文件系统,数据可以共享操作和访问。
  • 私有网络,数据访问必须在数据中心内部网络中。
  • 直接使用云上现有IAAS服务构建独享的云文件存储,为租户提供数据隔离保护和IOPS性能保障,主要面向DevOps、容器微服务、企业办公等场景。
  • 适用于多读多写(ReadWriteMany)场景下的各种工作负载(Deployment/StatefulSet)和普通任务(Job)使用。

使用约束

暂不支持直接创建极速文件存储卷,你可以参照界面要求前往SFS Turbo控制台创建后,再使用极速文件存储服务。

导入极速文件存储卷

CCE支持导入已有的极速文件存储。

  1. 登录CCE控制台,单击左侧导航栏的“资源管理 > 存储管理”,在“极速文件存储卷”页签下,单击“导入”。
  2. 从列表里选择要导入的极速文件存储。
  3. 选择需要导入极速文件存储的集群名称和命名空间名称。
  4. 单击“确定”。

使用极速文件存储卷

  1. 参照创建无状态负载(Deployment)创建有状态负载(StatefulSet),在添加容器后,展开“数据存储”,在“云存储”页签,单击“添加云存储”。
  2. 选择存储类型为“极速文件存储”。

    表1 极速文件存储参数说明

    参数

    参数说明

    云存储类型

    极速文件存储:适用于多种使用场景,主要面向DevOps、容器微服务、企业办公等场景。

    分配方式

    使用已有存储

    云存储名称:选择已创建的存储,您需要提前导入存储,导入存储步骤请参见导入极速文件存储卷

    添加容器挂载

    配置如下参数:

    1. 子路径:输入文件存储的子路径,如:tmp。

      Kubernetes中数据卷挂载的subpath,指引用卷内的子路径而不是其根,不填写时默认为根。现只支持文件存储,必须是相对路径,且不能以“/”或“../”开头。

    2. 挂载路径:输入挂在路径,如:/tmp。
      数据存储挂载到容器上的路径,请不要挂载在系统目录下,如“ /”、“ /var/run”等,会导致容器异常。建议挂载在空目录下,若目录不为空,请确保目录下无影响容器启动的文件,否则文件会被替换,导致容器启动异常,工作负载创建失败。
      须知:

      挂载高危目录的情况下 ,建议使用低权限帐号启动,否则可能会造成宿主机高危文件被破坏。

    3. 设置权限。
      • 只读:只能读容器路径中的数据卷。
      • 读写:可修改容器路径中的数据卷,容器迁移时新写入的数据不会随之迁移,会造成数据丢失。

    单击“添加容器挂载”可增加多条设置,单击“确定”完成配置。

  3. 单击“确定”。

解关联极速文件存储卷

导入极速文件存储卷成功后,极速文件存储卷会自动和当前集群绑定,其它集群也可以导入该存储。解关联后,将和此集群解绑,其它集群仍然可以导入使用该文件存储卷。

若极速文件存储卷已被工作负载挂载,将无法和集群解关联。

  1. 登录CCE控制台,单击左侧导航栏的“资源管理 > 存储管理”,在极速文件存储卷存储卷列表中,单击极速文件存储卷后的“解关联”。
  2. 查看系统提示,单击“确定”。

使用已有极速文件存储卷创建PVC

CCE支持使用已有的极速文件存储来创建PersistentVolume,创建成功后,通过创建相应的PersistentVolumeClaim来绑定当前的PersistentVolume使用。

  1. 登录SFS控制台,创建一个文件存储,记录文件存储的ID、共享路径和容量。
  2. 请参见通过kubectl或web-terminal插件连接CCE集群配置kubectl命令。
  3. 新建一个yaml文件,用于创建PersistentVolume。假设文件名为pv-efs-example.yaml

    touch pv-efs-example.yaml

    vi pv-efs-example.yaml

    • 1.15版本集群,yaml文件配置示例如下:
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-efs-example
        annotations:
          pv.kubernetes.io/provisioned-by: everest-csi-provisioner
      spec:
        accessModes:
        - ReadWriteMany
        capacity:
          storage: 10Gi
        csi:
          driver: sfsturbo.csi.everest.io
          fsType: nfs
          volumeAttributes:
            everest.io/share-export-location: 192.168.0.169:/
            storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner
          volumeHandle: 8962a2a2-a583-4b7f-bb74-fe76712d8414
        persistentVolumeReclaimPolicy: Delete
        storageClassName: csi-sfsturbo

      其中:

      • driver:挂载依赖的存储驱动,极速文件存储配置为“sfsturbo.csi.everest.io”。
      • everest.io/share-export-location:极速文件存储的共享路径。
      • volumeHandle:极速文件存储的ID。

        获取方法:在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“极速文件存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。

      • storage:文件存储的大小。
      • storageClassName:指定k8s storage class名称;极速文件存储卷需配置为"csi-sfsturbo”。
    • 1.13及之前版本集群,yaml文件配置示例如下:
      apiVersion: v1 
      kind: PersistentVolume 
      metadata: 
        name: pv-efs-example 
      spec: 
        accessModes: 
        - ReadWriteMany 
        capacity: 
          storage: 100Gi 
        flexVolume: 
          driver: huawei.com/fuxiefs 
          fsType: efs 
          options: 
            deviceMountPath: 192.168.0.169:/ 
            fsType: efs 
            volumeID: 8962a2a2-a583-4b7f-bb74-fe76712d8414 
        persistentVolumeReclaimPolicy: Delete 
        storageClassName: efs-standard

      其中:

      • driver:挂载依赖的存储驱动,极速文件存储配置为“huawei.com/fuxiefs”。
      • deviceMountPath:极速文件存储的共享路径。
      • volumeID:极速文件存储的ID。

        获取方法:在CCE控制台中,单击左侧栏目树中的“资源管理-存储管理”,在“极速文件存储卷”页签下单击PVC的名称,在PVC详情页中复制“PVC UID”后的内容即可。

      • storage:文件存储的大小。
      • storageClassName:极速文件存储支持的卷类型,当前支持efs-standard、efs-performance(目前SFS Turbo不支持动态创建,所以此参数后续没有使用)。

    极速文件存储所在VPC,子网必须与工作负载规划部署的ECS虚拟机的VPC保持一致,安全组开放入方向端口(111、445、2049、2051、20048)。

  4. 创建PV。

    kubectl create -f pv-efs-example.yaml

  5. 新建一个yaml文件,用于创建PVC。假设文件名为pvc-efs-example.yaml

    touch pvc-efs-example.yaml

    vi pvc-efs-example.yaml

    • 1.15版本集群,yaml文件配置示例如下:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-efs-example
        namespace: default
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 10Gi
        storageClassName: csi-sfsturbo
        volumeName: pv-efs-example

      其中:

      • storageClassName:指定k8s storage class名称;需配置为"csi-sfsturbo”。
      • storage:存储容量,单位Gi,必须和已有pv的storage大小保持一致。
      • volumeName:PV的名称。
    • 1.13及之前版本集群,yaml文件配置示例如下:
      apiVersion: v1 
      kind: PersistentVolumeClaim 
      metadata: 
        annotations: 
          volume.beta.kubernetes.io/storage-class: efs-standard 
          volume.beta.kubernetes.io/storage-provisioner: flexvolume-huawei.com/fuxiefs 
        name: pvc-efs-example 
        namespace: default 
      spec: 
        accessModes: 
        - ReadWriteMany 
        resources: 
          requests: 
            storage: 100Gi 
        volumeName: pv-efs-example

      其中:

      • volume.beta.kubernetes.io/storage-class:文件存储支持的读写方式,支持efs-standard、efs-performance。必须和已有PV保持一致。
      • volume.beta.kubernetes.io/storage-provisioner:必须使用flexvolume-huawei.com/fuxiefs。
      • storage:存储容量,单位Gi,必须和已有pv的storage大小保持一致。
      • volumeName:PV的名称。

  6. 创建PVC。

    kubectl create -f pvc-efs-example.yaml

使用已有PVC创建有状态工作负载

CCE支持使用已有的极速文件存储(SFS Turbo),创建有状态工作负载(StatefulSet)

  1. 参照创建文件存储卷中操作创建极速文件存储卷,记录极速文件存储卷名称。
  2. 请参见通过kubectl或web-terminal插件连接CCE集群配置kubectl命令。
  3. 新建一个文件,用于创建工作负载。假设文件名为efs-statefulset-example.yaml

    touch efs-statefulset-example.yaml

    vi efs-statefulset-example.yaml

    配置示例:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: efs-statefulset-example
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: efs-statefulset-example
      template:
        metadata:
          annotations:
            metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]'
            pod.alpha.kubernetes.io/initialized: 'true'
          labels:
            app: efs-statefulset-example
        spec:
          containers:
            - image: 'nginx:1.0.0'
              name: container-0
              resources:
                requests: {}
                limits: {}
              env:
                - name: PAAS_APP_NAME
                  value: efs-statefulset-example
                - name: PAAS_NAMESPACE
                  value: default
                - name: PAAS_PROJECT_ID
                  value: b18296881cc34f929baa8b9e95abf88b
              volumeMounts:
                - name: efs-statefulset-example
                  mountPath: /tmp
                  readOnly: false
                  subPath: ''
          imagePullSecrets:
            - name: default-secret
          terminationGracePeriodSeconds: 30
          volumes:
            - persistentVolumeClaim:
                claimName: cce-efs-import-jnr481gm-3y5o
              name: efs-statefulset-example
          affinity: {}
          tolerations:
            - key: node.kubernetes.io/not-ready
              operator: Exists
              effect: NoExecute
              tolerationSeconds: 300
            - key: node.kubernetes.io/unreachable
              operator: Exists
              effect: NoExecute
              tolerationSeconds: 300
      podManagementPolicy: OrderedReady
      serviceName: test
      updateStrategy:
        type: RollingUpdate

    其中:

    • spec.template.spec.containers.volumeMounts.name和spec.template.spec.volumes.name有映射关系,必须保持一致。
    • replicas:实例数。
    • name:新建工作负载的名称。
    • image:新建工作负载使用的镜像。
    • mountPath:容器内挂载路径。
    • serviceName:工作负载对应的服务,服务创建过程请参见创建有状态负载(StatefulSet)
    • claimName:已有PVC名称。

  4. 创建有状态工作负载。

    kubectl create -f efs-statefulset-example.yaml

使用kubectl挂载极速文件存储

  1. 执行如下命令,配置名为“efs-pod-example.yaml”的创建Pod的yaml文件。

    touch efs-pod-example.yaml

    vi efs-pod-example.yaml

    在无状态工作负载中基于pvc共享式使用极速文件存储示例:

    apiVersion: extensions/v1beta1  
    kind: Deployment  
    metadata:  
      name: efs-pod-example                                # 工作负载名称 
      namespace: default  
    spec:  
      replicas: 1  
      selector:  
        matchLabels:  
          app: efs-pod-example  
      template:  
        metadata:  
          labels:  
            app: efs-pod-example  
        spec:  
          containers:  
          - image: nginx  
            name: container-0  
            volumeMounts:  
            - mountPath: /tmp                                # 挂载路径 
              name: pvc-efs-example  
          restartPolicy: Always  
          volumes:  
          - name: pvc-efs-example  
            persistentVolumeClaim:  
              claimName: pvc-sfs-auto-example                # 挂载PVC

    其中:

    • name:为创建的Pod名称。
    • app:为Pod工作负载名称。
    • mountPath:为容器内挂载路径,此处示例中为“/tmp”。
    • “spec.template.spec.containers.volumeMounts.name” 和 “spec.template.spec.volumes.name”有映射关系,必须保持一致。

  2. 执行如下命令创建Pod。

    kubectl create -f efs-pod-example.yaml

    创建完成后,在CCE界面“存储管理 > 极速文件存储卷”中单击PVC名称,在PVC详情页面可查看极速文件存储服务和PVC的绑定关系。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问