ECI实例概述
本文主要介绍弹性容器实例ECI Pod的使用准备工作、使用限制以及核心功能,包括安全隔离、CPU/Memory资源和规格配置、镜像拉取、存储、网络、日志收集等。
前提条件
已创建ACK集群或ACK Serverless集群,并已在集群中部署虚拟节点。详情请参见步骤一:在ACK集群中部署ack-virtual-node组件和创建ACK Serverless集群。
已开通弹性容器实例服务。登录弹性容器实例控制台开通相应的服务。
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的ECS规格 | |
抢占式实例 您可以通过配置Annotation使用Spot可抢占式实例,大幅降低计算成本。抢占式实例概述,请参见抢占式实例概述;计费信息,请参见抢占式实例。 | |
镜像拉取与缓存 | 镜像拉取 ECI Pod默认每次启动后使用内部的containerd从远端拉取容器镜像。如果镜像为公共镜像,则需要开通VPC的NAT网关,或者给ECI Pod挂载EIP。建议您将容器镜像存储在阿里云镜像仓库(ACR),通过VPC网络减少镜像拉取时间。另外对于ACR上的私有镜像,实现了免密拉取功能方便您使用。 |
镜像缓存 为加速实例的创建速度,ECI提供镜像缓存功能。您可以预先将需要使用的镜像制作成缓存快照,然后基于该快照来创建ECI实例,避免或减少镜像层的下载,从而提升实例的创建速度。镜像缓存的创建分为手动创建和自动创建两种方式。 | |
存储 | 支持多种使用存储的方式: |
网络 | ECI Pod默认使用Host网络模式,占用交换机vSwitch的一个弹性网卡ENI资源。 在Kubernetes集群环境中,ECI Pod与ECS节点上的Pod互联互通,方法如下:
|
日志采集 | 您可以直接配置Pod的Env收集 |
支持和追加的Annotation | 您可以在Pod Spec中配置Annotation,充分使用ECI提供的功能。详细信息,请参见ECI Pod Annotation。 |