文档

ECI Pod概述

更新时间:

ECI能为Kubernetes提供基础的容器Pod运行环境,每个ECI实例相当于一个Pod。本文主要介绍弹性容器实例ECI Pod的使用准备工作、使用限制以及核心功能,包括安全隔离、CPU/Memory资源和规格配置、镜像拉取、存储、网络、日志收集等。

前提条件

Kubernetes应用限制

ACK的虚拟节点基于Kubernetes社区的Virtual Kubelet技术实现。ACK Serverless集群会通过虚拟节点实现与ECI的无缝对接。因此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实例底层通过轻量级安全沙箱技术完全强隔离,实例间互不影响。同时,不同虚拟节点上的ECI Pod分布在不同的可用区,且同一可用区上的实例在调度时尽可能分布在不同的物理机上,进一步保障了高可用性。

CPU/Memory资源或规格配置

功能项

说明

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

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

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

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

您可以指定实例或者容器的vCPU和内存来创建ECI实例。如果指定的vCPU和内存不符合要求,系统将自动按照ECI支持的规格进行规整。规整时将向最接近的ECI规格进行规整,同时需满足指定的vCPU和内存≤ECI规格的vCPU和内存。例如:在华东1(杭州)地域创建ECI实例时,声明了7 vCPU,13 GiB内存,则实际创建的ECI实例为8 vCPU,14 GiB内存。

ECI Pod支持的vCPU和Memory规格

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

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

  • 各规格支持的默认临时存储空间大小均为30 GiB。

所有ECI支持地域均支持的规格

vCPU

内存(GiB)

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

0.25

0.5、1

0.08

0.5

1、2

0.08

1

2、4、8

0.1

2

1、2、4、8、16

1

4

2、4、8、16、32

1.5

8

4、8、16、32、64

2

12

12、24、48、96

2.5

16

16、32、64 、128

3

24

24、48、96、192

4.5

32

32、64、128、256

6

52

96、192、384

12.5

56

224

10

64

128、256、512

20

仅部分地域支持的规格

重要
  • 下表中的规格仅在部分地域支持,创建以下规格的ECI实例时请确保已指定支持的地域和可用区,否则会因为无库存而导致创建失败。

    支持的地域为:华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华北6(乌兰察布)、华南1(深圳)、华南2(河源)、华南3(广州)、西南1(成都)、新加坡。

  • 不支持指定下表中的规格创建抢占式实例。

vCPU

内存(GiB)

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

2

6、10、12、14

1

4

6、10、12、14、18、20、22、24、26、28、30

1.5

6

6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48

1.5

8

10、12、14、18、20、22、24、26、28、30、34、36、38、40、42、44、46、48、50、52、54、56、58、60、62

2.5

计费方式及公式

  • 计费方式

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

  • 计费公式

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

  • 计费定价

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

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

大部分场景下,如果没有特殊的规格需求(如GPU、本地盘等),推荐您指定vCPU和内存来创建ECI实例。在此基础上,对于0.25~8 vCPU的规格需求,在轻量型应用等入门场景,您可以进一步指定算力类别为经济型,以降低使用成本。详细信息,请参见指定算力类别创建经济型Pod

指定Pod的ECS规格

配置方式

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

支持的ECS实例规格族

指定ECS规格创建ECI实例时,计算资源的费用按照ECS规格进行计算。目前支持的ECS实例规格族,请参见指定ECS规格创建Pod

计费方式及公式

  • 计费方式

    当指定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实例,避免或减少镜像层的下载,从而提升实例的创建速度。镜像缓存的创建分为手动创建和自动创建两种方式,具体操作,请参见使用ImageCache加速创建Pod

存储

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

  • 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

  • 本页导读 (1)