大数据文件存储(Cloud File System , 简称 CloudFS)是火山引擎面向大数据和机器学习生态的文件存储和加速服务,支持标准的 HDFS 协议访问和数据湖透明访问模式,为您提供低成本、高性能、高吞吐和高可用的大数据文件访问服务。
容器服务支持通过 CSI 使用大数据文件存储,本文为您介绍如何创建大数据文件存储类型的存储卷和存储卷声明,以及工作负载如何使用大数据文件存储静态存储卷。
说明
【邀测·申请试用】该功能目前处于邀测阶段,如需使用,请提交申请。
确保当前集群已经安装大数据文件存储服务组件 csi-cloudfs,操作方法参见:安装组件。
已经创建数据湖场景的大数据文件存储实例,详细介绍参见:创建大数据文件存储实例。
(可选)若通过 kubectl 命令行使用,确保本地已经将安装 kubectl 工具。详细操作参见:安装和设置 kubectl。
(可选)若需要保障 CloudFS 中的数据与存储在 TOS Bucket 中的数据一致性,可为 TOS 配置事件触发规则,然后由 CloudFS 消费事件并根据事件通知自动刷新元数据,详细介绍参见:CloudFS 消费 TOS 事件 。
可根据实际情况选择控制台或 kubectl 命令行方式使用大数据文件存储静态存储卷。
已经登录 容器服务控制台 的情况下,可直接通过控制台使用大数据文件存储静态存储卷。
配置项 | 说明 |
---|---|
创建方式 | 选择存储卷的创建方式,目前支持 静态创建。 |
名称 | 自定义存储卷的名称,需确保存储卷名称在集群内唯一。 |
存储类型 | 存储卷类型包括:云盘、文件存储、对象存储、大数据文件存储。本场景选择 大数据文件存储。 |
访问模式 | 存储卷的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。 |
应用场景 | 大数据文件存储的应用场景,目前仅开放 数据湖场景。 |
文件系统 | 选择已经创建的大数据文件存储,用于存储热数据并提供智能动态更新。 |
对象存储 | 选择文件系统关联的对象存储,用于数据存储。 |
配置项 | 说明 |
---|---|
命名空间 | 选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。 |
名称 | 自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。 |
存储类型 | 存储类型包括:云盘、文件存储、对象存储、大数据文件存储。本场景选择 大数据文件存储。 |
访问模式 | 存储卷声明的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。 |
计费类型 | 按需选择资源计费类型,目前仅支持 按量计费。 |
存储卷 | 指定大数据文件存储类型的存储卷进行关联挂载,本场景选择步骤一中创建的存储卷。 |
大数据文件存储类型的静态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作参见:工作负载。
已经 连接集群 的情况下,可通过 kubectl 命令行使用大数据文件存储静态存储卷。
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" # 文件系统子网网段。
kubectl create -f vke-cfs-static-pv.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 名称。
kubectl create -f vke-cfs-static-pvc.yaml
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 的 YAML 文件。示例文件deployment-nginx-static.yaml
代码如下:
说明
spec.template.metadata.annotations
中添加vke.volcengine.com/burst-to-vci: enforce
。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势。详细介绍,请参见 什么是弹性容器实例。volumeMounts
中将mountPropagation
设置为 HostToContainer 或 Bidirectional,即可将宿主机的挂载传播给 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 名称。
执行以下命令创建 Deployment。
kubectl apply -f deployment-nginx-static.yaml