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

容器服务

复制全文
下载 pdf
NFS 访问方式
通过 NFS 使用 NAS 静态存储卷
复制全文
下载 pdf
通过 NFS 使用 NAS 静态存储卷
本文介绍如何创建文件存储类型存储卷和存储卷声明,以及工作负载如何使用文件存储静态存储卷。​
前提条件​
  • 已安装 csi-nas 组件。详情请参见 csi-nas。​
  • (可选)已在本地安装 kubectl 工具,并通过 kubectl 连接目标集群。详情请参见 连接集群。​
使用限制​
有状态负载需要独占一个卷,暂不支持使用手动创建的存储卷声明。​
通过控制台配置​
步骤一:创建存储卷(PV)​
  1. 在左侧导航栏中,选择 集群。单击目标集群名称,进入集群管理页面。​
  1. 在集群管理页面左侧导航栏中,选择 存储管理 > 存储卷。单击 创建存储卷,配置存储卷。​
  • ​​​
  • ​
    配置项​
    说明​
    创建方式​
    选择存储卷的创建方式,支持 静态创建,即由管理员创建 PV。​
    名称​
    根据系统提示,自定义存储卷的名称。需确保存储卷名称在集群内唯一。​
    存储类型​
    选择存储类型,本场景选择 文件存储 NAS。​
    访问类型​
    存储卷的访问类型,目前支持 NFS。​
    访问模式​
    选择存储卷的访问方式,目前支持 ReadWriteMany,表示多点读写。​
    文件系统类型​
    选择文件存储的文件系统类型。​
    • 极速型:适用于 Linux 时延敏感型应用,例如:中小场景 AI、文件共享、Devops 代码存储。​
    • 容量型:用于存储频繁访问的热数据,例如:数据库备份、日志存储、主目录等通用类文件共享业务。​
    • 缓存型:【邀测】适用于工作负载使用高速文件系统接口进行数据访问场景,例如:机器学习、高性能计算(HPC)等。​
    说明​
    缓存型文件存储在容器服务属于邀测功能但无需额外申请权限;在文件存储 NAS 产品属于邀测特性。若需要使用此功能,需获取文件存储 NAS 的邀测使用权限。​
    项目​
    为存储卷指定所属项目,从项目纬度管理集群资源的运维、授权等操作。默认选择 default(默认项目)。更多项目相关操作和说明,请参见 项目管理。​
    挂载点​
    选择已有 NAS 文件系统下存在,且与集群在同一个私有网络(VPC)内的挂载点。​
    子目录​
    根据系统提示的输入规范,输入待挂载文件系统的子目录信息,默认为根目录/。​
    说明​
    需要保证将要挂载的子目录在 NFS 中已经存在。​
    NFS 版本​
    选择所创建存储卷的网络文件系统(Network File System)版本,请按实际需求选择使用。​
    • 若 文件系统类型 为 极速型,仅支持 NFSv3 版本。​
    • 若 文件系统类型 为 容量型,仅支持 NFSv3 版本。​
    • 若 文件系统类型 为 缓存型,仅支持 NFSv4.1 版本。​
    高级配置​
    ​
    挂载参数​
    配置存储卷挂载参数,支持动态修改,仅对新挂载的存储卷生效,对已挂载的存储卷不生效。详情请参见 存储卷挂载参数。​
    ​
  1. 单击 确定,完成配置。​
步骤二:创建存储卷声明(PVC)​
  1. 在集群管理页面左侧导航栏中, 存储管理 > 存储卷声明。单击 创建存储卷声明,配置存储卷声明。​
  • ​​​
  • ​
    配置项​
    说明​
    命名空间​
    选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述。​
    名称​
    根据系统提示自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。​
    存储类型​
    选择存储类型,本场景选择 文件存储 NAS。​
    访问模式​
    选择存储卷声明的访问方式,目前支持 ReadWriteMany,表示多点读写。​
    计费类型​
    按需选择资源计费类型,目前支持按量计费。​
    文件系统类型​
    选择文件存储的文件系统类型,要求与存储卷中配置的文件系统类型保持一致。​
    • 极速型:适用于 Linux 时延敏感型应用,例如:中小场景 AI、文件共享、Devops 代码存储。​
    • 容量型:用于存储频繁访问的热数据,例如:数据库备份、日志存储、主目录等通用类文件共享业务。​
    • 缓存型:【邀测】适用于工作负载使用高速文件系统接口进行数据访问场景,例如:机器学习、高性能计算(HPC)等。​
    说明​
    缓存型文件存储在容器服务属于邀测功能但无需额外申请权限;在文件存储 NAS 产品属于邀测特性。若需要使用此功能,需获取文件存储 NAS 的邀测使用权限。​
    创建方式​
    存储卷声明的创建方式包括:基于存储类创建、使用已有存储卷。本场景选择 使用已有存储卷。​
    存储卷​
    选择已创建的文件存储类型的存储卷进行关联挂载。​
    ​
  1. 单击 确定,完成配置。​
