ECI能为Kubernetes提供基础的容器Pod运行环境,每个ECI实例相当于一个Pod。本文介绍ECI Pod的基本配置、生命周期和使用限制等。
基本配置
基于Kubernetes社区的Virtual Kubelet技术,ECI支持以虚拟节点的形式接入到Kubernetes集群中。一个ECI实例相当于一个Pod,包括规格、镜像、存储、网络等基本配置。
规格
规格包括vCPU、内存等配置,定义了ECI Pod的计算性能等。创建ECI Pod时,您可以直接指定vCPU和内存规格,也可以指定ECS规格来满足GPU等特殊需求。两种规格类型分别对应不同的计费模式,具体请参见ECI实例计费。
ECI支持多种创建方式来申请资源,您可以根据业务需求选择合适的创建方式,具体请参见创建ECI Pod。
镜像
一个ECI Pod最多可以包含20个容器。部署容器应用时,需要准备好容器镜像。容器镜像包含容器应用运行所需的程序、库文件、配置等。拉取镜像时,需要保证网络畅通,推荐您使用镜像缓存(即ImageCache)功能来节约拉取镜像耗时,加速Pod创建。
镜像拉取
ECI Pod默认每次启动后使用内部的containerd从远端拉取容器镜像。如果镜像为公网镜像,则ECI Pod需要具备访问公网的能力(为VPC创建公网NAT网关,或者为Pod绑定EIP)。
建议您将容器镜像存储在阿里云镜像仓库(ACR),通过VPC网络减少镜像拉取时间。另外,对于ACR上的私有镜像,实现了免密拉取功能,方便您使用。更多信息,请参见免密拉取ACR镜像和使用免密组件托管版拉取容器镜像。
镜像缓存
ECI的镜像缓存功能可以预先将需要使用的镜像制作成缓存快照。后续基于镜像缓存来创建ECI Pod,可以避免或减少镜像层的下载,从而提升ECI Pod的创建速度。ACK Serverless集群中默认已部署ImageCache CRD来接入镜像缓存功能。更多信息,请参见使用ImageCache加速创建ECI Pod。
存储
临时存储
一个ECI Pod默认具有30 GiB的免费的临时存储空间,Pod启动所使用的容器镜像会占用该空间。如果您有更高的临时存储需求,可以自定义增加临时存储空间大小。更多信息,请参见增加临时存储空间大小。
持久化存储
如果有共享数据或者持久化保存数据的需求,可以为ECI Pod挂载持久化存储卷。在ACK Serverless集群中部署CSI存储插件,即可使用阿里云云盘、NAS、OSS等类型的存储卷。更多信息,请参见存储CSI概述。
更多关于ECI Pod存储相关的配置,请参见存储。
网络
私网IP地址
ECI Pod会占用所属VPC下交换机的一个弹性网卡资源。创建ECI Pod时,会依次从Pod Annotation(
k8s.aliyun.com/eci-vswitch
)、PodNetworking、eci-profile的配置中选择合适的交换机,随机为Pod分配一个私网IP地址。如果您有指定私网IP地址或者使用固定私网IP地址的需求,请参见指定ECI Pod的私网IP地址和配置ECI Pod使用固定IP地址。开通公网
默认情况下,ECI Pod不具备连接公网的能力。如果您的ECI Pod有连接公网的需求,例如需要拉取公网镜像等,您可以为其绑定EIP,或者在所属VPC中创建公网NAT网关,以实现ECI Pod与公网互通。具体操作,请参见为ECI Pod配置公网连接。
IPv6地址
ECI Pod已支持IPv6地址。相比IPv4,IPv6大大扩展了地址的可用空间。更多信息,请参见为ECI Pod分配IPv6地址。
更多关于ECI Pod网络相关的配置,请参见网络。
容器
在ECI Pod的容器中,同样支持Kubernetes的设置容器启动命令、配置Liveness Probe和Readiness Probe、配置Security Context等能力。关于ECI Pod中的容器相关配置,请参见容器配置。
生命周期
在ECI Pod的生命周期中,不同的阶段有其固有的状态。关于ECI Pod状态的变化过程,以及与Kubernetes Pod状态的对应关系,请参见ECI Pod生命周期。
使用限制
基于公有云的安全性和虚拟节点本身带来的限制,ECI目前还不支持Kubernetes中HostPath、DaemonSet等功能,具体如下表所示。
不支持的功能 | 说明 | 推荐替代方案 |
HostPath | 挂载本地宿主机文件到容器中 | 使用emptyDir、云盘或者NAS文件系统 |
HostNetwork | 将宿主机端口映射到容器上 | 使用type=LoadBalancer的负载均衡 |
DaemonSet | 在容器所在宿主机上部署Static Pod | 通过sidecar形式在Pod中部署多个镜像 |
type=NodePort的Service | 将宿主机端口映射到容器上 | 使用type=LoadBalancer的负载均衡 |
更多信息,请参见使用限制。
Pod编排
为了减少您对业务YAML的改动,ECI支持了eci-profile功能。eci-profile可以提供集群维度的ECI资源视图,支持根据selector实现Pod编排。更多信息,请参见配置eci-profile。
扩展使用ECI功能
数据缓存
对于一些数据量较大的业务数据,例如训练模型等,ECI支持创建数据缓存(DataCache)来提前拉取数据,将数据缓存到本地,以便在创建ECI实例时可以直接挂载使用,从而减少实例启动耗时,避免数据重复下载,节约使用成本。更多信息,请参见数据缓存概述。
ECI Pod Annotation
为充分使用ECI提供的功能,在不改变Kubernetes语义的前提下,您可以根据需求为ECI Pod添加Annotation。ECI支持的Annotation列表,请参见ECI Pod Annotation。
您可以在创建ECI Pod时手动添加Annotation,也可以配置eci-profile,实现自动添加Annotation到Label能够匹配上的ECI Pod。