全部产品
Search
文档中心

弹性容器实例:为ECI实例挂载NAS数据卷

更新时间:Jul 25, 2024

NAS是阿里云提供的一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。本文介绍如何为ECI实例挂载NAS数据卷。

注意事项

  • NAS按照使用量进行计费,支持按量付费、资源包和SCU付费方式。更多信息,请参见NAS计费概述

  • NAS文件系统必须和实例处于同一VPC内。

  • NAS为共享存储,一个NAS可以挂载到多个实例上。此时,如果多个实例同时修改相同数据,需要应用自行执行数据同步。

  • 在卸载NAS前,请勿删除NAS挂载点,否则可能会造成操作系统无响应。

准备工作

使用阿里云文件存储NAS作为数据卷前,请先创建NAS文件系统和挂载点。具体操作,请参见创建文件系统管理挂载点

配置说明(OpenAPI)

调用CreateContainerGroup接口创建ECI实例时,您可以通过Volume相关参数声明数据卷,然后通过Container.VolumeMount相关参数为容器挂载数据卷。相关参数说明如下,更多信息,请参见CreateContainerGroup

声明数据卷

通过Volume相关参数声明数据卷时,需要先明确Volume的名称和类型。再根据Volume.N.Type的取值,进一步配置该类型数据卷的相关参数。

声明NAS数据卷时,支持以下两种方式:

  • 挂载NFS类型的数据卷

    名称

    类型

    示例值

    描述

    Volume.N.Name

    String

    nas-demo

    数据卷名称。

    Volume.N.Type

    String

    NFSVolume

    取值为NFSVolume,表示创建一个NFS类型的数据卷。

    Volume.N.NFSVolume.Server

    String

    3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com

    NFS服务器地址。

    如果使用阿里云文件存储NAS,则此处为NAS文件系统的挂载点地址。

    Volume.N.NFSVolume.Path

    String

    /share

    NFS数据卷路径。

    Volume.N.NFSVolume.ReadOnly

    Boolean

    false

    NFS数据卷的读取权限。取值范围:

    • true:只读

    • false:可读可写

    默认为false。

  • 通过FlexVolume插件挂载数据卷

    名称

    类型

    示例值

    描述

    Volume.N.Name

    String

    nas-demo

    数据卷名称。

    Volume.N.Type

    String

    FlexVolume

    取值为FlexVolume,表示通过FlexVolume插件挂载数据卷。

    Volume.N.FlexVolume.Driver

    String

    alicloud/nas

    使用FlexVolume插件挂载数据卷时的驱动类型。取值为alicloud/nas时,表示挂载阿里云文件存储NAS。

    Volume.N.FlexVolume.Options

    String

    {"server":"3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com","path": "/share","vers":"3","options":"nolock,tcp,noresvport"}

    FlexVolume对象选项列表。为KV形式,采用JSON传递。

    通过FlexVolume挂载NAS时,Options表示NAS数据卷的配置参数,可配置的参数如下:

    • server:NAS的挂载点地址。

    • path:NAS路径下的子目录,以 / 开头。

      • 请填写NAS中已存在的子目录。如果NAS根目录下没有此子目录,会在创建后再挂载。

      • 极速型NAS的子目录需要以/share开头。

      • 可以不填此项,默认挂载到NAS根目录。

    • vers:挂载NAS的NFS协议版本号。推荐使用v3,极速型NAS仅支持v3。

    • options:挂载NAS时定制化参数,格式为"xxx,xxx,xxx",例如nolock,tcp,noresvport

挂载数据卷

声明数据卷后,可以通过VolumeMount相关参数将数据卷挂载到容器中。

名称

类型

示例值

描述

Container.N.VolumeMount.N.Name

String

test-volume

要挂载到容器的数据卷的名称,对应Volume.N.Name的值。

Container.N.VolumeMount.N.MountPath

String

/usr/share

挂载目录。

容器挂载目录下的内容会被数据卷的内容直接覆盖,请准确填写。

Container.N.VolumeMount.N.SubPath

String

/usr/sub

数据卷下的子目录。方便实例将同一个数据卷下的不同目录挂载到容器的不同目录。

Container.N.VolumeMount.N.ReadOnly

Boolean

false

挂载目录是否只读。默认为false。

Container.N.VolumeMount.N.MountPropagation

String

None

数据卷的挂载传播设置。挂载传播允许将容器挂载的卷共享到同一ECI实例中的其他容器,甚至可以共享到同一宿主机上的其他ECI实例。取值范围:

  • None:该卷不感知任何后续在此卷或其子目录上执行的挂载操作。

  • HostToContainer:该卷将会感知到后续在此卷或其子目录上的挂载操作。

  • Bidirectional:和HostToContainer类似,能感知挂载操作。另外,该卷将被传播回宿主机和使用同一卷的所有ECI实例的所有容器。

默认值:None。

说明

Init容器也支持挂载数据卷,参数与上表类似,只需要将Container改为InitContainer。

配置说明(控制台)

通过弹性容器实例售卖页创建ECI实例时,您可以在容器组配置区域声明数据卷,然后在容器配置区域,将数据卷挂载到容器中。

声明数据卷

  1. 容器组配置区域,展开高级配置

  2. 存储处选择NAS持久化存储页签,单击添加

  3. 配置NAS数据卷的相关参数。

    • 名称:NAS数据卷的名称。

    • 挂载点:NAS文件系统的挂载点。

    • Path:NAS文件系统中要挂载的路径。

    • 只读:数据读取权限。默认可读可写,可按需选中只读。

    nas

挂载数据卷

  1. 容器配置区域选择容器,展开该容器的高级配置。

  2. 打开存储开关后单击添加。

    此处可添加的数据卷为配置容器组时声明的数据卷。

    nas2

说明

如果要为多个容器挂载数据卷,请选择其他容器,重复上述操作。

配置示例

  1. 创建一台ECI实例A,并为其挂载NAS数据卷。

    调用CreateContainerGroup接口创建实例A所采用的参数示例如下,更多信息,请参见CreateContainerGroup

    ContainerGroupName=test-nas-a
    SecurityGroupId=sg-bp1daxpbz9lzpvvc****
    VSwitchId=vsw-bp1gds63lmlm7ib05****
    #声明数据卷
    Volume.1.Name=nas-demo
    Volume.1.Type=NFSVolume
    Volume.1.NFSVolume.Server=3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com
    Volume.1.NFSVolume.Path=/share
    #为容器挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=nas-demo
    Container.1.VolumeMount.1.MountPath=/data-a
  2. 连接实例A,在挂载目录下新增一个文件。

    关于如何连接ECI实例,请参见连接ECI实例

    nas3

  3. 删除实例A。

  4. 创建一台ECI实例B,并为其挂载同一个NAS数据卷。

    ContainerGroupName=test-nas-b
    SecurityGroupId=sg-bp1daxpbz9lzpvvc****
    VSwitchId=vsw-bp1gds63lmlm7ib05****
    #声明数据卷
    Volume.1.Name=nas-demo
    Volume.1.Type=FlexVolume
    Volume.1.FlexVolume.Driver=alicloud/nas
    Volume.1.FlexVolume.Options={"server":"3f9cd4****-na***.cn-shanghai.nas.aliyuncs.com","path": "/share"}
    #为容器挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=nas-demo
    Container.1.VolumeMount.1.MountPath=/data-b
  5. 连接实例B,确认挂载目录下的文件。

    由于实例A与实例B挂载了同一个NAS数据卷,且NAS数据卷是持久化存储,因此删除实例A后,仍可以通过实例B,获取NAS中通过实例A新增的文件。

    nas4