ECI实例概述

更新时间: 2023-09-21 17:18:12

本文主要介绍弹性容器实例ECI Pod的使用准备工作、使用限制以及核心功能,包括安全隔离、CPU/Memory资源和规格配置、镜像拉取、存储、网络、日志收集等。

前提条件

Kubernetes应用限制

基于Kubernetes社区的Virtual Kubelet技术,ECI通过虚拟节点与Kubernetes实现无缝对接,因此ECI实例并不会运行在一个集中式的真实节点上,而是打散分布在整个阿里云的资源池中。

基于公有云的安全性和虚拟节点本身带来的限制,ECI目前还不支持Kubernetes中HostPath、DaemonSet等功能,具体如下表所示。

不支持的功能

说明

推荐替代方案

HostPath

挂载本地宿主机文件到容器中

使用emptyDir、云盘或者NAS文件系统

HostNetwork

将宿主机端口映射到容器上

使用type=LoadBalancer的负载均衡

DaemonSet

在容器所在宿主机上部署Static Pod

通过sidecar形式在Pod中部署多个镜像

Privileged权限

容器拥有privileged权限

使用Security Context为Pod添加Capability

type=NodePort的Service

将宿主机端口映射到容器上

使用type=LoadBalancer的负载均衡

核心功能

功能项

说明

安全隔离

作为安全可靠的Serverless容器运行环境,每个ECI实例底层通过轻量级安全沙箱技术完全强隔离,实例间互不影响。同时实例在调度时尽可能分布在不同的物理机上,进一步保障了高可用性。

CPU/Memory资源或规格配置

指定CPU和Memory来申请资源和计费

配置方式:指定容器或Pod的CPU和Memory

  • 指定容器的CPU和Memory:通过Kubernetes标准方式配置单个容器的CPU和Memory(resources.limit)。如不指定,默认单个容器的资源为2 vCPU和4 GiB内存。ECI的资源则是Pod内所有容器所需资源的总和。

    重要

    Kubernetes会自动规整不支持的规格,例如所有容器相加的资源为2 vCPU和3 GiB内存,那么将会自动规整为2 vCPU和4 GiB内存。超过4 GiB内存将不会自动规整。

  • 指定Pod的CPU和Memory:您可以通过Annotation的方式配置整个Pod的CPU和Memory,这种情况将不再把所有容器资源相加,而以指定的资源创建和计费。此时可以不用指定内部容器的requestlimit,各容器可以最大程度地使用Pod内计算资源。

创建ECI实例时,如果指定的vCPU和内存不符合要求,系统将自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,同时需满足指定的vCPU和内存≤ECI规格的vCPU和内存。例如:创建ECI实例时,声明了7 vCPU,13 GiB内存,则实际创建的ECI实例为8 vCPU,16 GiB内存。

ECI Pod支持的CPU和Memory规格

说明
  • 目前仅支持一块弹性网卡,暂不支持多网卡能力。

  • 如果未指定vCPU和内存规格,系统默认采用2 vCPU和4 GiB内存的规格创建ECI实例。

vCPU

内存(GiB)

emptyDir空间大小(GiB)

网络带宽能力(出+入)(Gbit/s)(理论上限值)

网络收发包能力(出+入)(万PPS)(理论上限值)

网卡多队列

0.25

0.5、1

30

0.08

4

1

0.5

1、2

30

0.08

5

1

1

2、4、8

30

0.1

5

1

2

1、2、4、8、16

30

1

30

2

4

2、4、8、16、32

30

1.5

50

2

8

4、8、16、32、64

30

2

80

4

12

12、24、48、96

30

2.5

90

4

16

16、32、64 、128

30

3

100

4

24

24、48、96、192

30

4.5

150

6

32

32、64、128、256

30

6

200

8

52

96、192、384

30

12.5

300

32

56

224

30

10

450

14

64

128、256、512

30

20

400

16