步骤三:创建应用并挂载存储卷​
文件存储类型的静态存储卷创建完成后,可通过添加卷的方式挂载到工作负载使用,包括:无状态负载、有状态负载、任务、定时任务、守护进程。​
可通过创建工作负载或更新工作负载操作的容器配置步骤,为工作负载添加卷并挂载卷。详细操作,请参见 工作负载。​
​alt​​
通过 kubectl 命令行配置​
步骤一:创建存储卷(PV)​
  1. 创建 PV 的 YAML 文件。示例文件vke-nas-static-pv.yaml代码如下:​
  • ​
    apiVersion: v1​
    kind: PersistentVolume​
    metadata:​
    name: vke-nas-static-pv # 存储卷名称​
    spec:​
    accessModes: ​
    - ReadWriteMany # 存储卷访问方式,仅支持 ReadWriteMany,表示多点读写​
    capacity:​
    storage: 100Gi # 存储卷声明容量,仅用于校验,容量无实际意义​
    csi:​
    driver: nas.csi.volcengine.com # 存储挂载依赖的驱动,本示例为 nas.csi.volcengine.com,表示 csi-nas 插件​
    volumeAttributes:​
    fsType: Extreme # 文件系统类型,取值:Extreme(极速型),Cache(缓存型),Capacity(容量型)​
    fsId: enas-cnsha0*** # NAS 文件系统 ID。仅 fsType 为 Extreme 时需配置此参数,使用其他文件系统类型时必须留空或不做配置​
    server: cnsha0d51***.vpc-3qda7du***.nas.ivolces.com # NAS 文件系统挂载点域名地址​
    volumeAs: subpath # 子目录类型。取值:subpath(子路径)​
    path: /temp # 待挂载文件系统的子目录,默认为根目录 /。当 fsType 为 Extreme 时,需要增加 fsId 路径,例如 /enas-cnsha0***/tmp。​
    volumeHandle: vke-nas-static-pv # PV 的唯一标识符,与存储卷(PV)名称保持一致​
    mountOptions: # 挂载参数,支持动态修改,仅对新挂载的存储卷生效,对已挂载的存储卷不生效​
    - nolock,proto=tcp,noresvport​
    - vers=3 # 挂载存储卷的 NFS 协议版本号。取值:3(NFSv3),极速型和容量型支持使用此版本;4.1(NFSv4.1),缓存型仅支持使用此版本​
    persistentVolumeReclaimPolicy: Retain # 存储卷回收策略。取值:Retain(保留策略),Delete(删除策略)​
    volumeMode: Filesystem # 存储卷类型。取值:Filesystem(将卷作为文件系统使用,会被 Pod 挂载到某个目录);Block(将卷作为块设备使用)​
    ​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    说明​
    accessModes​
    存储卷访问方式,仅支持 ReadWriteMany,表示多点读写,即存储卷仅能被多个 Pod 以读写方式挂载。​
    storage​
    存储卷声明容量,单位为 Gi。该字段为 Kubernetes 必填字段,取值无实际意义,仅用于校验。实际容量仅跟已创建的存储容量有关。​
    driver​
    存储卷挂载依赖的驱动,本文中需要配置为 nas.csi.volcengine.com,表示 csi-nas 插件。​
    fsType​
    已创建的 NFS 文件系统类型,包括:Extreme(极速型),Cache(缓存型),Capacity(容量型)。​
    说明​
    NFS 文件系统类型的说明,请参见 产品简介。​
    fsId​
    已创建的 NFS 文件系统 ID。​
    说明​
    您可以在文件存储控制台,查看已创建的文件系统 ID。详情请参见 查看文件系统。​
    server​
    NAS 文件系统挂载点域名地址。​
    path​
    待挂载文件系统的子目录,默认为根目录/。​
    注意​
    • 请确保该目录存在,否则挂载会失败。​
    • 当fsType为Extreme时,需要增加fsId路径,例如/enas-cnsha0***/tmp。​
    volumeAs​
    指定 NFS 存储的子目录类型,取值:subpath(子路径)。​
    volumeHandle​
    存储卷唯一标识符,与存储卷(PV)的名称保持一致即可。​
    mountOptions​
    存储卷挂载参数,支持动态修改,仅对新挂载的存储卷生效,对已挂载的存储卷不生效。其中,允许使用vers 参数指定挂载存储卷的 NFS 协议版本号。取值:​
    • 3:表示 NFSv3,极速型和容量型支持使用此版本。​
    • 4.1:表示 NFSv4.1,缓存型仅支持使用此版本。​
    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-nas-static-pv.yaml​
    ​
