You need to enable JavaScript to run this app.
导航

使用大数据文件存储静态存储卷

最近更新时间2023.12.21 14:18:58

首次发布时间2023.06.29 16:47:24

大数据文件存储(Cloud File System , 简称 CloudFS)是火山引擎面向大数据和机器学习生态的文件存储和加速服务,支持标准的 HDFS 协议访问和数据湖透明访问模式,为您提供低成本、高性能、高吞吐和高可用的大数据文件访问服务。

容器服务支持通过 CSI 使用大数据文件存储,本文为您介绍如何创建大数据文件存储类型的存储卷和存储卷声明,以及工作负载如何使用大数据文件存储静态存储卷。

说明

邀测·申请试用】该功能目前处于邀测阶段,如需使用,请提交申请。

前提条件

  • 确保当前集群已经安装大数据文件存储服务组件 csi-cloudfs,操作方法参见:安装组件

  • 已经创建数据湖场景的大数据文件存储实例,详细介绍参见:创建大数据文件存储实例

  • (可选)若通过 kubectl 命令行使用,确保本地已经将安装 kubectl 工具。详细操作参见:安装和设置 kubectl

  • (可选)若需要保障 CloudFS 中的数据与存储在 TOS Bucket 中的数据一致性,可为 TOS 配置事件触发规则,然后由 CloudFS 消费事件并根据事件通知自动刷新元数据,详细介绍参见:CloudFS 消费 TOS 事件

使用限制

  • 容器服务目前仅开放数据湖场景,文件存储场景暂未开放。
  • 大数据文件存储服务的地域和可用区支持情况参见:CloudFS 地域和可用区

操作步骤

可根据实际情况选项控制台或 kubectl 命令行方式使用大数据文件存储静态存储卷。

方式一:通过控制台使用

已经登录 容器服务控制台 的情况下,可直接通过控制台使用大数据文件存储静态存储卷。

步骤一:创建存储卷(PV)

  1. 单击目标集群名称,在集群管理页面选择 存储管理 > 存储卷
  2. 在存储卷管理页面,单击 创建存储卷
  3. 在弹出的存储卷创建页面,完成参数配置。

alt

配置项说明
创建方式选择存储卷的创建方式,目前支持 静态创建
名称自定义存储卷的名称,需确保存储卷名称在集群内唯一。
存储类型存储卷类型包括:云盘、文件存储、对象存储、大数据文件存储。本场景选择 大数据文件存储
访问模式存储卷的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。
应用场景大数据文件存储的应用场景,目前仅开放 数据湖场景
文件系统选择已经创建的大数据文件存储,用于存储热数据并提供智能动态更新。
对象存储选择文件系统关联的对象存储,用于数据存储。
  1. 配置完成后,单击 确定,完成存储卷创建。

步骤二:创建存储卷声明(PVC)

  1. 单击目标集群名称,在集群管理页面选择 存储管理 > 存储卷声明
  2. 在存储卷管理页面,单击 创建存储卷声明
  3. 在弹出的存储卷声明创建页面,完成参数配置。

alt

配置项说明
命名空间选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述
名称自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。
存储类型存储类型包括:云盘、文件存储、对象存储、大数据文件存储。本场景选择 大数据文件存储
访问模式存储卷声明的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。
计费类型按需选择资源计费类型,目前仅支持 按量计费
存储卷指定大数据文件存储类型的存储卷进行关联挂载,本场景选择步骤一中创建的存储卷。
  1. 配置完成后,单击 确定,完成存储卷声明创建。

步骤三:工作负载添加卷

大数据文件存储类型的静态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。

可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作参见:工作负载

alt

方式二:通过 kubectl 命令行使用

已经 连接集群 的情况下,可通过 kubectl 命令行使用大数据文件存储静态存储卷。

步骤一:创建存储卷(PV)

  1. 创建 PV 的 YAML 文件。示例文件vke-cfs-static-pv.yaml代码如下:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cfs-static-pv   # PV 名称。
  labels:
    cloudfs-name: cfs-static-fs