计费方式及公式

  • 计费方式

    从挂载外部存储/下载容器镜像开始至ECI实例停止运行(进入Succeeded/Failed状态)结束。

  • 计费公式

    ECI Pod实例费用=(ECI实例CPU核数xCPU单价+ECI实例内存大小x内存单价)xECI实例运行时长,实例按秒计费。

  • 计费定价

    • CPU(vCPU * 秒):0.000049元/秒(0.1764元/小时)

    • 内存(GB * 秒):0.00000613元/秒(0.0221元/小时)

指定Pod的ECS规格

配置方式

您可以按需指定ECI实例底层使用的ECS规格族,获得各规格族的指定能力,例如指定使用ecs.sn1ne规格族来使用网络增强能力。更多相关信息,请参见ECS实例规格族各地域ECS按量

支持的ECS实例规格族

指定ECS规格创建ECI实例时,计算资源的费用按ECS规格进行计算。目前支持的ECS实例规格族如下:

  • 通用型:g6e、g6、g5、sn2ne

  • 计算型:c6e、c6a、c6、c5、sn1ne

  • 内存型:r6e、r6、r5、se1ne、se1

  • 密集计算型:ic5

  • 高主频计算型:hfc6、hfc5

  • 高主频通用型:hfg6、hfg5

  • GPU计算型:gn6i、gn6v、gn5i、gn5

  • 大数据网络增强型:d1ne

  • 本地SSD型:i2、i2g

  • 突发性能型:t6、t5

  • 共享型:s6、xn4、n4、mn4、e4

计费方式及公式

  • 计费方式

    当指定Pod的ECS规格时,ECI可以选择使用预留实例券对ECI按规格创建实例进行抵扣。详情请参见预留实例券概述

    ECI使用预留实例券后的费用,跟您使用ECS包月实例的费用相近。

  • 计费公式

    ECI实例费用=ECI实例指定的ECS规格单价 x ECI实例运行时长,实例按秒计费。

抢占式实例

您可以通过配置Annotation使用Spot可抢占式实例,大幅降低计算成本。抢占式实例概述,请参见抢占式实例概述;计费信息,请参见抢占式实例

镜像拉取与缓存

镜像拉取

ECI Pod默认每次启动后使用内部的containerd从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关,或者给ECI Pod挂载EIP。建议您将容器镜像存储在阿里云镜像仓库(ACR),通过VPC网络减少镜像拉取时间。另外对于ACR上的私有镜像,实现了免密拉取功能方便您使用。

镜像缓存

为加速实例的创建速度,ECI提供镜像缓存功能。您可以预先将需要使用的镜像制作成缓存快照,然后基于该快照来创建ECI实例,避免或减少镜像层的下载,从而提升实例的创建速度。镜像缓存的创建分为手动创建和自动创建两种方式。

存储

支持多种使用存储的方式:

  • CSI:

    CSI是当前Kubernetes社区推荐的插件实现方案,阿里云提供的CSI插件主要包括以下几部分:

    • CSI-Plugin:实现数据卷的挂载、卸载功能。

    • CSI-Provisioner:实现数据卷的自动创建能力,目前支持云盘、NAS两种数据卷创建能力。

  • NFS:参考示例

  • PV/PVC:参考示例

网络

ECI Pod默认使用Host网络模式,占用交换机vSwitch的一个弹性网卡ENI资源。

在Kubernetes集群环境中,ECI Pod与ECS节点上的Pod互联互通,方法如下:

  • LoadBalancer Service挂载ECI Pod:也可以支持Service同时挂载ECS节点上的Pod和ECI Pod。

  • 访问ClusterIP Service:ECI Pod可以访问集群中的clusterIP地址。

  • 挂载EIP:支持给ECI Pod挂载EIP,可自动创建或者绑定到已有的EIP实例。

日志采集

您可以直接配置Pod的Env收集stdout或者文件日志,采集到阿里云日志服务SLS中。一般情况下,您无需额外部署一个logtail sidecar容器。

支持和追加的Annotation

您可以在Pod Spec中配置Annotation,充分使用ECI提供的功能。详细信息,请参见ECI Pod Annotation

阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