You need to enable JavaScript to run this app.
导航
使用 NAS 文件存储静态存储卷
最近更新时间:2024.09.13 17:39:30首次发布时间:2022.03.04 23:10:39

本文介绍如何创建文件存储类型存储卷和存储卷声明,以及工作负载如何使用文件存储静态存储卷。

前提条件

  • 已创建容器服务集群,操作方法参见 创建集群
  • 确保当前集群已安装文件存储服务组件 csi-nas。操作方法,请参见 安装组件

使用限制

有状态负载需要独占一个卷,暂不支持使用手动创建的存储卷声明。

通过控制台使用

使用文件存储类型静态存储卷的详细操作步骤和参数配置如下:

步骤一:登录集群管理页面

  1. 登录 容器服务控制台
  2. 在容器服务的左侧导航栏,选择 集群
  3. 单击目标集群名称,进入集群管理页面。

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

  1. 在集群管理页面,选择 存储管理 > 存储卷
  2. 单击存储卷列表左上角 创建存储卷
  3. 在弹出的 创建存储卷 页面,完成参数配置。

alt

配置项说明
创建方式选择存储卷的创建方式,支持 静态创建,即由管理员创建 PV。
名称根据系统提示,自定义存储卷的名称。需确保存储卷名称在集群内唯一。
存储卷类型存储卷类型包括:云盘、文件存储、对象存储。本场景选择 文件存储
访问模式选择存储卷的访问方式,目前支持 ReadWriteMany ,此访问方式支持多点读写。

文件系统类型

按需选择文件存储的文件系统类型。

  • 极速型:适用于 Linux 时延敏感型应用,例如:中小场景 AI、文件共享、Devops 代码存储。

  • 缓存型:【邀测】适用于工作负载使用高速文件系统接口进行数据访问场景,例如:机器学习、高性能计算(HPC)等。

说明

缓存型文件存储在容器服务属于邀测功能但无需额外申请权限;在文件存储 NAS 产品属于邀测特性。若需要使用此功能,需获取文件存储 NAS 的邀测使用权限。

  • 容量型:用于存储频繁访问的热数据,例如:数据库备份、日志存储、主目录等通用类文件共享业务。
挂载点选择已有 NAS 文件系统下存在,且与集群在同一个私有网络(VPC)内的挂载点。

子目录

根据系统提示的输入规范,输入待挂载文件系统的子目录信息,默认为根目录/

说明

需要保证将要挂载的子目录在 NFS 中已经存在。

NFS 版本

选择所创建存储卷的网络文件系统(Network File System)版本,请按实际需求选择使用。

  • 若文件系统类型为极速型,仅支持 NFSv3 版本。
  • 若文件系统类型为容量型,仅支持 NFSv3 版本。
  • 若文件系统类型为缓存型,仅支持 NFSv4.1 版本。
  1. 配置完成后,单击 确定,完成存储卷创建。

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

  1. 在集群管理页面,选择 存储管理 > 存储卷声明
  2. 单击存储卷列表左上角 创建存储卷声明
  3. 在弹出的 创建存储卷声明 页面,完成参数配置。

alt

配置项说明
命名空间选择存储卷声明所属的命名空间。建议选择您自定义的命名空间,或系统默认创建的 default 命名空间。命名空间相关介绍,请参见 命名空间概述
名称根据系统提示自定义存储卷声明的名称,需确保存储卷声明名称在集群内唯一。
存储类型存储类型包括:云盘、文件存储、对象存储。本场景选择 文件存储
访问模式选择存储卷声明的访问方式,目前支持 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  # PV 名称。
    spec:
      accessModes:  # 存储卷的访问方式,目前仅支持 ReadWriteMany(多点读写)。
      - ReadWriteMany
      capacity:
        storage: 100Gi # NAS 存储容量。  
      csi:
        driver: nas.csi.volcengine.com  # 驱动类型,本示例为`nas.csi.volcengine.com`,表示火山引擎 csi-nas 插件。
        volumeAttributes:
          fsId: enas-cnbj1b9f********  # NAS 文件系统 ID,仅当文件系统类型为极速型时需要配置。
          fsType: Extreme   # 文件系统类型,Extreme:极速型;Cache:缓存型;Capcity:容量型。
          path: /enas-cnbj1b9f********/temp  # NAS 文件系统挂载子目录。
          server: cnbj1b9f********.r*********.nas.ivolces.com  # NAS 文件系统挂载点地址。
          volumeAs: subpath  # 创建的子目录类型。subpath:子路径;filesystem:文件系统。
        volumeHandle: vke-nas-static-pv  # PV 的唯一标识符,与 PV 名称保持一致。如需同时使用多个 PV,则各个 PV 中该值必须不一致。
      mountOptions:
      - nolock,proto=tcp,noresvport
      - vers=3  # 挂载 NAS 数据卷的 NFS 协议版本号。3 表示 NFSv3,极速型和容量型支持使用此版本;4.1 表示 NFSv4.1,缓存型仅支持使用此版本。
      persistentVolumeReclaimPolicy: Retain  # PV 回收策略。Retain:保留策略,Delete:删除策略。
      volumeMode: Filesystem  # PV 类型。Filesystem:将卷作为文件系统使用,设置为 Filesystem 的卷会被 Pod 挂载到某个目录;Block:将卷作为块设备使用。
    

2.执行以下命令,创建 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  # PVC 名称。
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany  # PVC 访问模式。目前仅支持 ReadWriteMany ,表示多点读写。
      resources:
        requests:
          storage: 100Gi  # 声明的存储使用量。
      volumeMode: Filesystem  # PV 类型,本示例填写 Filesystem,表示文件存储。
      volumeName: vke-nas-static-pv  # 绑定到该 PVC 的 PV 名称。
    
  2. 执行以下命令,创建 PVC。
    kubectl create -f vke-nas-static-pvc.yaml
    
  3. 执行以下命令,查看 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                        
    

步骤三:创建 Deployment

  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: nginx
            imagePullPolicy: IfNotPresent
            name: nginx
            volumeMounts:
            - mountPath: /tmp  # NAS 在容器中挂载的位置。
              name: nas-pv
          volumes:
          - name: nas-pv
            persistentVolumeClaim:
              claimName: vke-nas-static-pvc  # 步骤二中创建的 PVC 名称。
    
  2. 执行以下命令,创建 Deployment。
    kubectl create -f vke-nas-static-deployment.yaml 
    

相关文档