步骤二:创建存储卷声明(PVC)​
  1. 创建 PVC 的 YAML 文件。示例文件vke-nas-static-pvc.yaml代码如下:​
  • ​
    apiVersion: v1​
    kind: PersistentVolumeClaim​
    metadata:​
    name: vke-nas-static-pvc # 存储卷声明名称​
    namespace: default # 存储卷声明所属命名空间​
    spec:​
    accessModes:​
    - ReadWriteMany # 存储卷声明访问模式。目前仅支持 ReadWriteMany,表示多点读写​
    resources:​
    requests:​
    storage: 100Gi # 声明的存储使用量,单位为 Gi,需要与已创建的存储卷容量一致​
    volumeMode: Filesystem # 存储卷类型,取值:Filesystem(将存储卷作为文件系统使用)、Block(将存储卷作为块设备使用),必须与 PV 中配置的类型一致​
    volumeName: vke-nas-static-pv # 已创建的存储卷名称​
    ​
  • 关键参数说明,如下表所示。​
  • ​
    参数​
    说明​
    accessModes​
    存储卷声明的访问方式,仅支持 ReadWriteMany,表示多点读写。​
    storage​
    声明的存储容量,单位为 Gi。需要与已创建的存储卷容量一致。​
    volumeMode​
    存储卷类型,必须与 PV 中配置的类型一致。包括:​
    • Filesystem:(默认值)将存储卷作为文件系统使用。存储卷会被格式化并挂载一个文件系统(如 ext4、xfs),再将该文件系统挂载到容器指定路径。您可以在容器中使用ls命令(例如ls /data)能查看挂载的目录或文件,并可以直接读写文件。​
    • Block:将卷作为块设备使用。直接暴露给容器,不格式化、不挂载文件系统。您可以通过/dev/block/xxx类似的路径操作块设备,应用需支持裸块设备读写。​
    volumeName​
    存储卷名称,必须与 PV 中配置的名称一致。​
    ​
  1. 执行以下命令,创建 PVC。​
  • ​
    kubectl create -f vke-nas-static-pvc.yaml​
    ​
  1. 执行以下命令,查看 PVC 与 PV 的静态绑定结果。​
  • ​
    kubectl get pvc​
    ​
  • 预期输出结果如下,表示 PVC 与 PV 静态绑定成功。​
  • ​
    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS ​
    vke-nas-static-pvc Bound vke-nas-static-pv 100Gi RWX ​
    ​
步骤三:创建应用并挂载存储卷​
  1. 创建 Deployment 的 YAML 文件。示例文件vke-nas-static-deployment.yaml代码如下:​
说明​
如果有使用弹性容器实例 VCI 的需求,需要在spec.template.metadata.annotations中添加 vke.volcengine.com/burst-to-vci: enforce。VCI 具备全托管免运维、按需付费、沙箱容器安全隔离等优势,详细介绍参见 什么是弹性容器实例。​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: vke-nas-static-deployment # Deployment 名称​
    namespace: default​
    labels:​
    app: nginx​
    spec:​
    replicas: 1​
    selector:​
    matchLabels:​
    app: vke-nas-static-deployment​
    template:​
    metadata:​
    labels:​
    app: vke-nas-static-deployment​
    spec:​
    containers:​
    - image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0​
    name: nginx​
    volumeMounts:​
    - mountPath: /tmp # NAS 在容器中挂载的位置​
    name: nas-pv​
    volumes:​
    - name: nas-pv​
    persistentVolumeClaim:​
    claimName: vke-nas-static-pvc # 已创建的 PVC 名称​
    ​
  1. 执行以下命令,创建 Deployment。​
  • ​
    kubectl create -f vke-nas-static-deployment.yaml ​
    ​
结果验证​
按照上文示例创建工作负载并挂载存储卷后,您可以通过以下方式验证存储卷的挂载和持久化存储。​
  1. 执行以下命令,查看存储卷是否正确挂载到 Pod 的指定路径。​
  • ​
    kubectl exec vke-nas-static-deployment-xxx -- df | grep tmp​
    ​
  • 预期返回结果如下。​
  • ​
    cnshbb5***.3qda7du***.nas.ivolces.com:/temp 10995116277760 0 10995116277760 0% /tmp​
    ​
  1. 查看 Pod 中的挂载路径,即查看存储卷中的数据。​
  • ​
    kubectl exec vke-nas-static-deployment-xxx -- ls /tmp​
    ​
  • 预期返回结果如下。​
  • ​
    lost+found​
    ​
  1. 在存储卷中写入文件。​
  • ​
    kubectl exec vke-nas-static-deployment-xxx -- touch /tmp/test​
    ​
  1. 删除 Pod。​
  • ​
    kubectl delete pod vke-nas-static-deployment-xxx​
    ​
  1. 查看新创建 Pod 下的存储卷挂载路径。​
  • ​
    kubectl exec vke-nas-static-deployment-xxx -- ls /tmp​
    ​
  • 预期返回如下,可以看到存储卷中写入的文件依然存在,未随着 Pod 的删除而被删除,实现了数据的持久化存储。​
  • ​
    lost+found ​
    test​
    ​
相关文档​
​
最近更新时间:2026.06.01 16:47:21
这个页面对您有帮助吗?
有用
有用
无用
无用