该能力目前仅支持 无状态应用 与 有状态应用 两种类型。
ECI 为阿里云产品,旨在用户无需管理底层服务器,也无需关心运行过程中的容量规划,只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。
如下图所示:
应用的底层资源可以为 ECS 或 ECS + ECI
应用、ECS、ECI 三者与 实例 的关系为:
一个应用有多个实例组成;
一个 ECS 上可以运行多个实例;
一个 ECI 对应一个实例;
采用 ECS + ECI 的方式主要有下面两个优势:
1、无需关注底层资源:不用担心资源不足的问题,ECI 可以随时启动并投入使用,不会占用集群内 ECS 资源,同时可以做到秒级启动,就好像启动一个 普通实例 一样。
2、资源成本低:按量计费的情况下相同规格的 ECS 与 ECI 费用基本相同,但是 ECI 的计费周期为 按秒计费,而 ECS 为按小时计费,也就是说只使用 10 分钟,ECI 所花费的费用仅为 ECS 的 1/6。
通过 运维中心-容器集群-资源分配策略
进入 资源分配策略列表页
,通过 新建策略
或者 管理
已经存在的策略进入 新建/编辑资源分配策略
页面,如下图。
点击 启用ECI
开关,对于第一次开启的应用会有弹窗出现,如下图:
该弹窗内容分为两部分,上半部分为集群需要安装的插件,列出的插件必须全部安装才可以使用 ECI。
下半部分为该应用环境单个ECI实例所使用的规格大小(ECI 有特定的规格,如 1C2G,2C8G,对于不满足规格的实例,我们会帮助您自动向上取整,例如您设置的规格为 1C1.5G,我们会帮助您规整为 1C2G),该规格必须大于等于实例请求值的大小。(对于通过 yaml 文件配置 的应用环境,我们将不展示该部分,你可以通过在 yaml 文件中添加注解设置 ECI 规格,后面会介绍)。
编辑部署配置分为两种方式,其中通过页面配置的方式为非必须的操作,后期可随时调整 ECI 规格。
后期需要修改 ECI 规格大小,可以通过 环境管理-实例管理
页面进行修改。
注意 ECI实例级别需要满足CPU和内存约束。对于未满足的情况,系统会进行规整,计费按照规整后CPU和内存值进行计费(ECI支持的规格见文末部分 ECI实例规格,有关于实际使用规格的计算方式请参见本文的 规格计算 部分)。
新版应用视图中可以通过 环境管理-环境配置
页面对 yaml 配置文件进行修改。
首先需要在配置中添加 容忍。
spec: template: spec: tolerations: - key: taint.jst.com/eci operator: Exists
接下来需要配置ECI规格,配置方式主要有以下两种。
增加k8s.aliyun.com/eci-use-specs
注解, 创建Pod时允许使用的实例规格列表,遇到没库存时,按照顺序遍历规格列表购买ECI实例,应对库存问题。
k8s.aliyun.com/eci-use-specs的值,支持列表,使用逗号分隔,列表中元素的格式:
${cpu}-${mem}Gi
:例如: 2-4Gi;表示创建一个2核4G
的ECI实例。模糊匹配仅支持普通规格,对于本地SSD、GPU等实例需设置明确的实例规格。模糊配置方式:
apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: vk-cos-use labels: app: cos spec: replicas: 1 selector: matchLabels: app: cos template: metadata: annotations: "k8s.aliyun.com/eci-use-specs": "2-4Gi,4-8Gi,ecs.c6.xlarge" labels: app: cos spec: containers: - name: u1 image: "registry-vpc.cn-beijing.aliyuncs.com/lxx/cos-4g" nodeName: virtual-node-eci-0
更多详细配置请参考文档下列文档:
指定CPU和内存创建ECI:点击查看;
指定ECS规格创建ECI:点击查看;
多规格创建:点击查看;
GPU实例:点击查看。
每次修改完相应配置都需要 重新发布应用 才可以生效,ECI 实例的具体规格 以及是否支持 使用 ECI,都是根据发布当时的 部署配置
以及 资源分配策略
决定的(通过 yaml 配置的方式不做任何处理,由用户自行控制)。
例如:
(1)刚刚修改 ECI 规格大小由 2C4G => 4C8G,但是没有重新发布,那么,后面启动的 ECI 规格大小依然为 2C4G。
(2)刚刚修改应用的部署配置,使之不满足 ECI 的限制条件(见限制条件部分),未重新部署前,该应用可以应用继续使用 ECI,重新部署后,则不支持使用 ECI。
修改后发布的应用,是否可以使用 ECI,以及 ECI 的规格信息可在 发布前确认页
中看到,如下:
最终发布的应用中的实例是否在虚拟节点上,可以在实例列表页查看。
默认情况下,允许使用 ECI 的应用,只有在创建 pod 时,真实节点上没有足够的资源,导致调度失败时,才会向虚拟节点调度,真正使用 ECI。也就是说,会优先使用集群内提前购买好的资源,资源不足时才会使用 ECI。
如果希望在集群资源充足的情况下,使用 ECI ,可以通过修改 ECI 调度策略 实现。
通过 环境管理
- 详细信息
- 实例管理
在实例信息部分可以看到如下内容。
普通实例数/ECI 实例数: 分别表示,该应用环境下面运行中的 实例数量(包括下线中及其他状态的实例)。
ECI 调度策略:目前启用的策略,第一次进入应该显示为 未启用。
单击 修改策略 可以看到下图所示弹窗。
普通实例限制值:普通实例数量的阈值,当普通实例数量超过该值时,强制使用 ECI。
当实例数小于该值时,优先使用集群中的资源,在资源不足的时候会使用 ECI。
启用状态:需要设置为已启用之后点击保存,才会启用该策略。
该能力只在新实例启动时进行管理,实例下线的策略由 k8s 控制。
例如:
ECI调度策略配置 普通实例限制值 为 5。
a.在新实例启动时,如果当前已有5个实例在普通实例,那么,该实例会强制使用 ECI。
b.在新实例启动时,如果当前普通实例不足5个(有可能总实例数大于5个,但是普通实例数不足5个),那么,该实例不会强制使用 ECI,但是如果当时集群资源不足,则同样会使用 ECI。
目前实例下线策略是由 k8s 统一控制的,一般情况下会优先缩容最新启动的实例。
因此如果最新启动的实例为 普通实例 ,则会出现 普通实例 优先于 ECI 实例 下线的情况。
那么什么情况下会出现最新实例是 普通实例 的情况呢?
a.集群资源不足,导致应用在未达到限制值前,使用了 ECI,后面集群资源充足了(可能其他应用进行了缩容,或者增加了 ECS 到集群中),新启动的实例为普通实例。
b.应用发布时,有可能会出现新一批的 实例 首先启动的是 ECI 的情况,后面旧版本的 普通实例 下线后,新版本的普通实例才会启动。
数据库访问:将 ECI 实例的内网 IP 段(集群对应的交换机的 IP 段) 添加到 数据库的白名单中。
公网访问:需要使用 VPC绑定NAT网关+EIP 方式进行公网访问,公网 ip 由绑定的 EIP 确定。
本规格计算方式,仅针对 通过页面进行部署配置 的方式。
1.确定 ECI 使用规格上限
资源分配策略中的 ECI 内存上限
首先会转换单位为 GB,转换会按照 向下 取整进行,例如:
2049MB => 2GB 2048MB => 2GB 2047MB => 1GB
2.确定 ECI 请求资源量
部署配置中的 CPU 和 内存 会首先以 ECI CPU请求
和 ECI 内存请求
为准,如果值为空,则以 CPU请求
和 内存请求
的值为准,并且 内存 首先会转换单位为 GB,转换会按照 向上 取整进行,例如:
2049MB => 3GB 2048MB => 2GB 2047MB => 2GB
3.确定 ECI 规格
ECI 的规格是有约束的(具体规格见本文中的 ECI实例规格 章节),所以最终的 ECI 规格需要符合给定的约束。
例:
资源限制:2C4G; 资源请求:1C2G;
ECI 实际规格为:1C2G。
资源限制:2C4G; 资源请求:2C3G;
ECI 实际规格为:2C4G。
原因:ECI 约束中资源大于等于 资源请求 2C3G 的最小规格为 2C4G,同时该规格不大于 资源限制 2C4G。
资源限制:2C6G; 资源请求:2C5G;
ECI 实际规格为:无(不可使用 ECI)。
原因:ECI 约束中资源大于等于 资源请求 2C5G 的最小规格为 2C8G,同时该规格大于 资源限制 2C6G。
集群安全组:运维中心-集群管理-基本信息
主要步骤:
将EIP绑定到NAT。
完成后,ECI创建时就可以正常拉取Docker Hub镜像了。VPC对应交换机下的所有ECI实例,都能够通过该VPC和交换机上绑定的NAT网关+EIP访问外网。
如果需要通过外网来访问ECI,则还需要配置DNAT条目,具体可以参阅文档PAI Studio-Notebook使用文档。
ECI根据您申请ECI资源的方式,支持2种计费模式:
推荐您使用CPU和内存模式使用ECI,该模式下ECI会使用ECS多个规格族,进行ECI实例的创建,保障资源的交付。例如:您申请2c4g的ECI实例,ECI会尝试使用ECS的ecs.c6.large、ecs.c5.large、ecs.sn1ne.large、ecs.sn1.large等规格进行资源的交付。
注意 每个ECI实例以您申请的资源作为计费单元,而不是业务在运行过程中实际使用的CPU利用率和内存使用率。例如:您申请一个2c4g的ECI实例,运行过程中平均CPU利用率为20%,内存使用率为60%,该实例会按照2c4g作为计量和计费单位,而不是2c x 20%和4g x 60%。
CPU和内存模式
CPU和内存模式根据你申请的CPU和内存进行计费。
说明 ECI针对不支持的CPU和内存规格,会执行自动规整操作,计费按照自动规整后规格进行计费,CPU和内存规格请参见指定容器 CPU 和内存。
计费公式:ECI实例费用 = (ECI实例CPU核数 x CPU单价 + ECI实例内存大小 x 内存单价)x ECI实例运行时长,按秒计费,实例费用不足0.01元,将补齐按照0.01元收取。
计费项 |
价格(秒价) |
分钟价 |
小时价 |
CPU(vCPU) |
0.000049 元/秒 |
0.00294 元/分钟 |
0.1764 元/小时 |
内存(GB) |
0.00000613 元/秒 |
0.0003678 元/分钟 |
0.0221 元/小时 |
ECI部分规格与ECS企业级实例价格对比:
ECI规格 |
ECI小时价格 |
5代ECS(华北2) |
6代ECS(华北2) |
1c2g |
0.221 元/小时 |
N/A |
N/A |
1c4g |
0.265 元/小时 |
N/A |
N/A |
1c8g |
0.353 元/小时 |
N/A |
N/A |
2c2g |
0.397 元/小时 |
0.59 元/小时 |
N/A |
2c4g |
0.441 元/小时 |
0.62 元/小时 |
0.39 元/小时 |
2c8g |
0.529 元/小时 |
0.89 元/小时 |
0.5 元/小时 |
2c16g |
0.706 元/小时 |
1.13 元/小时 |
0.66 元/小时 |
4c4g |
0.794 元/小时 |
1.18 元/小时 |
N/A |
4c8g |
0.882 元/小时 |
1.24 元/小时 |
0.78 元/小时 |
4c16g |
1.059 元/小时 |
1.77 元/小时 |
1 元/小时 |
4c32g |
1.412 元/小时 |
2.26 元/小时 |
1.33 元/小时 |
说明 ECS价格未包含系统盘价格,40G高效系统盘 0.02 元/小时;40G ESSD系统盘 0.08 元/小时。ECI实例默认使用ESSD系统盘,包含在ECI小时价格中。
ECS规格模式
ECI支持根据实例规格族进行资源申请,价格参考各地域ECS按量价格。您可以根据需要,指定ECI实例底层使用的ECS规格族,获得各规格族的指定能力,例如:指定使用ecs.sn1ne规格族,来使用网络增强能力。
计费公式:ECI实例费用 = ECI实例指定的ECS规格单价 x ECI实例运行时长,实例按秒计费。
网络
如果您的ECI实例需要访问公网,需要通过您VPC内的NAT网关绑定弹性公网IP(EIP)地址访问公网,NAT及EIP的计费说明,请参见计费说明和包年包月。
存储
ECI支持多种类的存储类型,不同存储类型的计费规则如下:
镜像缓存(快照和云盘)
若您需要使用ECI镜像缓存功能,会产生快照和存储费用。
示例一
您需要每小时运行一次定时任务,定期处理历史文件,需要使用2个ECI实例,每个ECI实例使用1vCPU和2G内存,每次运行5分钟(300秒)。
单次费用
单次CPU费用:
单次内存费用 :
单次ECI费用 :
月度运行费用
说明 若您使用ECS实例,该定时任务需要使用1台ecs.c5.large,需要支付179元(ECS包月模式)或者37.2元(ECS按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
示例二
您需要每天2:00运行1个统计报表任务,使用10个ECI实例,每个ECI实例使用2vCPU和8GiB内存,每次运行1个小时(3600秒)。
单次费用
单次CPU费用:
单次内存费用:
单次ECI费用:
月度运行费用:
说明 若您使用ECS实例,该任务需要使用10台ecs.g5.large,需要支付2422.5元(包月模式)或者267元(按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
账号能够创建的ECI数量,依赖于账号的vCPU限额,vCPU限额的查询办法参考这里。所有ECI实例的vCPU之和,不能超过vCPU限额,如果需要超过,请提交工单申请。
vCPU |
内存(GiB) |
emptyDir空间大小(GiB) |
网络带宽能力(出/入)(Gbit/s) |
网络收发包能力(出/入)(万PPS) |
支持IPv6 |
多队列 |
弹性网卡(包括一块主网卡) |
0.25 |
0.5、1 |
20 |
0.1 |
4 |
否 |
1 |
1 |
0.5 |
1、2 |
20 |
0.2 |
5 |
否 |
1 |
1 |
1 |
2、4、8 |
20 |
0.5 |
5 |
否 |
1 |
1 |
2 |
2、4、8、16 |
20 |
1 |
30 |
否 |
2 |
1 |
4 |
4、8、16、32 |
20 |
1.5 |
50 |
否 |
2 |
1 |
8 |
8、16、32、64 |
20 |
2.0 |
80 |
否 |
4 |
1 |
12 |
12、24、48、96 |
20 |
2.5 |
90 |
否 |
4 |
1 |
16 |
16、32、64 、128 |
20 |
3.0 |
100 |
否 |
4 |
1 |
24 |
48、96、192 |
20 |
4.5 |
150 |
否 |
6 |
1 |
32 |
64、128、256 |
20 |
6.0 |
200 |
否 |
8 |
1 |
52 |
96、192、384 |
20 |
12.5 |
300 |
否 |
32 |
1 |
64 |
128、256、512 |
20 |
20.0 |
400 |
否 |
16 |
1 |
您可以前往插件中心进行安装 运维中心
- 插件管理
- 插件列表
选择 ECI调度控制
单击 安装。
选择需要安装插件的集群,单击部署即可。
目前提供了 sidecar dns 解决方案,该方案需要开通白名单,请在答疑群中 @照前 ,进行白名单添加。
可以优先使用 共享带宽 的方案,一个共享带宽可以添加多个 EIP,相应的可以增加带宽峰值。如果该方案依然无法解决请参考文档:ECI 针对短时间高公网带宽且存在IP限制场景的解决方案。
该提示标的的是当前正在运行的服务不支持 ECI,原因有多种:
a.新建的应用环境,尚未进行应用发布
解决方法:正确开启 ECI 之后进行应用发布。
b.在资源分配策略中开启 ECI 之后,未重新发布应用
解决方法:重新发布应用。
c.当前应用不符合 ECI 的限制条件
解决方案:重新发布应用,在发布确认页中,ECI 相关的信息位置,会告知 ECI 不支持的具体原因,修改应用配置后,重新发布应用即可。