托管版无状态应用 ECI 使用说明

更新时间:2021/05/06 访问次数:1294

简介

ECI 为阿里云产品,旨在用户无需管理底层服务器,也无需关心运行过程中的容量规划,只需要提供打包好的Docker镜像,即可运行容器,并仅为容器实际运行消耗的资源付费。

如下图所示:

应用的底层资源可以为 ECS 或 ECS + ECI

应用、ECS、ECI 三者与 实例 的关系为:

一个应用有多个实例组成
一个 ECS 上可以运行多个实例
一个 ECI 对应一个实例

优势

采用 ECS + ECI 的方式主要有下面两个优势:

1、无需关注底层资源:不用担心资源不足的问题,ECI 可以随时启动并投入使用,不会占用集群内 ECS 资源,同时可以做到秒级启动,就好像启动一个 普通实例 一样

2、资源成本低:按量计费的情况下相同规格的 ECS 与 ECI 费用基本相同,但是 ECI 的计费周期为 按秒计费,而 ECS 为按小时计费,也就是说只使用 10 分钟,ECI 所花费的费用仅为 ECS 的 1/6。

使用流程

1.配置资源分配策略

通过 运维中心-容器集群-资源分配策略 进入 资源分配策略列表页 ,通过 新建策略 或者 管理 已经存在的策略进入 新建/编辑资源分配策略 页面,如下图

点击 启用ECI 开关,对于第一次开启的应用会有弹窗出现,如下图:

该弹窗内容分为两部分,上半部分为集群需要安装的插件,列出的插件必须全部安装才可以使用 ECI。

下半部分为该应用环境单个ECI实例所使用的规格大小(ECI 有特定的规格,如 1C2G,2C8G,对于不满足规格的实例,我们会帮助您自动向上取整,例如您设置的规格为 1C1.5G,我们会帮助您规整为 1C2G),该规格必须大于等于实例请求值的大小。(对于通过 yaml 文件配置 的应用环境,我们将不展示该部分,你可以通过在 yaml 文件中添加注解设置 ECI 规格,后面会介绍)

2.编辑部署配置

编辑部署配置分为两种方式,其中通过页面配置的方式为非必须的操作,后期可随时调整 ECI 规格

a.通过页面进行配置的方式(非必须流程):

后期需要修改 ECI 规格大小,可以通过 环境管理-实例管理 页面进行修改


注意 ECI实例级别需要满足CPU和内存约束。对于未满足的情况,系统会进行规整,计费按照规整后CPU和内存值进行计费(ECI支持的规格见文末部分 ECI实例规格,有关于实际使用规格的计算方式请参见本文的 规格计算 部分)。

b.通过 Yaml 进行配置的方式

新版应用视图中可以通过 环境管理-环境配置 页面对 yaml 配置文件进行修改

1.添加容忍

首先需要在配置中添加 容忍

  spec:
template:
spec:
tolerations:
- key: taint.jst.com/eci
operator: Exists

接下来需要配置ECI规格,配置方式主要有以下两种

2.指定ECI规格

增加k8s.aliyun.com/eci-use-specs注解, 创建Pod时允许使用的实例规格列表,遇到没库存时,按照顺序遍历规格列表购买ECI实例,应对库存问题。

k8s.aliyun.com/eci-use-specs的值,支持列表,使用逗号分隔,列表中元素的格式:

1.模糊匹配
  • ${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:https://help.aliyun.com/document_detail/114662.html

指定ECS规格创建ECI:https://help.aliyun.com/document_detail/114664.html

多规格创建:https://help.aliyun.com/document_detail/146468.html

GPU实例:https://help.aliyun.com/document_detail/114581.html

3.发布应用

每次修改完相应配置都需要 重新发布应用 才可以生效,ECI 实例的具体规格 以及是否支持 使用 ECI,都是根据发布当时的 部署配置 以及 资源分配策略 决定的(通过 yaml 配置的方式不做任何处理,由用户自行控制)

例如:

(1)刚刚修改 ECI 规格大小由 2C4G => 4C8G,但是没有重新发布,那么,后面启动的 ECI 规格大小依然为 2C4G

(2)刚刚修改应用的部署配置,使之不满足 ECI 的限制条件(见限制条件部分),未重新部署前,该应用可以应用继续使用 ECI,重新部署后,则不支持使用 ECI


修改后发布的应用,是否可以使用 ECI,以及 ECI 的规格信息可在 发布前确认页 中看到,如下:


最终发布的应用中的实例是否在虚拟节点上,可以在实例列表页查看

4.编辑调度策略

默认情况下,允许使用 ECI 的应用,只有在创建 pod 时,真实节点上没有足够的资源,导致调度失败时,才会向虚拟节点调度,真正使用 ECI。也就是说,会优先使用集群内提前购买好的资源,资源不足时才会使用 ECI。

如果希望在集群资源充足的情况下,使用 ECI ,可以通过修改 ECI 调度策略 实现

通过 环境管理 - 详细信息 - 实例管理 在实例信息部分可以看到如下内容

普通实例数/ECI 实例数: 分别表示,该应用环境下面运行中的 实例数量(包括下线中及其他状态的实例)

ECI 调度策略:目前启用的策略,第一次进入应该显示为 未启用

单击 修改策略 可以看到下图所示弹窗

普通实例限制值:普通实例数量的阈值,当普通实例数量超过该值时,强制使用 ECI

当实例数小于该值时,优先使用集群中的资源,在资源不足的时候会使用 ECI

启用状态:需要设置为已启用之后点击保存,才会启用该策略

特别提醒:

(1)策略只对配置之后启动的实例生效,不会影响之前的实例分布情况

例如:未配置策略前,普通实例数/ECI 实例数 为 10/10,普通实例限制值 为 6,不会改变现有状态,如果之后进行扩容,普通实例数已经超过限制,则后面启动的实例都会使用 ECI

(2)目前不支持优先缩容 ECI ,当前的缩容策略为,最新启动的最先缩容

5.数据库访问以及公网访问(可选)

数据库访问:将 ECI 实例的内网 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

容器网络配置

  • 容器访问公网。暂时只支持NAT网关出公网容器的公网出口IP为NAT网关绑定的EIP
  • 容器访问RDS。ECI容器实例的内网IP从集群交换机网段中分得将交换机网段设置为RDS白名单即可
  • 容器访问VPC内ECS。默认的,serverless集群部署生成的ECI容器属于集群安全组,如果VPC内的ECS不在集群安全组内,需要进行安全组授权。1)将ECS加入集群安全组; 或者,2)ECS所在安全组授权一下集群安全组

