ECI支持云盘作为数据卷,其采用FlexVolume的方式将阿里云云盘挂载到容器内:FlexVolume.Driver的值设定为:alicloud/disk,标识采用阿里云云盘。
其中数据卷类型为:
- FlexVolume
OpenAPI直接调用方式
对于openapi方式CreateContainerGroup
接口提供了更加灵活的使用云盘作为后端存储的方法:静态&动态。
静态云盘使用场景:
已经购买了云盘实例的情况,希望写入云盘的数据可以在ECI销毁的时候依然保留,如MySql、Redis等,此时可以通过 Options.volumeId参数传入云盘实例ID。
Volume.N.Name=my-disk-volume
Volume.N.Type=FlexVolume
Volume.N.FlexVolume.Driver=alicloud/disk
Volume.N.FlexVolume.FsType=ext4
Volume.N.FlexVolume.Options={"volumeId":"d-2zebuamrpar7xnj****"}
动态云盘使用场景:
ECI实例运行期间对磁盘有较高的IO要求,同时有大量的临时数据需要存放,实例销毁后不需要保存数据,如运行时产生的log文件;可以通过 Options.volumeSize 传入希望随实例一起创建的云盘容量。随实例一起创建云盘同时支持性能等级、加密等参数,详情参考:Options参数说明
Volume.N.Name=my-disk-volume
Volume.N.FlexVolume.Driver=alicloud/disk
Volume.N.FlexVolume.FsType=ext4
Volume.N.FlexVolume.Options={"volumeSize":"200"}
说明 如果给定的云盘未格式化,则系统会自动格式化为 FsType 指定的类型,目前仅支持ext3、ext4、xfs
注意
- 动态创建的云盘默认随ECI实例一起创建,一起销毁。
- 当volumeId为空,volumeSize字段为必填,当2个字段都有值,则volumeSize将被忽略
- 动态创建的云盘默认随ECI实例一起创建,一起销毁。
- 动态创建的云盘默认采用:ESSD云盘,暂不支持指定云盘种类。
- 单ECI实例最大支持挂载6块云盘作为数据卷。
- 同一云盘同一时刻只能挂载在一个ECI/ECS实例中。
示例
-
通过PythonSDK(版本>=1.0.8)创建应用Mysql,其中数据文件保存在
d-2zefzudpm3649e****
的云盘中from aliyunsdkeci.request.v20180808.CreateContainerGroupRequest import CreateContainerGroupRequest request = CreateContainerGroupRequest() request.set_SecurityGroupId(secureGroup-xxx) request.set_VSwitchId(vSwitch-xxx) request.set_ContainerGroupName(name-xxx) request.set_EipInstanceId(eip-xxx) request.set_RestartPolicy('Always') #volumes,第一个为云盘卷,用于保存Mysql数据文件;第二个为ConfigFileVolume,保存配置文件 volume1 = { 'Name': 'mysql-data-volume', 'Type': 'FlexVolume', 'FlexVolume.Driver': 'alicloud/disk' 'FlexVolume.FsType': 'ext4', 'FlexVolume.Options': '{\"volumeId\": \"d-2zefzudpm3649e****\"}', } #Content需要BASE64编码 configFileToPath = { 'Path': 'my.cnf', 'Content': 'aGVsbG8gd29ybGQ=', } volume2 = { 'Name': 'mysql-config-volume', 'Type': 'ConfigFileVolume', 'ConfigFileVolume.ConfigFileToPaths': [configFileToPath], } #安装volume到containerGroup request.set_Volumes([volume1, volume2]) #volumeMounts,挂载containerGroup安装的数据卷到容器的目录 volume_mount1 = { 'Name': 'mysql-data-volume', 'MountPath': '/var/lib/mysql', 'ReadOnly': False, } volume_mount2 = { 'Name': 'mysql-config-volume', 'MountPath': '/etc/mysql/conf.d/', 'ReadOnly': False, } #environment variable env ={ 'Key': 'MYSQL_ROOT_PASSWORD', 'Value': '123456', } #container ports port = { 'Protocol':'TCP', 'Port': 3306, } # containers container = { 'Image': 'mysql:5.7', 'Name': 'mysql', 'Cpu': 0.5, 'Memory': 1.0, 'ImagePullPolicy': 'Always', 'VolumeMounts': [volume_mount1, volume_mount2], 'EnvironmentVars': [env], 'Ports': [port], } request.set_Containers([container]) response = eciClient.do_action_with_exception(request) print response
virtual kubelet方式
详细请参考:云盘(FlexVolume)。
Options参数说明
名称 | 类型 | 必选 | 示例值 | 描述 |
---|---|---|---|---|
volumeId | String | 否 | d-2zebuamrpar7xnjfc810 | 已有云盘实例ID。 |
volumeSize | Integer | 否 | 100 | 单盘容量(GiB),取值范围为:20~32768。动态创建云盘必填参数。 |
performanceLevel | String | 否 | PL1 | 性能等级,参考:云盘性能,动态创建云盘可选参数,默认值:PL1。 |
deleteWithInstance | Boolean | 否 | false | 是否随实例释放,动态创建云盘可选参数,默认值为:true。 |
encrypted | Boolean | 否 | false | 是否加密云盘,动态创建云盘可选参数,默认值:false。
详细请参见:加密云盘。 |
kmsKeyId | 否 | 否 | 2ea91e17-6de6-4b4f-a3ea-0e382cc8199f | 云盘使用的KMS密钥ID。动态创建云盘可选参数。 |
在文档使用中是否遇到以下问题
更多建议
匿名提交