You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
大数据文件存储(CloudFS)
使用 CloudFS 静态存储卷
复制全文
下载 pdf
使用 CloudFS 静态存储卷
大数据文件存储(Cloud File System , 简称 CloudFS)是面向大数据和机器学习生态的文件存储和加速服务,支持标准的 HDFS 协议访问和数据湖透明访问模式,为您提供低成本、高性能、高吞吐和高可用的大数据文件访问服务。​
容器服务支持通过 CSI 使用大数据文件存储,本文为您介绍如何创建大数据文件存储类型的存储卷和存储卷声明,以及工作负载如何使用大数据文件存储静态存储卷。​
说明​
【邀测·申请试用】该功能目前处于邀测阶段,如需使用,请提交申请。​
前提条件​
  • 已安装 csi-cloudfs 组件。详情请参见 安装组件。​
  • 已创建对象存储(TOS)存储桶。详情请参见 创建存储桶。​
  • (可选)若通过 kubectl 命令行使用,确保本地已经将安装 kubectl 工具。详细操作参见 安装和设置 kubectl。​
使用限制​
  • 容器服务目前仅开放数据湖场景,文件存储场景暂未开放。​
通过控制台配置​
步骤一:创建存储卷(PV)​
  1. 在左侧导航栏中,选择 集群,单击目标集群名称,进入集群管理页面。​
  1. 在集群管理页面左侧导航栏中,选择 存储管理 > 存储卷,单击 创建存储卷,完成存储卷配置。​
  • ​​​
  • ​
    配置项​
    说明​
    创建方式​
    选择存储卷的创建方式,目前支持 静态创建。​
    名称​
    自定义存储卷的名称,需确保存储卷名称在集群内唯一。​
    存储类型​
    选择存储类型,本场景选择 大数据文件存储。​
    访问模式​
    存储卷的访问方式,目前仅支持 ReadWriteMany,表示多点读写。​
    应用场景​
    大数据文件存储的应用场景,目前仅开放 数据湖场景。​
    文件系统​
    选择已经创建的大数据文件存储,用于存储热数据并提供智能动态更新。​
    对象存储​
    选择文件系统关联的对象存储,用于数据存储。​
    ​
  1. 单击 确定,完成配置。​
步骤二:创建存储卷声明(PVC)​
  1. 在集群管理页面左侧导航栏中,选择 存储管理 > 存储卷声明。​
  1. 单击 创建存储卷声明,完成存储卷声明配置。​
  • ​​​
  • ​
    配置项​
    说明​
    命名空间​
    选择存储卷声明所属的命名空间。建议选择您自定义的命名空间或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。​
    名称​
    自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。​
    存储类型​
    选择存储类型,本场景选择 大数据文件存储。​
    访问模式​
    存储卷声明的访问方式,目前支持 ReadWriteMany,表示多点读写。​
    计费类型​
    选择资源计费类型,目前仅支持 按量计费。​
    存储卷​
    选择已创建的大数据文件存储类型存储卷进行关联挂载。​
    ​
  1. 单击 确定,完成配置。​
