利用DPU/IPU 卸载容器镜像以及文件系统的相关操作

1、背景和动机

随着云原生(Cloud Native)被工业界广泛接受,容器(container)在数据中心被广泛部署,其地位正在逐步取代传统的虚拟机(Virtual Machine)。当然目前依然存在用轻量虚拟机来运行和部署容器,比如使用Kata Containers。简单来讲, 容器化是将程序的代码以及相关的软件库(包括对操作系统依赖库等)打包在一起, 创建可在任意基础架构上一直运行的轻量级执行文件(容器)。容器通常以镜像(image)的形式进行发布,一般用户可以直接通过一些轻量级容器运行工具,比如containerd,docker等进行运行。更高级一些,用户可以通过K8S (Kubernetes)这样的开源系统,进行容器的自动部署,扩展和管理。

随着容器技术的广泛普及,用户对容器技术的优化需求也越来越高。比如大规模部署容器的时候,客户希望能够在非常短的时间内启动容器。举个实际的应用场景,FaaS (Function as a service)目前也会采用容器的方式进行部署和扩展。一般来讲,如果使用容器来部署FaaS,可以采用以下的几个步骤:

  1. 根据用户的需求,将所要执行的函数,进行编译生成二进制文件,将可执行二进制文件与所需的库打包到文件系统,并且生成相应的镜像。

  2. 镜像被调度到某个节点, 尽快准备好容器执行环境,包括将container的镜像解包到文件系统中。

  3. 启动容器(包括计算,网络环境以及文件系统),然后在选定的容器中执行 FaaS 应用程序。

对于FaaS这样的程序,快速启动在计算以及网络方面都有相应的优化方案,在这篇文章中不再赘述。但是对于容器镜像的下载以及容器文件系统的构建,是我们今天讨论的重点。本文提出DPU (Data Processing Unit)/ IPU (Infrastructure processing Unit) 可以对容器的镜像以及文件系统的构建进行相应的卸载(offloading) 。//由于DPU 和IPU 是类似概念,文中后续内容主要采用IPU 这个说法。

2、解决方案

正常的容器启动,首先需要下载容器(container)的镜像(image),然后把下载来的容器的镜像层进行解压(unpack)操作,接着选择容器的一个Runtime time进行启动。当然目前也有一些工作,是在容器生命管理周期软件(诸如containerd)中采用特定snapshot实现,从而在容器启动后可以按需获取解压后的镜像内容。我们在2023年SDC会议上的议题 [1] 提出可以使用IPU进行容器启动前镜像的准备工作,包括镜像的管理以及unpack操作。那么容器的镜像将完全放入IPU,而不用存放在主机中。具体的做法:

  1. 容器的管理软件需要和IPU进行通信,即让IPU 完成整个容器镜像的准备工作;

  2. 接着IPU 通知主机中的管

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值