全部产品
Search
文档中心

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

更新时间:Jul 24, 2024

云盘是阿里云提供的数据块级别的存储产品,具有低时延、高性能、持久性、高可靠等特点。通过FlexVolume插件,ECI支持挂载云盘作为数据卷。本文介绍如何为ECI实例挂载云盘数据卷。

使用限制

  • 待挂载的云盘必须是按量付费。更多信息,请参见块存储计费

  • 云盘为非共享存储,一个云盘只能挂载到一个实例上。

  • 一个ECI实例最多可以挂载6个云盘数据卷。

  • 云盘只能挂载到相同可用区的实例上,不支持跨可用区挂载。

  • 不支持挂载开启多重挂载功能的云盘(即NVMe共享盘)。

  • 不支持挂载已创建分区的云盘。

配置说明

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

声明数据卷

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

名称

类型

示例值

描述

Volume.N.Name

String

disk-demo

数据卷名称。

Volume.N.Type

String

FlexVolume

取值为FlexVolume,表示创建一个通过FlexVolume插件挂载的数据卷。

Volume.N.FlexVolume.Driver

String

alicloud/disk

使用FlexVolume插件挂载数据卷时的驱动类型。目前支持alicloud/disk,表示挂载阿里云云盘。

Volume.N.FlexVolume.FsType

String

ext4

文件系统类型。您可以选择以哪种数据类型将数据存储到云盘上,支持的类型包括ext4、ext3、xfs、vfat。默认为ext4。

Volume.N.FlexVolume.Options

String

{"volumeSize":"50","tags":"test:eci"}

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

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

重要

当volumeId为空,volumeSize字段为必填;当volumeId有值时,volumeSize等云盘属性相关参数值均会被忽略。

  • 静态指定已有云盘

    • volumeId:已有云盘ID。

  • 动态创建新的云盘

    • volumeSize:云盘大小,单位为GiB。取值范围为20~32768。

      说明

      如果基于快照创建云盘(配置了snapshotid参数),则实际创建的云盘大小为以下两者的较大值:

      • 此处配置的值

      • 快照来源云盘大小

    • performanceLevel:云盘性能等级。默认采用ESSD云盘,暂不支持指定云盘类型。更多信息,请参见ESSD云盘

    • deleteWithInstance:是否随实例释放云盘,默认为true。

    • encrypted:是否加密云盘,默认为false。更多信息,请参见加密概述

    • kmsKeyId:加密云盘时,云盘使用的KMS密钥ID。

    • tags:云盘要绑定的标签,最多可以绑定20个。格式为"tagkey1:tagvalue1,tagkey2:tagvalue2"

    • snapshotId:快照ID。快照是某一时间点云盘数据状态的备份文件,基于快照创建云盘可以获取快照包含的数据。更多信息,请参见快照概述

      说明

      如果快照来源云盘已创建过分区,则不支持使用该快照创建云盘挂载到ECI实例。

挂载数据卷

声明数据卷后,可以通过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。

配置示例

调用CreateContainerGroup接口创建ECI实例,并为其挂载云盘数据卷。所采用的参数示例如下,更多信息,请参见CreateContainerGroup

  • 示例一:静态

    ContainerGroupName=test-disk1
    SecurityGroupId=sg-bp1daxpbz9lzpvvc****
    VSwitchId=vsw-bp1gds63lmlm7ib05****
    #声明数据卷
    Volume.1.Name=disk-demo
    Volume.1.Type=FlexVolume
    Volume.1.FlexVolume.Driver=alicloud/disk
    Volume.1.FlexVolume.FsType=ext4
    Volume.1.FlexVolume.Options={"volumeId":"d-2zebuamrpar7xnj****"}
    #为容器挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=disk-demo
    Container.1.VolumeMount.1.MountPath=/data
    说明

    静态挂载时,指定的云盘必须处于待挂载状态,且与待创建的ECI实例处于同一可用区。

  • 示例二:动态

    ContainerGroupName=test-disk2
    #声明数据卷
    Volume.1.Name=disk-demo
    Volume.1.Type=FlexVolume
    Volume.1.FlexVolume.Driver=alicloud/disk
    Volume.1.FlexVolume.FsType=ext4
    Volume.1.FlexVolume.Options={"volumeSize":"50","tags":"test:eci"}
    #为容器挂载数据卷
    Container.1.Name=nginx
    Container.1.Image=registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2
    Container.1.VolumeMount.1.Name=disk-demo
    Container.1.VolumeMount.1.MountPath=/data