spec:
  capacity:
    storage: 10Pi             # 声明的存储容量,Kubernetes 必填字段,但对 CloudFS 没有意义,仅作为校验参数必填。
  volumeMode: Filesystem      # PV 类型。Filesystem:将卷作为文件系统使用,设置为 Filesystem 的卷会被 Pod 挂载到某个目录;Block:将卷作为块设备使用。
  accessModes:                # PV 访问方式。目前仅支持 ReadWriteMany ,表示多点读写。
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain    # PV 回收策略。Retain 表示保留策略,Delete 表示删除策略。
  csi:
    driver: cfs.csi.volcengine.com    # 驱动类型,本示例为 cfs.csi.volcengine.com,表示火山引擎 cloudfs 插件。
    volumeHandle: cfs-static-pv    # PV 的唯一标识符,与 PV 的名称保持一致即可。
    fsType: cloudfs
    volumeAttributes:
       cloudfsConf/cfs.filesystem.fs-mode: ACC    # 应用场景,目前仅支持 ACC。其中,ACC 表示数据湖场景,HDFS 表示文件存储场景。
       cloudfsConf/cfs.filesystem.ns-id: "180143***********"          # 实例列表,可从对象存储获取此 namespace ID。
       cloudfsConf/cfs.filesystem.ufs-path: tos://cloudfs***** /my/   # ns 挂在路径,格式为 tos://<对象存储桶名称>/<对象存储前缀>/ ,若对象存储前缀为空,表示全部。
       cloudfsConf/cfs.filesystem.uri: cfs://csi-fuse*****.cfs-cn-beijing.ivolces.com   # 挂载点,可从获取 CloudFS 详情页中获取。
       cloudfsConf/cfs.client.network.segment: "192.168.0.0/16"       # 文件系统子网网段。
  1. 执行以下命令,创建 PV。
kubectl create -f vke-cfs-static-pv.yaml

步骤二:创建存储卷声明(PVC)

  1. 创建 PVC 的 YAML 文件。示例文件vke-cfs-static-pvc.yaml代码如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cfs-static-pvc       # PVC 名称。
  namespace: default         # PVC 所属的命名空间。
spec:
  accessModes:               # PVC 访问方式。目前仅支持 ReadWriteMany ,表示多点读写。
    - ReadWriteMany
  resources:
    requests:
      storage: 10Pi          # 声明的存储使用量,Kubernetes 必填字段,但对 CloudFS 没有意义,仅作为校验参数必填。
  volumeName: cfs-static-pv  # 绑定到该 PVC 的 PV 名称。
  1. 执行以下命令,创建 PVC。
kubectl create -f vke-cfs-static-pvc.yaml
  1. 执行以下命令,查看 PVC 与 PV 的静态绑定结果。
kubectl get pvc

预期输出结果如下,表示 PVC 与 PV 静态绑定成功。

NAME                 STATUS   VOLUME              CAPACITY   ACCESS MODES   STORAGECLASS   AGE
vke-cfs-static-pvc   Bound    vke-cfs-static-pv    10Pi       RWX                          2m36s

步骤三:创建 Deployment

  1. 创建 Deployment 的 YAML 文件。示例文件deployment-nginx-static.yaml代码如下:

    说明

    • 如果有使用弹性容器实例 VCI 的需求,需要在spec.template.metadata.annotations中添加vke.volcengine.com/burst-to-vci: enforce。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势。详细介绍,请参见 什么是弹性容器实例
    • csi-cloudfs 提供挂载级故障恢复能力,Mount Pod 遭遇故障导致重启或重建 Mount Pod,应用容器也能继续工作。只需在应用 Pod 的volumeMounts中将mountPropagation设置为 HostToContainerBidirectional,即可将宿主机的挂载传播给 Pod,实现挂载级故障恢复。更多介绍参见:挂载卷的传播
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nginx-static
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          annotations:
          # vke.volcengine.com/burst-to-vci: enforce  # 强制使用 VCI,如果有 VCI 需求需要添加本行注解。
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx-c1
            image: cr-cn-beijing.volces.com/****/vci-demo-nginx:latest # 指定需要部署的镜像文件。
            ports:
            - containerPort: 80
              name: nginx
            volumeMounts:
            - name: cloudfs-pv
              mountPath: /data     # cloudfs 在容器中挂载的位置。
              mountPropagation: HostToContainer    # 挂载卷的传播能力。包括:None、HostToContainer、Bidirectional。
          volumes:
            - name: cloudfs-pv
              persistentVolumeClaim:
                claimName: cfs-static-pvc    # 步骤二中创建的 PVC 名称。
    
  2. 执行以下命令创建 Deployment。

kubectl apply -f deployment-nginx-static.yaml

相关文档