集群安全组:运维中心-集群管理-基本信息

外网访问

VPC绑定NAT网关+EIP

主要步骤:

  1. 创建VPC及VSwitch。
  2. 创建NAT。
  1. 创建EIP,并绑定到NAT。
  2. 为NAT配置SNAT条目。

操作步骤

  1. 创建VPC及VSwitch。在VPC 控制台完成VPC及VSwitch的创建。

  1. 创建NAT。创建NAT网关,创建的时候选择上一步操作创建的VPC。

  1. 创建EIP,并绑定到NAT。

将EIP绑定到NAT。

  1. 为NAT配置SNAT条目。在NAT中创建SNAT条目,以实现访问外网。


完成后,ECI创建时就可以正常拉取Docker Hub镜像了。VPC对应交换机下的所有ECI实例,都能够通过该VPC和交换机上绑定的NAT网关+EIP访问外网。
如果需要通过外网来访问ECI,则还需要配置DNAT条目,具体可以参阅文档
PAI Studio-Notebook使用文档

计费规则

计费资源

ECI根据您申请ECI资源的方式,支持2种计费模式:

  • 按CPU和内存计费。
  • 按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实例使用1vCPU2G内存,每次运行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实例使用2vCPU8GiB内存,每次运行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,可以极大的节省您的运行成本。

限制条件

  • 您的账户需要有 100 元的余额并通过实名认证,否则无法创建 ECI 实例。
  • 目前 ECI 只支持 Linux 容器。
  • 目前 ECI 只支持 VPC 网络。
  • 不支持在虚拟节点上运行DaemonSet Pod。
  • 不支持hostPath/hostPid。
  • 不支持privileged权限开放。
  • 不支持过大的configmap和secret volume挂载(上限256KB,很难达到该上限)。
  • 不支持NodePort类型的Service。
  • 不支持Network Policy
  • 单个 ECI 实例 CPU 最大规格 64 vCPU
  • 单个 ECI 实例数据卷数量 100 个(很难达到该上限
  • 单个 ECI 实例内支持最大的容器数 20 个
  • 支持的容器最大镜像 layer 50 个
  • 单个虚拟节点支撑 3000 个ECI Pod

账号能够创建的ECI数量,依赖于账号的vCPU限额,vCPU限额的查询办法参考这里。所有ECI实例的vCPU之和,不能超过vCPU限额,如果需要超过,请提交工单申请。

可用区

https://help.aliyun.com/document_detail/89155.html

ECI实例规格

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



Q&A

1、启动调度策略的时候报错:“请检查该应用环境所在的集群是否集成 ECI调度控制 插件”?

您可以前往插件中心进行安装 运维中心 - 插件管理 - 插件列表 选择 ECI调度控制 单击 安装

选择需要安装插件的集群,单击部署即可

2、集群中服务的 DNS 解析量很大,仅通过扩容 coredns 已不足以支撑,怎么办?

目前提供了 sidecar dns 解决方案,该方案需要开通白名单,请在答疑群中 @照前 ,进行白名单添加

3、应用需要访问公网,且流量峰值巨大,单个 EIP 的带宽已经无法支持,怎么办?

可以优先使用 共享带宽 的方案,一个共享带宽可以添加多个 EIP,相应的可以增加带宽峰值。如果该方案依然无法解决请参考文档:ECI 针对短时间高公网带宽且存在IP限制场景的解决方案

4、详细信息-实例管理页面中 ECI 调度策略 提示 "不支持 ECI" 原因是什么?

该提示标的的是当前正在运行的服务不支持 ECI,原因有多种:

a.新建的应用环境,尚未进行应用发布

解决方法:正确开启 ECI 之后进行应用发布

b.在资源分配策略中开启 ECI 之后,未重新发布应用

解决方法:重新发布应用

c.当前应用不符合 ECI 的限制条件

解决方案:重新发布应用,在发布确认页中,ECI 相关的信息位置,会告知 ECI 不支持的具体原因,修改应用配置后,重新发布应用即可

FAQ

关于此文档暂时还没有FAQ
返回
顶部