镜像缓存概述
使用镜像缓存可以在创建实例时加速拉取镜像,减少实例的启动耗时。该能力适用于 EKS 集群 Pod 和虚拟节点。本文主要介绍镜像缓存的工作原理、计费说明、创建和使用方式等。
工作原理
镜像缓存加速启动实例速度时会事先启动一个 容器实例 进行镜像拉取,该镜像存储在一个可自定义大小的数据盘中,同时将该数据盘作为云盘快照缓存,即镜像数据已被保存在快照中。在创建容器实例或 Pod 时选择自动匹配或手动匹配镜像缓存,会基于镜像快照创建相应数量的硬盘(数据盘),并直接挂载到实例上,避免镜像层下载,从而提升容器实例及 Pod 的创建速度。
相比 镜像复用 能力,镜像缓存的优势如下:
- 无时效限制,与镜像缓存(快照)的生命周期有关。
- 只需提前冷启动一个 Pod,创建快照后该 Pod 即被销毁。
- 无可用区限制,基于快照创建云盘时自动匹配可用区。
- 无工作负载的限制,相同地域中即可匹配。
计费说明
在创建镜像缓存时,会涉及到以下资源,相应的计费情况如下:
计费项 | 计费说明 | 计费文档 |
---|---|---|
镜像缓存 | 创建镜像缓存时,需要运行一个 2 核 4GiB 容器实例以拉取镜像。在镜像缓存创建完成后,该容器实例会自动释放并停止计费。 | 容器实例计费 |
CBS 数据盘 | 创建镜像缓存时,需要绑定一个高性能数据盘存储镜像,该数据盘的大小支持自定义,默认为 20G。在镜像缓存创建完成后,该数据盘会自动释放并停止计费。 | 云硬盘计费 |
快照 | 基于上述数据盘会创建一个快照,该快照的生命周期与镜像缓存的生命周期一致。快照按照使用时长及容量收费。 | 快照计费 |
使用镜像缓存时,会基于匹配的镜像缓存快照创建一个相同容量的高性能数据盘,并绑定到 Pod 上,因此除去创建 Pod 本身的费用,会额外收取数据盘的费用。
- 数据盘费用 = 容量 * 单价 * 实例运行时长
操作步骤
创建镜像缓存
- 登录 容器服务控制台 。
- 选择左侧导航栏的弹性容器 > 镜像缓存,进入“镜像缓存”列表页面。
- 单击新建实例,配置相关参数。如下图所示:
- 实例名称:选填。
- 所在地域:按需选择。
- 容器网络:为容器实例分配在容器网络地址范围内的 IP 地址。
- 安全组:安全组具有防火墙的功能,可限制容器实例的网络通信,默认为 default。
- 镜像:按需选择需要进行缓存的镜像及其版本。
- 镜像凭证:当选择 Dockerhub 及其他第三方镜像仓库的私有镜像时,必须填写镜像凭证,即仓库的访问地址、用户名及密码。
- 高级配置:
- 绑定弹性公网 IP:拉取外网镜像时,需要绑定 EIP 实现与公网互通。
- 缓存大小:该大小决定快照及之后创建实例时绑定的数据盘的大小。
- 过期策略:选择镜像缓存的保留时间,默认为永久保留。
- 单击创建。创建完成后可在镜像缓存的列表,单击事件名称查看创建进程。如下图所示:
使用镜像缓存
创建 EKS Pod 时,可在高级配置中,开启使用镜像缓存,主要有以下两种匹配方式,可以根据自身需求选择合适的匹配方式。
在缓存匹配模式中选择自动匹配时,根据以下匹配策略,将自动匹配最优的镜像缓存。
- 镜像名称及版本完全相同,则可匹配;
- 镜像缓存大小,小容量优先匹配;
- 创建时间,创建时间晚的优先匹配。
注意:需要注意的时,若双方都为 nginx:latest,依旧可匹配,但是由于创建时间不同,可能存在版本不一致的情况,因此,建议创建时镜像缓存及实例时,明确注明版本。
若没有匹配到对应的镜像缓存,则会自动正常拉取镜像。
虚拟节点使用镜像缓存
若需要在虚拟节点中使用镜像缓存,可通过指定 Pod 的 Annotation 来使用镜像缓存,具体可参考 EKS Annotation 说明。
- 自动匹配:
eks.tke.cloud.tencent.com/use-image-cache: auto
- 手动指定:
eks.tke.cloud.tencent.com/use-image-cache: imc-xxx
匹配结果
可从创建实例的事件中,查看是否匹配成功。
若匹配成功,则显示以下事件:
若未显示该事件,则表示没有匹配到合适的镜像缓存。
需要注意的是,若选择手动匹配,但是匹配的镜像缓存中并没有该镜像,会重新在新创建的数据盘中拉取镜像,并显示以下事件: