大部分场景下,如果没有特殊的规格需求(如GPU、本地盘等),推荐您指定vCPU和内存来创建ECI Pod(即ECI实例)。在此基础上,您可以进一步指定算力类别。例如:对于0.25~8 vCPU的规格需求,在轻量型应用等入门场景,您可以选择经济型规格来满足降低成本的需求;对于1 vCPU及以上的规格需求,如果性能需求较高,则可以选择通用型规格。
算力类别说明
为了更好地满足低成本或性能稳定的需求,ECI推出了指定算力类别功能。当您采用指定vCPU和内存方式创建ECI实例时,ECI会将底层规格分为经济型和通用型两个算力类别。您可以按需选择,系统会从对应类别的底层规格中自动选择合适的规格。
经济型(economy)
支持的vCPU范围为0.25~8 vCPU,规格单价相比通用型更低。
通用型(general)
支持的vCPU范围为1~64 vCPU,规格单价与未开通指定算力类别时的ECI规格定价一致。在相同vCPU和内存条件下,通用型规格的性能更优。
如何选择算力类别
您可以根据业务情况,以及对低成本、性能稳定或高可用等需求,来选择合适的算力类别。建议如下:
对于轻量型应用等入门场景,可以选择经济型规格来降低资源成本。
对于性能需求较高的业务场景,可以选择通用型规格,该类别规格性能更优,并且与未指定算力类别相比,性能表现更稳定。
为了避免库存不足的情况,如果您的业务对性能波动有一定的容忍,可以指定多个算力类别来保证高可用。
规格说明
ECI支持的经济型和通用型的详细规格如下:
各规格支持的临时存储空间大小默认均为30 GiB。
经济型规格
通用型规格
计费说明
经济型规格和通用型规格目前处于公测中。
经济型规格
相比于未指定算力类别时的规格,经济型规格的内存单价与之前一致,vCPU单价更低。
vCPU单价(vCPU):0.000027 元/秒(0.0972 元/小时)
内存单价(GiB): 0.00000613 元/秒(0.0221 元/小时)
通用型规格
与未开通指定算力类别时的ECI规格定价一致。
vCPU单价(vCPU):0.000049 元/秒(0.1764 元/小时)
内存单价(GiB): 0.00000613 元/秒(0.0221 元/小时)
ECI Pod创建成功后,您可以执行kubectl describe pod
命令查看详情,通过k8s.aliyun.com/eci-instance-compute-category
字段确认ECI Pod实际使用的算力类别。计费会按照对应类别的规格单价计算。
使用限制
指定算力类别功能具有以下限制:
仅适用于指定vCPU和内存创建ECI实例。
如果指定了ECS规格,则优先会采用指定的ECS规格,即无法指定算力类别。
不支持抢占式实例功能。
如果同时配置了抢占式实例和指定算力类别的Annotation,系统会报错(错误码为FeatureBasedConstraintConflict)。
不支持ARM架构的规格。
如果将ECI Pod调度到ARM架构节点的同时,配置了指定算力类别的Annotation,系统会报错(错误码为FeatureBasedConstraintConflict)。
不支持与以下功能同时使用:
指定或排除ECS规格族
指定或排除ECS规格代数
配置说明
指定vCPU和内存创建ECI Pod时,支持以下两种方式:
指定Pod内容器的vCPU和内存:通过定义Containers的limits或requests来指定,建议使用limits。
指定Pod级别的vCPU和内存:通过在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation来指定。
如果没有指定,或者同时设置了limits、requests和k8s.aliyun.com/eci-use-specs
,实际生效情况请参见配置说明。
在指定vCPU和内存的基础上,您可以在Pod metadata中添加Annotation来指定算力类别,对应Anotation为k8s.aliyun.com/eci-compute-category
,配置说明如下:
取值为
economy
(表示经济型)和general
(表示通用型)。支持设置多个算力类别,系统会按照设置顺序创建。
Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。
仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。
生效规则
开通指定算力类别功能后,根据创建ECI Pod时设置的条件,实际创建的ECI Pod所使用的规格和算力类别按以下规则生效:
ECI Pod创建成功后,您可以执行kubectl describe pod
命令查看详情,通过k8s.aliyun.com/eci-instance-compute-category
字段确认ECI Pod实际使用的算力类别。计费会按照对应类别的规格单价计算。
创建ECI实例时设置的条件 | 实际生效情况 |
未指定vCPU和内存,但指定了算力类别。 | 创建2 vCPU,4 GiB内存的实例,算力类别为指定的类别。 |
指定了vCPU和内存,且指定了算力类别,两者组合后符合ECI的规格要求。 | 按照指定的条件创建实例。 |
指定的vCPU小于1 vCPU,但指定算力类别为通用型。 | 不符合ECI的规格要求,会自动规整到1 vCPU的通用型规格。 |
指定的vCPU大于8 vCPU,但指定算力类别为经济型。 | 不符合ECI的规格要求,无法自动规整,会出现报错。 |
指定了vCPU和内存,且指定了算力类别,指定的vCPU属于该算力类别的vCPU范围,但不符合ECI的规格要求。 | 自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,需满足指定的vCPU和内存≤ECI规格的vCPU和内存。 例如:指定vCPU和内存为 |
指定了多个vCPU和内存规格,或者多个算力类别。 | 系统按照以下规则选择规格:
例如:指定vCPU和内存为
重要 由于规格优先级高于算力类别。在指定多个算力类别的情况下,如果指定的vCPU和内存不符合ECI的规格要求,资源规整时,系统会考虑所有算力类别的合集,选择最接近您指定的vCPU和内存规格来向上规整,如果此时规整的vCPU和内存在某一算力类别内不合法,那么该算力类别在当前vCPU和内存规格的调度中不予考虑。 例如:指定vCPU和内存为 |
配置示例
示例一:设置容器的limits,并指定算力类别为经济型
apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-compute-category: "economy" # 指定算力类别为经济型 spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 resources: limits: cpu: "500m" #指定nginx容器的vCPU为0.5 vCPU memory: "1024Mi" #指定nginx容器的内存为1 GiB - name: busybox image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30 command: ["sleep"] args: ["999999"] resources: limits: cpu: "1000m" #指定busybox容器的vCPU为1 vCPU memory: "2048Mi" #指定busybox容器的内存为2 GiB
示例二:设置容器的limits,并指定算力类别优先使用通用型其次使用经济型
apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-compute-category: "general,economy" # 指定算力类别优先使用通用型其次使用经济型 spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 resources: limits: cpu: "2000m" #指定nginx容器的vCPU为2 vCPU memory: "4096Mi" #指定nginx容器的内存为4 GiB - name: busybox image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30 command: ["sleep"] args: ["999999"] resources: limits: cpu: "2000m" #指定busybox容器的vCPU为2 vCPU memory: "4096Mi" #指定busybox容器的内存为4 GiB
示例三:通过
k8s.aliyun.com/eci-use-specs
指定多个vCPU和内存规格,并指定算力类别为通用型apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-use-specs : "2-4Gi,4-8Gi" # 指定ECI Pod的规格优先使用2 vCPU,4 GiB内存,其次使用4 vCPU,8 GiB内存 k8s.aliyun.com/eci-compute-category: "economy" # 指定算力类别为经济型 spec: containers: - name: nginx image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80