调用UpdateContainerGroup更新实例。

接口说明

1、目前只支持Pending、Running状态的ECI的更新操作。

2、创建时间早于2019.03.07 15:00:00 的ECI暂时不支持更新操作。

3、目前不支持容器组规格变配,仅支持在不影响容器组规格的情况下,容器级别的规格变动,否则会提示非法。

4、更新中的ECI的状态为:Updating。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String UpdateContainerGroup

系统规定参数。取值:UpdateContainerGroup。

ContainerGroupId String eci-xxx

指定需要更新的容器组ID。

RegionId String cn-hangzhou

实例所属地域ID。

RestartPolicy String Always

容器组的重启策略。

Tag.N.Key String name

标签键。

Tag.N.Value String hxh

标签值。

Volume.N.Name String test-empty

数据卷名称。

Volume.N.Type String EmptyDirVolume

数据卷类型,可选值为:EmptyDirVolume、NFSVolume、ConfigFileVolume三种。

Volume.N.NFSVolume.Server String 0eaf24bfc1-xxxxx.cn-hangzhou.nas.aliyuncs.com

NFS 服务器地址。

Volume.N.NFSVolume.Path String /

NFS数据卷路径。

Volume.N.NFSVolume.ReadOnly Boolean false

默认为false。

Volume.N.ConfigFileVolume.ConfigFileToPath.N.Content String bGl1bWk=

配置文件内容 (32KB)。

Volume.N.ConfigFileVolume.ConfigFileToPath.N.Path String liu/name

相对文件路径。

Volume.N.EmptyDirVolume.Medium String Memory

EmptyDirVolume的存储媒介,默认为空,使用node文件系统;支持 Memory,表示使用内存。

DnsConfig.NameServer.N RepeatList 1.2.3.4

DNS 服务器 IP 地址列表。

DnsConfig.Search.N RepeatList my.dns.search.suffix

DNS 搜索域列表。

DnsConfig.Option.N.Name String ndots

选项变量名。

DnsConfig.Option.N.Value String 2

选项变量值。

Container.N.Name String jenkins

容器名称。

Container.N.Image String jenkins

容器镜像。

Container.N.Cpu Float 1.0

容器CPU大小。

Container.N.Memory Float 2.0

容器内存大小。

Container.N.WorkingDir String /usr/share/

容器的工作目录。

Container.N.ImagePullPolicy String Never

容器镜像拉取策略。

Container.N.Stdin Boolean false

此容器是否应在容器运行时为标准输入分配缓冲区。如果未设置,则容器中标准输入的读取值将导致EOF。默认为false。

Container.N.StdinOnce Boolean true

当标准输入为 true时,标准输入流将在多个附加会话中保持开启状态。如果StdinOnce设为 true,标准输入在容器开启时被打开,在首个客户端附加到标准输入之前都为空,然后会一直保持开启状态,接收数据,直到客户端连接断开,此时标准输入被关闭,在容器重启前一直保持关闭状态。

Container.N.Tty Boolean false

是否开启交互,默认为false,例如Command为 [“/bin/bash”] 时,需要设置为true

Container.N.Command.N RepeatList echo

容器启动命令,上限20,单个String,256个字符。

Container.N.Arg.N RepeatList hello

容器启动参数,上限10。

Container.N.EnvironmentVar.N.Key String PATH

容器环境变量名。

Container.N.EnvironmentVar.N.Value String /usr/bin/local/

容器环境变量值。

Container.N.Port.N.Protocol String TCP

TCP/UDP。

Container.N.Port.N.Port Integer 8080

端口号 1-65535。

Container.N.VolumeMount.N.Name String test-empty

数据卷名称,同 Volume 中的 Name。

Container.N.VolumeMount.N.MountPath String /usr/share/

挂载目录,容器的挂载目录下的内容被volume的内容直接覆盖,所以要慎用。

Container.N.VolumeMount.N.SubPath String /usr/share/sub/

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

Container.N.VolumeMount.N.ReadOnly Boolean false

默认值为 false。

Container.N.ReadinessProbe.TcpSocket.Port Integer 5000

TcpSocket检测的端口。

Container.N.ReadinessProbe.Exec.Command.N RepeatList [/bin/sh cat /tmp/healthy]

容器内检测的命令。

Container.N.ReadinessProbe.HttpGet.Path String /usr/

HttpGet检测的路径。

Container.N.ReadinessProbe.HttpGet.Port Integer 8080

HttpGet检测的端口号。

Container.N.ReadinessProbe.HttpGet.Scheme String HTTP

HTTP/HTTPS 。

Container.N.ReadinessProbe.InitialDelaySeconds Integer 10

检查开始执行的时间,以容器启动完成为起点计算。

Container.N.ReadinessProbe.PeriodSeconds Integer 10

检查执行的周期,默认为10秒,最小为1秒。

Container.N.ReadinessProbe.SuccessThreshold Integer 3

