文档

使用DBFS动态存储卷

更新时间:

数据库文件存储(DBFS),是一款针对数据库场景的云原生共享文件存储服务,支持共享式多点挂载并进行读写。本文介绍如何使用DBFS动态存储卷以及如何验证DBFS存储卷的共享存储特性。

索引

前提条件

注意事项

  • 部分ECS类型不支持DBFS挂载。关于ECS支持说明,请参见ECS支持说明

  • DBFS必须在支持的地域和可用区内使用,且DBFS实例需要与ECS在同一可用区,才可以挂载使用。关于DBFS支持的地域,请参见DBFS支持的地域

  • DBFS存储卷支持同时被多个Pod挂载。

步骤一:创建StorageClass

您可以通过StorageClass存储类模板动态创建DBFS存储卷。

  1. 使用以下内容,创建sc.yaml文件。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-dbfs
    provisioner: dbfsplugin.csi.alibabacloud.com
    parameters:
      category: enterprise  # 替换为您的DBFS版本类型。
      zoneId: cn-hangzhou-i # 替换为您的DBFS可用区。
    reclaimPolicy: Retain
    allowVolumeExpansion: true

    参数

    说明

    name

    StorageClass的名称。

    provisioner

    驱动类型。本示例取值为dbfsplugin.csi.alibabacloud.com,表示使用阿里云DBFS CSI插件创建StorageClass。

    parameters.category

    DBFS版本类型。建议使用企业版(enterprise),该版本类型支持共享挂载给多台ECS使用。

    parameters.zoneId

    DBFS文件系统所在的可用区。

    reclaimPolicy

    DBFS文件系统的回收策略,支持DeleteRetain

    如果数据安全性要求高,推荐使用Retain方式以免误删数据。

    allowVolumeExpansion

    配置为true时,可以实现DBFS存储卷的自动扩容。

  2. 执行以下命令,创建StorageClass。

    kubectl create -f sc.yaml
  3. 查看已创建的StorageClass。

    1. 登录容器服务管理控制台,在左侧导航栏选择集群

    2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储类

      存储类页面,查看已创建的StorageClass。

步骤二:创建PVC

您可以通过创建存储声明PVC,声明所需的DBFS存储卷的大小,并绑定对应的StorageClass。

  1. 使用以下内容,创建pvc.yaml文件。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: dbfs-test
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: alicloud-dbfs

    参数

    说明

    name

    PVC的名称。

    spec.accessModes

    配置访问模式。

    spec.storageClassName

    StorageClass的名称,用于绑定StorageClass。

    resources.requests.storage

    声明DBFS文件系统的大小,最小为20 GiB。

  2. 执行以下命令,创建PVC。

    kubectl create -f pvc.yaml
  3. 执行以下命令,查看PVC状态。

    kubectl get pvc dbfs-test

    预期输出:

    NAME        STATUS   VOLUME                                      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    dbfs-test   Bound    dbfs-54bebeff-2f04-42ed-87ea-95e9ca36****   20Gi       RWX            dbfs-test      10m

步骤三:创建应用并挂载PVC

  1. 使用以下内容,创建deploy.yaml文件。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dbfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: dbfs-test
      template:
        metadata:
          labels:
            app: dbfs-test
        spec:
          containers:
          - image: nginx:latest
            name: main
            volumeMounts:
            - mountPath: /data
              name: data
          volumes:
          - name: data
            persistentVolumeClaim:
              claimName: dbfs-test
  2. 执行以下命令,创建应用并挂载PVC。

    kubectl create -f deploy.yaml
  3. 执行以下命令,确认Pod启动成功。

    kubectl get pod -l app=dbfs-test

    预期输出:

    NAME                         READY   STATUS    RESTARTS   AGE
    dbfs-test-5b5cdb85f****       1/1     Running   0          32s
    dbfs-test-c5bb4746c****       1/1     Running   0          32s

步骤四:验证DBFS存储卷的共享存储

  1. 执行以下命令,查看Pod中的挂载点。

    kubectl exec -it dbfs-test-5b5cdb85f**** -- df 

    预期输出:

    Filesystem     1K-blocks    Used Available Use% Mounted on
    ...
    dbfs_server     19879936  502784  19377152   3% /data
    ...
  2. 执行以下命令,在一个Pod中写入文件。

    kubectl exec -it dbfs-test-5b5cdb85f**** -- sh -c "echo hello > /data/test.txt" 
  3. 执行以下命令,在另一个Pod中读取文件。

    kubectl exec -it dbfs-test-c5bb4746c**** -- cat /data/test.txt

    预期输出:

    hello

    预期输出表明,DBFS存储卷可以实现多个Pod的共享存储。

  • 本页导读 (1)
文档反馈