注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 聚石塔

托管版应用 ECI 使用说明

更新时间:2022/01/18 访问次数:1149

该能力目前仅支持 无状态应用 与 有状态应用 两种类型

简介

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

如下图所示:

image.png

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

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

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

优势

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

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

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

使用流程

1.配置资源分配策略

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

image.png

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

image.png

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

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

2.编辑部署配置

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

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

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

image.png


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

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

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

image.png

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 的规格信息可在 发布前确认页 中看到,如下:

image.png


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

image.png

4.编辑调度策略

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

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

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

image.png

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

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

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

image.png

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

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

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

特别提醒:

该能力只在新实例启动时进行管理,实例下线的策略由 k8s 控制

例如:
ECI调度策略配置 普通实例限制值 为 5

实例启动:

a.在新实例启动时,如果当前已有5个实例在普通实例,那么,该实例会强制使用 ECI

b.在新实例启动时,如果当前普通实例不足5个(有可能总实例数大于5个,但是普通实例数不足5个),那么,该实例不会强制使用 ECI,但是如果当时集群资源不足,则同样会使用 ECI

实例下线:

目前实例下线策略是由 k8s 统一控制的,一般情况下会优先缩容最新启动的实例

因此如果最新启动的实例为 普通实例 ,则会出现 普通实例 优先于 ECI 实例 下线的情况
那么什么情况下会出现最新实例是 普通实例 的情况呢?

a.集群资源不足,导致应用在未达到限制值前,使用了 ECI,后面集群资源充足了(可能其他应用进行了缩容,或者增加了 ECS 到集群中),新启动的实例为普通实例

b.应用发布时,有可能会出现新一批的 实例 首先启动的是 ECI 的情况,后面旧版本的 普通实例 下线后,新版本的普通实例才会启动

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

数据库访问:将 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

容器网络配置

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


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

image.png

外网访问

VPC绑定NAT网关+EIP

主要步骤:

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

操作步骤

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

image.png

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

image.png

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

image.png

将EIP绑定到NAT。

image.png

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

image.png
完成后,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调度控制 单击 安装

image.png

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

image.png

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

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

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

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

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

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

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

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

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

解决方法:重新发布应用

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

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


FAQ

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