从上次检查失败后重新认定检查成功的检查次数阈值(必须是连续成功),默认为1。

Container.N.ReadinessProbe.FailureThreshold Integer 3

从上次检查成功后认定检查失败的检查次数阈值(必须是连续失败),默认为3。

Container.N.ReadinessProbe.TimeoutSeconds Integer 5

检查超时的时间,默认为1秒,最小为1秒。

Container.N.LivenessProbe.TcpSocket.Port Integer 80

TcpSocket检测的端口。

Container.N.LivenessProbe.Exec.Command.N RepeatList [/bin/sh cat /tmp/healthy]

容器内检测命令。

Container.N.LivenessProbe.HttpGet.Path String /usr/local/bin

HttpGet检测的路径。

Container.N.LivenessProbe.HttpGet.Port Integer 8080

HttpGet检测的端口号。

Container.N.LivenessProbe.HttpGet.Scheme String HTTP

HTTP/HTTPS。

Container.N.LivenessProbe.InitialDelaySeconds Integer 10

检查开始执行的时间,以容器启动完成为起点计算。

Container.N.LivenessProbe.PeriodSeconds Integer 10

检查执行的周期,默认为10秒,最小为1秒。

Container.N.LivenessProbe.SuccessThreshold Integer 1

从上次检查失败后重新认定检查成功的检查次数阈值(必须是连续成功),默认为1。当前必须为1。

Container.N.LivenessProbe.FailureThreshold Integer 3

从上次检查成功后认定检查失败的检查次数阈值(必须是连续失败),默认为3。

Container.N.LivenessProbe.TimeoutSeconds Integer 1

检查超时的时间,默认为1秒,最小为1秒。

Container.N.SecurityContext.ReadOnlyRootFilesystem Boolean true

目前仅支持:true。

Container.N.SecurityContext.RunAsUser Long 1337

用于运行容器进程入口点的UID。

Container.N.SecurityContext.Capability.Add.N RepeatList NET_ADMIN

枚举值,目前仅支持:NET_ADMIN。

Container.N.Gpu Integer 1

图形化处理器。

InitContainer.N.Name String init-nginx

Init容器名称。

InitContainer.N.Image String nginx

容器镜像。

InitContainer.N.Cpu Float 2.0

容器CPU大小。

InitContainer.N.Memory Float 4.0

容器内存大小。

InitContainer.N.WorkingDir String /bin/local/

容器工作目录。

InitContainer.N.ImagePullPolicy String Onfailure

镜像拉取策略。

InitContainer.N.Stdin Boolean false

此容器是否应在容器运行时为标准输入分配缓冲区。如果未设置,则容器中标准输入的读取值将导致EOF。默认为false。

InitContainer.N.StdinOnce Boolean true

当标准输入为true时,标准输入流将在多个附加会话中保持开启状态。如果StdinOnce设为true,标准输入在容器开启时被打开,在首个客户端附加到标准输入之前都为空,然后会一直保持开启状态,接收数据,直到客户端连接断开,此时标准输入被关闭,在容器重启前一直保持关闭状态。

InitContainer.N.Tty Boolean true

是否开启交互,默认为false,例如Command为 [“/bin/bash”] 时,需要设置为true。

InitContainer.N.Command.N RepeatList /bin/sh sleep

Init容器指令。

InitContainer.N.Arg.N RepeatList 10

容器启动参数。

InitContainer.N.EnvironmentVar.N.Key String PATH

环境变量名。

InitContainer.N.EnvironmentVar.N.Value String /usr/local/bin

环境变量值。

InitContainer.N.Port.N.Port Integer 9000

端口号 1-65535。

InitContainer.N.Port.N.Protocol String TCP

TCP/UDP。

InitContainer.N.VolumeMount.N.Name String default-volume1

数据卷名称,同 Volume 中的 Name。

InitContainer.N.VolumeMount.N.MountPath String /pod/data

挂载目录,容器的挂载目录下的内容被volume的内容直接覆盖,所以要慎用。

InitContainer.N.VolumeMount.N.SubPath String data2/

数据卷下的子目录,方便Pod将同一个Volume下不同目录挂载到容器不同目录

InitContainer.N.VolumeMount.N.ReadOnly Boolean false

默认值为 false。

InitContainer.N.SecurityContext.ReadOnlyRootFilesystem Boolean true

只读根文件系统。

InitContainer.N.SecurityContext.RunAsUser Long 1000

用于运行容器进程入口点的UID。

InitContainer.N.SecurityContext.Capability.Add.N RepeatList NET_ADMIN

枚举值,目前仅支持:NET_ADMIN。

InitContainer.N.Gpu Integer 1

图形化处理器。

ImageRegistryCredential.N.Server String registry.cn-shanghai.aliyuncs.com/ecitest/nginx:alpine

不带 http://https:// 前缀的镜像仓库地址。

1、只支持全量更新

