本文主要介绍容器服务(VKE)结合火山引擎镜像仓库(CR)提供 P2P 加速能力,利用节点的内网带宽资源,实现在节点之间分发镜像的方案。
说明
该功能目前处于 公测 阶段。
在容器业务中,当应用的镜像大小达到几个 GB,甚至几十 GB 以上时,在节点上下载镜像通常会消耗大量的时间。容器镜像仓库是集中式的,即集群中的所有节点都会从容器镜像仓库上拉取镜像。在集群规模很大、弹性并发等情况下,如果同时从容器镜像仓库拉取镜像,则容器镜像仓库网络带宽会成为性能瓶颈,导致镜像拉取缓慢。P2P 加速利用节点的内网带宽资源,在节点之间分发镜像,减少对镜像仓库的压力,大幅提升镜像拉取速度,缩短应用部署时间。
说明
目前仅 CR 标准版 支持 P2P 加速功能。
P2P 加速应用于大规模集群快速拉取 GB 级容器镜像,支持数百至上千节点的并发拉取,推荐如下使用场景 :
说明
为了获得更好的镜像加速效果,建议您优先在小部分节点上拉取镜像做预热,使得 P2P 节点缓存有镜像,再逐渐扩大镜像拉取的规模。
容器服务基于 P2P 技术提供了用于容器镜像加速分发的 p2p-accelerator 组件。p2p-accelerator 组件部署在集群中每个节点(云服务器 ECS 实例)上,代理每个节点的镜像拉取请求,并转发至 P2P 网络的各个 Peer 节点。p2p-accelerator 组件配置说明,请参见 容器服务使用 P2P 加速。
注意
在大规模集群内启用 p2p-accelerator 组件拉取容器镜像时,一方面带来了镜像拉取速度的提升;另一方面也带来了节点数据盘较高的读写压力。由于更多节点变成 P2P 网络中的 Peer 节点,节点数据盘造成较高读写压力,可能影响集群内已有业务。同时也会对上行带宽有一定占用。
若集群内节点使用云盘存储拉取的容器镜像,则需要关注如下几个因素:
为了加快 Pod 启动速度,容器服务 VKE 提供了不同的方案进行优化。
对比项 | 镜像懒加载 | P2P 加速 | 自定义节点镜像和预热(邀测) |
---|---|---|---|
方案说明 | 利用镜像读取数据热点,按需加载所需数据,提升容器启动效率。 | 利用计算节点的内网带宽资源,在节点之间分发镜像,减少对容器镜像仓库的压力。 | 通过对容器镜像进行拆分,将变动频率低的内容下沉到节点镜像,从而减小容器镜像大小。节点镜像通过预热方式加快节点的就绪。 |
适用场景 | 容器镜像大,数据局部热点明显,镜像变更频繁的场景。 | 容器镜像大且频繁变更的场景。 | 底层镜像变动频率低的场景。 |
受限因素 |
|
| 节点镜像缓存预热。 |
总上所述,自定义节点镜像和预热在使用流程上多了镜像拆分和节点镜像预热的步骤。但在预热后,整体拉取镜像的时间和性能,不会受其他因素影响。因此在镜像变动频繁的场景,可以使用 P2P 加速或 镜像懒加载 方案,也可以结合使用该两个方案。