该能力目前仅支持 无状态应用 与 有状态应用 两种类型。
ECI 为阿里云产品,旨在用户无需管理底层服务器,也无需关心运行过程中的容量规划,只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。
如下图所示:
应用的底层资源可以为 ECS 或 ECS + ECI。
应用、ECS、ECI 三者与 实例 的关系为:
1)一个应用有多个实例组成;
2)一个 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 确定。
本规格计算方式,仅针对 通过页面进行部署配置 的方式。
资源分配策略中的 ECI 内存上限
首先会转换单位为 GB,转换会按照 向下 取整进行,例如:
2049MB => 2GB
2048MB => 2GB
2047MB => 1GB
部署配置中的 CPU 和 内存 会首先以 ECI CPU请求
和 ECI 内存请求
为准,如果值为空,则以 CPU请求
和 内存请求
的值为准,并且 内存 首先会转换单位为 GB,转换会按照 向上 取整进行,例如:
2049MB => 3GB
2048MB => 2GB
2047MB => 2GB
ECI 的规格是有约束的(具体规格见本文中的 ECI实例规格 章节),所以最终的 ECI 规格需要符合给定的约束。
例:
资源限制:2C4G。
资源请求:1C2G。
ECI 实际规格为:1C2G。
资源限制:2C4G。
资源请求:2C3G。
ECI 实际规格为:2C4G。
原因:ECI 约束中资源大于等于 资源请求 2C3G 的最小规格为 2C4G,同时该规格不大于 资源限制 2C4G。
资源限制:2C6G。
资源请求:2C5G。
ECI 实际规格为:无(不可使用 ECI)。
原因:ECI 约束中资源大于等于 资源请求 2C5G 的最小规格为 2C8G,同时该规格大于 资源限制 2C6G。
1. 容器访问公网。暂时只支持NAT网关出公网,容器的公网出口IP为NAT网关绑定的EIP。
2. 容器访问RDS。ECI容器实例的内网IP从集群交换机网段中分得,将交换机网段设置为RDS白名单即可。
3. 容器访问VPC内ECS。默认的,集群生成的ECI容器属于集群安全组,如果VPC内的ECS不在集群安全组内,需要进行安全组授权。1)将ECS加入集群安全组; 或者,2)ECS所在安全组授权一下集群安全组。
集群安全组:运维中心-集群管理-基本信息。
主要步骤:
1)创建VPC及VSwitch。
2)创建NAT。
3)创建EIP,并绑定到NAT。
4)为NAT配置SNAT条目。
1)创建VPC及VSwitch。在VPC 控制台完成VPC及VSwitch的创建。
2)创建NAT。创建NAT网关,创建的时候选择上一步操作创建的VPC。
3)创建EIP,并绑定到NAT。
将EIP绑定到NAT。
4)为NAT配置SNAT条目。在NAT中创建SNAT条目,以实现访问外网。
完成后,ECI创建时就可以正常拉取Docker Hub镜像了。VPC对应交换机下的所有ECI实例,都能够通过该VPC和交换机上绑定的NAT网关+EIP访问外网。如果需要通过外网来访问ECI,则还需要配置DNAT条目,具体可以参阅文档PAI Studio-Notebook使用文档。
ECI根据您申请ECI资源的方式,支持2种计费模式:
1)按CPU和内存计费。
2)按ECS规格计费。
推荐您使用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镜像缓存功能,会产生快照和存储费用。
① 快照的收费规则请参见快照计费方式。
② 使用镜像加速功能的每个ECI实例会使用一块基于快照产生的云盘,云盘默认使用ESSD类型、20GB容量,计费规格请参考 ESSD磁盘价格(PL1)。
您需要每小时运行一次定时任务,定期处理历史文件,需要使用2个ECI实例,每个ECI实例使用1vCPU和2G内存,每次运行5分钟(300秒)。
单次CPU费用:
CPU费用 = 实例数 x vCPU数 x 每vCPU*秒价格 x 每小时vCPU持续时间(秒)
CPU费用 = 2 x 1 x 0.000049 x 300 = 0.0294 元
单次内存费用 :
内存费用 = 实例数 x 内存数(GB) x 每GB价格 x 每小时内存持续时间(秒)
内存费用 = 2 x 2 x 0.00000613 x 300 = 0.0074 元
单次ECI费用 :
小时ECI费用 = 小时CPU费用 + 小时内存费用
小时ECI费用 = 0.0294 元 + 0.0074 元 = 0.04 元
月度ECI费用 = 每小时ECI费用 x 月度执行总次数
月度ECI费用 = 0.04 x ( 24 x 30 ) = 28.8元
说明:若您使用ECS实例,该定时任务需要使用1台ecs.c5.large,需要支付179元(ECS包月模式)或者37.2元(ECS按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
您需要每天2:00运行1个统计报表任务,使用10个ECI实例,每个ECI实例使用2vCPU和?8GiB内存,每次运行1个小时(3600秒)。
单次CPU费用:
CPU费用 = 实例数 x vCPU 数 x 每vCPU*秒价格 x 每小时vCPU持续时间(秒)
CPU费用 = 10 x 2 x 0.000049 x 3600 = 3.528 元
单次内存费用:
内存费用 = 实例数 x 内存数 (GB) x 每GB价格 x 每小时内存持续时间(秒)
内存费用 = 10 x 8 x 0.00000613 x 3600 = 1.765 元
单次ECI费用:
小时ECI费用 = 小时CPU费用 + 小时内存费用
小时ECI费用 = 3.528 元 + 1.765 元 = 5.29 元
月度ECI费用 = 每小时ECI费用 x 月度执行总次数
月度ECI费用 = 5.29 x 30 = 158.7 元
说明:若您使用ECS实例,该任务需要使用10台ecs.g5.large,需要支付2422.5元(包月模式)或者267元(按量模式)月度运行费用,通过使用ECI,可以极大的节省您的运行成本。
1)您的账户需要有 100 元的余额并通过实名认证,否则无法创建 ECI 实例。
2)目前 ECI 只支持 Linux 容器。
3)目前 ECI 只支持 VPC 网络。
4)不支持在虚拟节点上运行DaemonSet Pod。
5)不支持hostPath/hostPid。
6)不支持privileged权限开放。
7)不支持过大的configmap和secret volume挂载(上限256KB,很难达到该上限)。
8)不支持NodePort类型的Service。
9)不支持Network Policy。
10)单个 ECI 实例 CPU 最大规格 64 vCPU。
11)单个 ECI 实例数据卷数量 100 个(很难达到该上限)。
12)单个 ECI 实例内支持最大的容器数 20 个。
13)支持的容器最大镜像 layer 50 个。
14)单个虚拟节点支撑 3000 个ECI Pod。
账号能够创建的ECI数量,依赖于账号的vCPU限额,vCPU限额的查询办法参考这里。所有ECI实例的vCPU之和,不能超过vCPU限额,如果需要超过,请提交工单申请。
https://help.aliyun.com/document_detail/89155.html
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 不支持的具体原因,修改应用配置后,重新发布应用即可。