如果您需要通过配置文件方式快速创建和管理ECI类型的伸缩组,则可以通过调用API ApplyScalingGroup来实现该功能。
接口说明
ApplyScalingGroup目前支持以Kubernetes Deployment资源定义格式快速创建ECI伸缩组。同时支持ECI实例对Kubernetes YAML拓展annotation,更多信息,请参见本文的《支持的annotation列表》。
YAML配置与伸缩组的映射关系:通过YAML中定义的namespace
、kind
、name
三元组映射伸缩组name
,一个地域(region)下同一个YAMLl配置只能映射同一个伸缩组。例如:
如果使用默认命名空间(namespace)下name
为nginx
的Deployment YAML配置,则映射同地域(region)下名称为k8s_default_Deployment_nginx
的伸缩组。
基于YAML配置管理伸缩组的逻辑:
- 当YAML配置映射伸缩组存在时,会基于YAML配置更新伸缩组。
- 当YAML配置映射伸缩组不存在时,会基于YAML配置创建对应伸缩组。
注意事项
- 当YAML配置未指定VPC、vSwitch、安全组annotation时,系统会自动创建默认VPC,在该VPC下会创建默认交换机,以及创建弹性伸缩的默认安全组(
ess-default-sg
)。其中,安全组策略默认开放TCP协议的22、3389端口以及ICMP(IPv4)协议,如果您有其他端口协议需求,可另行调整安全组策略。 - 当使用公网镜像时,需配置开启公网访问能力,设置
k8s.aliyun.com/eci-with-eip pod annotation
开启EIP功能。 - ApplyScalingGroup应用YAML配置后,伸缩组及伸缩配置会立即生效,如果指定replicas>0,则会自动创建资源。
支持的annotation列表
更多annotation信息,请参考ECI Pod Annotation 。
参数 |
示例值 |
说明 |
k8s.aliyun.com/ess-scaling-group-min-size |
1 |
伸缩组最小值。默认值:0。 |
k8s.aliyun.com/ess-scaling-group-max-size |
20 |
伸缩组最大值。默认值:max(replicas, 30)。 |
k8s.aliyun.com/eci-ntp-server |
100.100.*.* |
NTP Server。 |
k8s.aliyun.com/eci-use-specs |
2-4Gi |
2核4 G规格配置。更多信息,请参见多规格创建Pod。 |
k8s.aliyun.com/eci-vswitch |
vsw-bp1xpiowfm5vo8o3c**** |
指定交换机ID,支持指定多个交换机实现多可用区功能。 |
k8s.aliyun.com/eci-security-group |
sg-bp1dktddjsg5nktv**** |
指定安全组ID。要求如下:支持指定一个或多个安全组,最多可以指定5个安全组;指定的安全组必须属于同一VPC;指定的安全组的类型必须相同。 |
k8s.aliyun.com/eci-sls-enable |
"false" |
配置为false表示关闭日志采集功能。通过SLS CRD方式采集日志时,如果某些Pod不需要采集日志,可配置该Annotation来关闭日志采集功能,避免系统自动创建Logtail而造成资源浪费。 |
k8s.aliyun.com/eci-spot-strategy |
SpotAsPriceGo |
抢占式实例的出价策略,可根据需要进行配置。SpotWithPriceLimit:自定义设置抢占实例价格上限。此时必须设置 k8s.aliyun.com/eci-spot-price-limit ;SpotAsPriceGo:系统自动出价,跟随当前市场实际价格。 |
k8s.aliyun.com/eci-spot-price-limit |
"0.5" |
抢占式实例的每小时价格上限,最多支持精确到小数点后三位。仅当 k8s.aliyun.com/eci-spot-strategy 设置为 SpotWithPriceLimit 时有效。 |
k8s.aliyun.com/eci-with-eip |
"true" |
配置为true表示自动创建并绑定EIP。 |
k8s.aliyun.com/eci-data-cache-bucket |
default |
指定DataCache的Bucket。使用DataCache创建Pod时必须配置。 |
k8s.aliyun.com/eci-data-cache-pl |
PL1 |
基于DataCache创建的云盘的性能等级。默认使用ESSD云盘,性能等级默认为PL1。 |
k8s.aliyun.com/eci-data-cache-provisionedIops |
"40000" |
ESSD AutoPL云盘预配置的读写IOPS。取值范围:0~min{50000, 1000 * 容量-基准性能},基准性能=min{1800+50 * 容量, 50000}。更多信息,请参见ESSD AutoPL云盘。如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。 |
k8s.aliyun.com/eci-data-cache-burstingEnabled |
"true" |
ESSD AutoPL云盘是否开启Burst(性能突发)。更多信息,请参见ESSD AutoPL云盘。如果添加了该Annotation,则基于DataCache创建的云盘类型为ESSD AutoPL云盘。 |
k8s.aliyun.com/eci-custom-tags |
"env:test,name:alice" |
绑定的标签(Tag)字符串,最多可以绑定3个标签。标签键和标签值之间用半角冒号(:)隔开,多个标签之间用半角逗号(,)隔开。 |
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 |
类型 |
是否必选 |
示例值 |
描述 |
Action | String | 是 | ApplyScalingGroup | 系统规定参数。取值:ApplyScalingGroup。 |
ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** | 保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持ASCII字符,且不能超过64个字符。更多信息,请参见如何保证幂等性。 |
Content | String | 是 | apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: k8s.aliyun.com/eip-bandwidth: 10 k8s.aliyun.com/eci-with-eip: true spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 | 配置文件内容。 |
RegionId | String | 否 | cn-hangzhou | 所属地域的ID。 |
Format | String | 否 | YAML | 可选,默认值YAML,当前仅支持YAML格式。 |
返回数据
名称 |
类型 |
示例值 |
描述 |
RequestId | String | CC107349-57B7-4405-B1BF-9BF5AF7F**** | 请求ID。 |
ScalingGroupId | String | asg-bp1igpak5ft1flyp**** | 生效的伸缩组ID。 |
示例
请求示例
http(s)://ess.aliyuncs.com/?Action=ApplyScalingGroup
&ClientToken=123e4567-e89b-12d3-a456-42665544****
&Content=apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: k8s.aliyun.com/eip-bandwidth: 10 k8s.aliyun.com/eci-with-eip: true spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
&RegionId=cn-hangzhou
&Format=YAML
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<ApplyScalingGroupResponse>
<RequestId>CC107349-57B7-4405-B1BF-9BF5AF7F****</RequestId>
<ScalingGroupId>asg-bp1igpak5ft1flyp****</ScalingGroupId>
</ApplyScalingGroupResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "CC107349-57B7-4405-B1BF-9BF5AF7F****",
"ScalingGroupId" : "asg-bp1igpak5ft1flyp****"
}
错误码
访问错误中心查看更多错误码。