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

文档中心 > 聚石塔

托管版 ECI 使用说明(旧版)

更新时间:2023/01/05 访问次数:1353

简介

托管版 Kubernetes 集群 需要您手动创建集群,并添加 ECS 作为 Kubernetes 集群的节点。

相关文档请参考:点击查看

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

相关文档地址为:点击查看

聚石塔集成 ECI,为您提供更为方便的集成,以及管控能力。

名词解释

真实节点:运行在集群中的 ECS 上的节点。

虚拟节点:来源于Kubernetes社区的Virtual Kubelet技术,容量相当与无限大,不会使用集群中的 ECS 资源。

ECI:在虚拟节点上启动的 pod。

特别提醒

ECI 实例的公网 ip:需要使用 VPC绑定NAT网关+EIP 方式进行公网访问,公网 ip 由绑定的 EIP 确定。

ECI 实例的内网 ip:由应用所在的集群的 交换机 的 IPv4网段 确定,ECI 实例的 内网ip,在此范围内给出。

image.png

ECI 与 非集群内的 ECS 通信:需要将 集群的安全组 授权给 ECS安全组。

image.png

不要通过 弹性容器实例 删除 ECI ,这样只会删除 ECI 资源,但是 pod 相关配置并不会跟着一起被删除。

image.png

使用流程

1.集成虚拟节点

通过【运维中心-插件管理-插件列表进入“集群管理页面”如下图。

image.png

请先安装 ECI节点 ,安装成功后再进行 虚拟节点自动伸缩 的安装 ,点击 安装 进入如下页面
image.png

集群 下拉框选项中,选择需要集成 ECI 能力的集群,部署参数为空即可,最后点击 部署 。

 

2.设置资源分配策略

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

image.png

调度到虚拟节点 选择 可以 ,部分页面如下。

image.png

需要填写 ECI 使用的 CPU 内存 的上限,也就是说,该应用所使用的 单个 ECI 资源的大小不会超过此处设置的上限,一旦超过,则不允许使用 ECI(部署配置通过 yaml 方式的除外,并且此处限制只针对修改后发布的服务进行限制,正在运行的服务不做限制)。

3.编辑部署配置(新版本)

a.通过页面进行配置的方式:

新版应用视图中可以通过 环境管理-实例管理 页面进行修改。

image.png

ECI 的大小可以通过两种方式进行设置:

1.填写 ECI CPU请求ECI 内存请求 ,则会以此处填写的值为准;

2.不填写 ECI CPU请求ECI 内存请求 ,则会以 CPU请求内存请求 的值为准。

例如:

CPU请求:2
内存请求:8192
ECI CPU请求:1
ECI 内存请求:2048

最终以 CPU=1,内存=2048 为准

 

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

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

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

image.png

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

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

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

1.指定ECI实例内容器规格(Kubernetes默认方式)

注意 每个ECI实例内支持最多20个容器,实例内每个容器的资源支持自定义配置,但汇总到ECI实例级别需要满足CPU和内存约束。对于未满足的情况,ECI会执行 自动规整 操作,计费按照规整后CPU和内存值进行计费(ECI支持的规格见文末部分 ECI实例规格)。

说明 对于大于4vCPU规格,为了减少因操作失误造成规整,浪费计费资源,您需要在OpenAPI中严格声明相同的规格资源,否则接口会返回规格非法错误。 推荐对于大于4vCPU规格的资源,使用指定ECI实例CPU和内存规格的方式进行资源申请。

 

1.Kubernetes方式

Kubernetes原生方式使用,直接定义对应container的request即可。

 

apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-basic
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9 # replace it with your exactly <image_name:tags>
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "500m"
            memory: "1024Mi"
      - name: busybox
        image: busybox:latest # replace it with your exactly <image_name:tags>
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "500m"
            memory: "1024Mi"

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
2.精确设置

明确指定创建ECI使用的实例规格,例如:ecs.c6.xlarge,ECI支持的实例规格,请参见实例规格族

 

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": "ecs.c5.xlarge,ecs.c6.xlarge,ecs.c6.4xlarge"
        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实例:点击查看

3.编辑部署配置(旧版本)

通过 应用发布-部署配置 进入 部署配置列表页。

image.png

下面分为两种情况:

a.通过页面进行配置的方式:

点击 编辑 已存在的配置,进入 编辑部署配置页面。