2、如果是单独更新ImageRegistryCredentials,且更新后的ImageRegistryCredentials的数量不超过之前原ImageRegistryCredentials,则无需重启ECI,其他情况会重启ECI。

ImageRegistryCredential.N.UserName String yourname

镜像仓库用户名。

ImageRegistryCredential.N.Password String yourpassword

镜像仓库密码。

ClientToken String 123e4567-e89b-12d3-a456-426655440000

保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持ASCII字符,且不能超过64个字符。更多详情,请参阅如何保证幂等性

Cpu Float 2.0

容器组级别的CPU。

Memory Float 4.0

容器组级别的Memory。

参数说明

容器组级别CPU

1、不支持更新但是能生效。

2、ECI默认是通过用户容器规格计算容器组规格。如果容器规格的变动导致容器组规格变动,这种场景下要求用户显式设置容器组的规格。

容器组级别Memory

1、不支持更新但是能生效。

2、ECI默认是通过用户容器规格计算容器组规格。如果容器规格的变动导致容器组规格变动,这种场景下要求用户显式设置容器组的规格。

Volumes

1、只支持全量更新。

2、需要重启ECI实例。

ImageRegistryCredentials

1、只支持全量更新。

2、如果是单独更新ImageRegistryCredentials,且更新后的ImageRegistryCredentials的数量不超过之前原ImageRegistryCredentials,则无需重启ECI实例,其他情况会重启ECI实例。

InitContainers

1、只支持全量更新。

2、InitContainers和Containers均为全量更新,但可以只更新InitContainers和Containers两种容器中的任意一种,而且没有InitContainers的ECI可以新增InitContainers。

3、需要重启ECI实例。

Containers

1、只支持全量更新。

Tags

1、只支持全量更新。

2、无需重启ECI。

DnsConfig

1、只支持全量更新。

2、需要重启ECI实例。

说明 全量更新:如果参数是一个List,不支持单独更新某个item,如果参数是一个结构体,不支持单独更新某个内部成员。

返回数据

名称 类型 示例值 描述
RequestId String CB8D2B22-D636-4182-8C8C-1FC9DBDAD66F

请求ID,唯一标识。

示例

请求示例

http(s)://eci.aliyuncs.com/?Action=UpdateContainerGroup
&ContainerGroupId=eci-bp17da5olmkuagfrzurh
&RegionId=cn-hangzhou
&<公共请求参数>

正常返回示例

XML 格式

<RequestId>CB8D2B22-D636-4182-8C8C-1FC9DBDAD66F</RequestId>

JSON 格式

{
        "RequestId": "CB8D2B22-D636-4182-8C8C-1FC9DBDAD66F"
}

常见使用场景

Container

container内部的所有参数均支持更新,与创建参数是对齐的。

原ECI同时有initContainer和container,但只更新initContainer。

原ECI同时有initContainer和container,但只更新container。

原ECI同时有initContainer和container,initContainer和container全部更新。

原ECI只有container,更新container。

原ECI只有container,增加initContainer。

原ECI只有container,增加initContainer,同时更新container。

Volume

ECI目前支持三种Volume:ConfigFileVolume、NFSVolume、EmptyDirVolume

同样,更新也支持三种类型的volume,更新后的volume的各种要求和创建的参数是对齐的。

注:container都是通过volume name来匹配挂载的volume,所以单独更新volumes往往只是修改voulme内部一些基本参数,大的更新往往需要伴随container一起更新,比如数量、name发生变化。 ImageRegistryCredential

ImageRegistryCredentials可以单独更新,也可以和其他的参数一起更新。如果是单独更新

ImageRegistryCredentials,且更新后的ImageRegistryCredentials的数量不超过之前原

ImageRegistryCredentials,则无需重启pod,其他情况会重启pod。

Tags

全量更新,ECI不用重启

DnsConfig

全量更新

错误码

HttpCode 错误码 错误信息 描述
400 InvalidParameter.CPU.Memory The specified cpu and memory are not allowed cpu,mem不符合规格
400 InvalidParameter.DuplicatedName The container group include containers with duplicate names. 容器组内有重复名字的容器。
400 InvalidParameter.DuplicatedVolumeName The container group includes volumes with duplicate names. 容器组内有重复名字的数据卷。
400 InvalidParameter.LengthExceeded %s List型参数的长度超过规定值
404 InvalidParameter.NotFound %s 参数未找到
400 InvalidParameter.ValueExceeded %s 参数值超过规定范围
400 IncorrectStatus %s 指定的实例状态不正确。
403 InvalidAction The specified action is invalid 不合法的操作
400 InvalidParam.CpuOrMemorySpec The specified specification is invalid. 指定的规格还未开放售卖,不提供价格查询。
400 InvalidParameter %s 不合法的参数
400 MissingParameter %s 必填参数缺失
400 NoNeedUpdate There are no changes to be updated for current resource. 本次操作没有需要更新的参数

访问错误中心查看更多错误码。