火山云代理商:火山引擎镜像打包耗时久怎么办?

本文由火山云代理商【聚搜云】撰写

  1. P2P加速

原理:火山引擎容器服务VKE基于开源项目Dragonfly,推出了P2P加速方案,规避镜像仓库CR带宽有限的问题。Dragonfly有Manager、Scheduler、Peer等组件,通过这些组件实现P2P加速。

使用流程

前置条件:有可用的VKE集群和可用的标准版镜像仓库实例。 操作步骤:在标准版镜像仓库实例内开启对应VKE集群的P2P分发能力,在VKE集群内安装p2p-accelerator组件。

效果:使用Dragonfly后,拉取镜像的时间在不同程度上得到了缩短,效率提升了6倍以上,甚至在规模较大的情况下,可以达到200倍。在普通的场景下,Pod的拉取镜像时间基本上呈指数递增的趋势,但在Dragonfly的场景下,它有效地控制了增长趋势,用户能在一分钟内完成一个3G镜像的拉取,即使并发拉取的规模达到了500量级,这个时间也几乎是恒定的。

  1. 镜像缓存

    • 适用场景:集群节点规模不大(不超过100节点),镜像变更不频繁,即使有变更,更新内容也比较少。

    • 操作步骤

      • 首先创建镜像缓存。
      • 通过控制台查询创建好的镜像缓存,获取镜像缓存ID以供后续使用。
      • 在实际部署业务时,指定镜像缓存ID进行部署,可使用YAML进行部署。
    • 效果:从deployment创建到pod拉起总共使用20秒,相比没有使用镜像缓存的情况(基于ECS部署扩容一个实例需要90+240s),整个过程的耗时缩短了约93.9%。

  2. 容器镜像懒加载

    • 原理:容器镜像懒加载技术使得容器运行时在启动容器前,不需要将整个容器镜像全量下载到计算节点的本地文件系统,尽可能地降低镜像下载对容器端到端启动时间的影响。当容器需要读取镜像中的文件内容的时候,懒加载技术才会从镜像中心下载对应的数据块并解压。
    • 效果:通过对比OCI镜像和Nydus镜像的容器启动耗时,发现Nydus镜像的性能显著优于OCI镜像,尤其是当OCI镜像大小增加时。
  3. 自定义节点镜像

    • 原理:通过自定义系统镜像,在大批量扩容时,可以规避拉取镜像的操作,从而提升了业务Pod的启动速度、减少节点上因拉取镜像而带来的磁盘写入和网络下载。
    • 效果:不论容器镜像多大,Pod在启动时的镜像拉取耗时,都可以收敛到秒级以内。