image.png

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

点击 新建Yaml部署配置 或者 编辑 已存在的配置,进入 新建/编辑部署配置页面。

image.png

 

4.发布应用

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

例如:

部署配置中:

ECI CPU请求:2

ECI 内存请求:2048

资源分配策略:

ECI CPU上限:2

ECI 内存上限:4096

此时进行发布,发布后的应用可以正常使用 ECI ,并且 ECI 规格为 2C2G。

基于当前场景,分别进行进行以下操作:

a.修改部署配置为
ECI CPU请求:4
 ECI 内存请求:8196

没有重新发布,则应用不受影响,可以正常使用 ECI ,并且 ECI 规格为 2C2G。

如果重新发布,则由于应用的部署配置中请求资源 超过 资源分配策略中定义的ECI资源使用上限,因此不可以使用 ECI,但是可以正常发布,应用可以在 真实节点(ECS)上正常调度使用。

b.修改资源分配策略为

ECI CPU上限:1

ECI 内存上限:2048

没有重新发布,则应用不受影响,可以正常使用 ECI ,并且 ECI 规格为 2C2G。

如果重新发布,则由于应用的部署配置中请求资源 超过 资源分配策略中定义的ECI资源使用上限,因此不可以使用 ECI,但是可以正常发布,应用可以在 真实节点 上正常调度使用。


 

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

image.png

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

数据库访问:将 ECI 实例的内网 IP 段(获取方式参见本文的特别提醒) 添加到 数据库的白名单中。

公网访问:需要使用 VPC绑定NAT网关+EIP 方式进行公网访问,公网 ip 由绑定的 EIP 确定。

ECI 调度策略

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

同时,是否选择集成虚拟节点,不影响 部署配置资源分配策略 中对 ECI 相关属性的配置。

也就是说,通过配置 部署配置资源分配策略 ,应用部署后,状态为 允许使用 ECI 可能有一下两种情况

a.有 虚拟节点,则在资源不足时,会使用 ECI;

b.没有 虚拟节点,在资源不足时,不会使用 ECI,而是成为不可调度状态。后期如果集成上虚拟节点,则可以正常使用 ECI。

增强 ECI 调度策略

为了提供能强的 调度控制能力,我们提供了 ECI 调度控制 插件。

使用流程

0.前置条件

集群已支持 ECI,即已经安装 ECI节点虚拟节点自动伸缩 插件。

1.插件集成

运维中心 - 插件管理 - 插件列表 选择 ECI调度控制 单击 安装。

image.png

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

image.png

2.配置策略

a.前置条件:

在给应用配置 ECI 调度策略之前,要确保该应用已经允许使用 虚拟节点。

可以前往 运维中心 - 资源分配策略 找到对应的应用环境,单击 管理。

image.png

 

调度到虚拟节点 选择 可以

image.png

b.配置 ECI 调度策略

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

image.png

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

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

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

image.png

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

当实例数小于该值时,分两种情况:

强制:不论资源是否充足,都不使用 ECI(可能会存在资源不足导致实例启动失败的情况)。

非强制:资源不足的时候允许使用 ECI。

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

特别提醒:

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

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

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

(3)修改资源分配策略,关闭 ECI 之后,会同时关闭该应用环境的 ECI 调度策略。

规格计算

本规格计算方式,仅针对 通过页面进行部署配置 的方式。

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所在安全组授权一下集群安全组。

 

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

image.png

外网访问

VPC绑定NAT网关+EIP

主要步骤:

  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种计费模式:

  • 按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限额,如果需要超过,请提交工单申请。

可用区

点击查看详情

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:通过标签选择器,使应用指定到 虚拟节点 上,这样就可以直接使用 ECI 了

应用同时使用 集群资源以及 ECI:给集群中一个或多个节点加上特定标签,同时给 虚拟节点 也加上相同标签,这样添加相应标签选择器的应用会优先使用 普通节点上的资源,在资源不足的时候 会使用 ECI 资源。使用该方案时,建议在 普通节点 上添加污点,并给应用添加相应 容忍,防止其他应用使用该节点。

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

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

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

可以优先使用 共享带宽 的方案,一个共享带宽可以添加多个 EIP,相应的可以增加带宽峰值。如果该方案依然无法解决请在答疑群中 @照前。

FAQ

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