步骤三:创建应用并挂载存储卷​
存储卷创建完成后,支持挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。​
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作参见:工作负载。​
​​​
通过 kubectl 命令行配置​
已经 连接集群 的情况下,可通过 kubectl 命令行配置大数据文件存储静态存储卷。​
步骤一:创建存储卷(PV)​
  1. 创建 PV 的 YAML 文件。示例文件vke-cfs-static-pv.yaml代码如下:​
  • ​
    apiVersion: v1​
    kind: PersistentVolume​
    metadata:​
    name: cfs-static-pv # 存储卷名称​
    labels:​
    cloudfs-name: cfs-static-fs​
    spec:​
    capacity:​
    storage: 10Pi # 存储卷容量,Kubernetes 必填字段,仅用于校验,容量无实际意义​
    accessModes: ​
    - ReadWriteMany # 存储卷访问方式,仅支持 ReadWriteMany,表示多点读写​
    csi:​
    driver: cfs.csi.volcengine.com # 存储挂载依赖的驱动,本示例为 cfs.csi.volcengine.com,表示 cloudfs 插件​
    fsType: cloudfs​
    volumeAttributes:​
    cloudfsConf/cfs.filesystem.fs-mode: ACC # 应用场景,当前仅支持 ACC(数据湖场景)​
    cloudfsConf/cfs.filesystem.ns-id: "540431955***" # 实例列表,可从对象存储获取此 namespace ID​
    cloudfsConf/cfs.filesystem.ufs-path: tos://tos-doc-demo/ # ns 挂载路径,格式为 tos://<对象存储桶名称>/<对象存储前缀>/ ,若对象存储前缀为空,表示全部​
    cloudfsConf/cfs.filesystem.uri: cfs://demo.cfs-cn-shanghai.cfs.ivolces.com # 大数据文件存储实例的挂载地址​
    cloudfsConf/cfs.client.network.segment: "192.168.2.0/24" # 大数据文件存储实例所在子网网段​
    volumeHandle: cfs-static-pv # PV 的唯一标识符,与 PV 的名称保持一致​
    persistentVolumeReclaimPolicy: Retain # 存储卷回收策略。取值:Retain(保留策略),Delete(删除策略)​
    volumeMode: Filesystem # 存储卷类型。取值:Filesystem(将卷作为文件系统使用,会被 Pod 挂载到某个目录),Block(将卷作为块设备使用)​
    ​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    说明​
    storage​
    存储卷声明容量,单位为 Gi。该字段为 Kubernetes 必填字段,取值无实际意义,仅用于校验。实际容量仅跟已创建的存储容量有关。​
    accessModes​
    存储卷访问方式,仅支持 ReadWriteMany,表示多点读写,即存储卷仅能被多个 Pod 以读写方式挂载。​
    driver​
    存储卷挂载依赖的驱动,本文中需要配置为 cfs.csi.volcengine.com,表示 cloudfs 插件。​
    fsType​
    存储卷类型,本例中需配置为 cloudfs。​
    cloudfsConf/cfs.filesystem.fs-mode​
    CloudFS 存储应用场景,仅支持配置为 ACC,即数据湖场景。​
    cloudfsConf/cfs.filesystem.ns-id​
    实例列表,可从对象存储获取此 namespace ID。​
    cloudfsConf/cfs.filesystem.ufs-path​
    ns 挂载路径,格式为tos://<对象存储桶名称>/<对象存储前缀>/ 。若对象存储前缀为空,表示全部。​
    cloudfsConf/cfs.filesystem.uri​
    大数据文件存储实例的挂载地址。您可以从大数据文件存储实例的详情页中获取。​
    cloudfsConf/cfs.client.network.segment​
    大数据文件存储实例所在子网网段。​
    persistentVolumeReclaimPolicy​
    存储卷回收策略。包括:​
    • Retain:保留策略,即当绑定该 PV 的 PVC 被删除时,保留该 PV。​
    • Delete:删除策略,即当绑定该 PV 的 PVC 被删除时,同步删除该 PV。​
    volumeMode​
    存储卷类型,包括:​
    • Filesystem:(默认值)将存储卷作为文件系统使用。存储卷会被格式化并挂载一个文件系统(如 ext4、xfs),再将该文件系统挂载到容器指定路径。您可以在容器中使用ls命令(例如ls /data)能查看挂载的目录或文件,并可以直接读写文件。​
    • Block:将存储卷作为块设备使用。直接暴露给容器,不格式化、不挂载文件系统。您可以通过/dev/block/xxx 类似的路径操作块设备,应用需支持裸块设备读写。​
    ​
  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 # 存储卷声明名称​
    namespace: default # 存储卷声明所属命名空间​
    spec:​
    accessModes:​
    - ReadWriteMany # 存储卷访问模式。仅支持 ReadWriteMany,表示多点读写​
    resources:​
    requests:​
    storage: 10Pi # 声明的存储使用量,Kubernetes 必填字段,需要与已创建的存储卷容量一致​
    volumeName: cfs-static-pv # 已创建的存储卷名称​
    ​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    参数​
    说明​
    accessModes​
    存储卷声明的访问方式,仅支持 ReadWriteMany,表示多点读写。​
    storage​
    声明的存储容量,需要与已创建的存储卷容量一致。​
    volumeName​
    存储卷名称,必须与 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​
    ​
步骤三:创建应用并挂载存储卷​
  1. 创建 Deployment 的 YAML 文件。示例文件deployment-nginx-static.yaml代码如下:​
说明​
csi-cloudfs 提供挂载级故障恢复能力,Mount Pod 遭遇故障导致重启或重建 Mount Pod,应用容器也能继续工作。只需在应用 Pod 的volumeMounts中将mountPropagation设置为 HostToContainer 或 Bidirectional,即可将宿主机的挂载传播给 Pod,实现挂载级故障恢复。更多介绍参见:挂载卷的传播。​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: deployment-nginx-static​
    spec:​
    selector:​
    matchLabels:​
    app: nginx​
    template:​
    metadata:​
    labels:​
    app: nginx​
    spec:​
    containers:​
    - name: nginx​
    image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 指定需要部署的镜像文件​
    ports:​
    - containerPort: 80​
    name: nginx​
    volumeMounts:​
    - name: cloudfs-pv​
    mountPath: /tmp # cloudfs 在容器中挂载的位置​
    mountPropagation: HostToContainer # 挂载卷的传播能力。包括:None、HostToContainer、Bidirectional​
    volumes:​
    - name: cloudfs-pv​
    persistentVolumeClaim:​
    claimName: cfs-static-pvc # 已创建的 PVC 名称​
    ​
  1. 执行以下命令,创建 Deployment。​
  • ​
    kubectl apply -f deployment-nginx-static.yaml​
    ​
结果验证​
按照上文示例创建工作负载并挂载存储卷后,您可以通过以下方式验证存储卷的挂载和持久化存储。​
  1. 执行以下命令,查看存储卷是否正确挂载到 Pod 的指定路径。​
  • ​
    kubectl exec deployment-nginx-static-xxx -- df | grep tmp​
    ​
  • 预期返回结果如下。​
  • ​
    demo.cfs-***.cfs.ivolces.com:/ 10995116277760 0 10995116277760 0% /tmp​
    ​
  1. 查看 Pod 中的挂载路径,即查看存储卷中的数据。​
  • ​
    kubectl exec deployment-nginx-static-xxx -- ls /tmp​
    ​
  • 预期返回结果如下。​
  • ​
    lost+found​
    ​
  1. 在存储卷中写入文件。​
  • ​
    kubectl exec deployment-nginx-static-xxx -- touch /tmp/test​
    ​
  1. 删除 Pod。​
  • ​
    kubectl delete pod deployment-nginx-static-xxx​
    ​
  1. 查看新创建 Pod 下的存储卷挂载路径。​
  • ​
    kubectl exec deployment-nginx-static-xxx -- ls /tmp​
    ​
  • 预期返回如下,可以看到存储卷中写入的文件依然存在,未随着 Pod 的删除而被删除,实现了数据的持久化存储。​
  • ​
    lost+found ​
    test​
    ​
相关文档​
​
最近更新时间:2026.04.07 11:49:49
这个页面对您有帮助吗?
有用
有用
无用
无用