在普通的 ECS 节点上,启动的 pod,都会首先检查本地是否存在相应的镜像,存在则直接使用,不存在在会通过网络 IO 进行下载,并在之后需要时,直接提供。
由于每一次启动 ECI,实际上都是新启动了一台 ECS,并在其基础上启动了一个 pod,因此导致 ECI 每次启动的时候都需要通过网络 IO 进行镜像下载,所以 ECI 的启动时间与镜像大小正相关,1G左右的镜像需要100s左右的时间进行下载,严重影响启动时间。
为了解决上述问题,我们提供了一套镜像缓存的解决方案,主要的原理是:
1)提前准备镜像缓存:通过一台 1C2G 的 ECI,以及一块固定大小的磁盘(目前默认为 20G 的 ESSD),将指定的镜像镜像下载至硬盘上,并将其制作为硬盘快照。
2)ECI启动时挂载:ECI 启动前会首先根据快照生成相应的 ESSD 磁盘,并挂在到 ECI 上,在 ECI 正式启动时,会首先检查本地是否存在镜像,存在则直接使用。
通过 运维中心
- 镜像缓存
进入镜像缓存列表页,如下图所示:
点击 新建镜像缓存
,如下图:
基本信息
-名称:用于区分镜像名称,可以使用英文、数字、中划线。
-集群:会使用指定集群的安全组,公网带宽,秘钥等配置。
(镜像缓存是全局有效的,生成的镜像缓存快照在主账号下所有集群都是共享的,与该出选择的集群无关)
官方镜像/自定义镜像:选择相应镜像与指定版本,可以同时配置多个官方镜像与自定义镜像。
由于ECI使用镜像缓存使需要挂载磁盘,因此需要花费额外费用(例如 20G ESSD 磁盘,每小时大约 0.04 元),所以需要设置其允许使用 镜像缓存 后,ECI 才会使用。
通过 运维中心
- 集群管理
- 资源分配策略
找到对应条目,点击管理进入如下页面:
首先需要在 调度到虚拟节点 处选择 可以,接着会看到 镜像缓存 选项,选择使用后,重新部署,该应用会在使用 ECI 时自动选择匹配度最高的镜像缓存镜像挂载。
首先找到刚启动 ECI (最长不要超过1个小时,否则实时日志中的事件将被清楚),如下图所示:
接着前往 应用日志
- 实时日志
查找该实例所对应的事件,如下图所示:
如果出现上图所示事件,说明未能匹配到 镜像缓存,请检查该实例所需镜像与版本是否被制作为 镜像缓存。
通过上图可以看出拉取镜像时间为 36s 左右。
如果出现上图所示事件,说明已匹配到 镜像缓存,其中 s-8vb6y5jaf9msx7fm4gz2 表示快照 id(后面会优化为镜像 id )。
通过上图可以看出拉取镜像时间为 1s 左右(时间消耗为镜像检查时间)。
1)ECI:1C2G的ECI资源费用,镜像缓存创建完成后停止计费。ECI实例计费参见计费概述。
2)ESSD:申明的镜像快照盘费用,默认使用ESSD PL1云盘,20G大小。云盘计费参见这里。
3)快照:您每创建一次镜像缓存,会提交一份云盘快照,快照的计费参见快照计费方式。
ESSD:创建ECI实例过程中,若指定使用镜像缓存特性,会为每个ECI实例挂载一块基于镜像缓存快照生成的云盘,费用请参见计费概述。
以华北2地域为例,您为每个实例使用一个20GB的镜像缓存盘(ESSD PL1 20GB),每小时实例费用增加0.04元。