System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于云盘制作镜像缓存加速容器启动的方法技术_技高网

一种基于云盘制作镜像缓存加速容器启动的方法技术

技术编号:40912800 阅读:2 留言:0更新日期:2024-04-18 14:40
本发明专利技术涉及Kubernetes云平台技术领域,特别涉及一种基于云盘制作镜像缓存加速容器启动的方法,方法包括:利用Kubernetes CustomResource和Operator模式进行镜像缓存管理;利用云盘功能和云盘快照功能完成镜像缓存制作与使用。

【技术实现步骤摘要】

本专利技术涉及kubernetes云平台,特别涉及一种基于云盘制作镜像缓存加速容器启动的方法


技术介绍

1、从容器技术诞生以来,镜像技术极大方便开发人员创建和交付云原生应用,让开发人员打包应用文件和组件的轻量级软件包,发布到镜像仓库上以便重复利用,镜像仓库负责保存分发镜像文件。

2、oci image format,开放容器镜像格式标准,包含manifest、config、index和zip压缩包等文件,这些文件共同作用构建容器根目录所需文件。从制作镜像到容器使用镜像,是一个正向反向操作,制作镜像则是压缩上传文件到仓库,使用镜像是下载解析解压过程。

3、containerd,一种容器运行时,提供oci image操作能力,按照oci标准制作镜像和使用镜像启动容器,提供容器运行时接口cri插件,kubernetes通过grpc方式调用cri操作容器,包括启动容器、销毁容器等。

4、containerd snapshot,containerd中一个插件,用于管理文件系统上的容器镜像的快照,为容器提供rootfs制作、挂载和卸载等操作功能。

5、容器启动需要经过以下阶段:1.从镜像仓库拉取镜像文件;2.解析镜像文件,解压镜像文件压缩包;3.基于镜像文件制作容器启动目录;4.准备网络环境……启动容器。从远程仓库拉取镜像,并解压文件依赖网络连通情况需消耗较长时间和大量cpu算力。

6、随着基于kubernetes平台普及和发展,不需要开发人员管理的服务器的serverless技术快速发展,基于serverless的云原生开发模型,开发人员可快速构建、部署、运行应用程序。对比部署主机后再创建kubernetes集群再部署pod的方式,serverless部署让开发人员只关心业务实例的发布和运行,实现快速扩缩集群实例,弹性伸缩容量,充分发挥kubernetes编排能力。但镜像的拉取与准备扔耗费大量时间,降低编排效率。containerd已提出stargz snapshotter等解决方案,但需修改镜像格式,引入新的组件,增加系统的复杂度与运维成本。

7、云厂商云盘,是一种高可用、高可靠、低成本、可定制化的块存储设备。可作为服务器独立扩展磁盘使用。


技术实现思路

1、本专利提出一种基于云盘制作镜像缓存加速容器启动的方法。对于基于serverless部署的应用,拉取镜像、解析镜像准备容器rootfs的耗时显得尤为突出。且对于实例扩容,拉取镜像、解压、准备容器启动根目录是重复的工作,把这些重复工作压缩或减少可大幅降低容器实例启动耗时。同时,基于ceph的分布式存储在集群内部挂载可实现低延迟访问,对比需要访问外部网络远程仓库,访问内部网络分布式存储耗时可忽略,实现高速读取文件。在serverless平台部署应用时,开发人员会遇到如下问题:1、启动容器拉取镜像,准备容器镜像时等待较长时间,无法满足serverless对比普通kubernetes集群快速启动弹性伸缩的特点;2、在遇到流量突涨时,无法快速增加容器实例应对流量冲击。

2、本专利尝试使用块存储快照能力保存容器根目录快照,在启动容器时使用云盘快照生成磁盘实例,并挂载到本地目录,使用挂载磁盘制作容器启动目录,缩减从远程镜像仓库拉取镜像文件、解压等耗时,实现容器秒级启动,弹性伸缩容。

3、本专利技术的技术方案如下:

4、一种基于云盘制作镜像缓存加速容器启动的方法,该方法包括如下步骤:

5、s1、利用kubernetes customresource和operator模式进行镜像缓存管理;

6、s2、利用云盘功能和云盘快照功能完成镜像缓存制作与使用。

7、本专利技术进一步的改进在于,所述s1中镜像缓存管理包括以下具体步骤:

8、s11、创建kubernetes imagecache customresourcedefinition配置文件,并加载到kubernetes集群中;

9、s12、在创建pod时,查询imagecache列表,与pod镜像比较,镜像名称与版本相同则匹配镜像缓存,更新imagecache状态,否则不匹配,新建镜像缓存imagecache;

10、s13、删除镜像缓存,使用kubernetes kubectl delete命令删除customresource,并删除云盘快照;

11、s14、删除过期镜像缓存,kubernetes集群内独立启动cronjob容器,比较imagecache的createtime+retentiondays是否大于当前时间,是则更新为删除状态并执行删除操作。

12、本专利技术进一步的改进在于,所述s1中customresource定义镜像缓存必要属性,具体内容包含镜像缓存id、镜像名称、所需磁盘容量大小。

13、本专利技术进一步的改进在于,所述s1中operator负责管理customresource生命周期,并在不同状态完成不同工作。

14、本专利技术进一步的改进在于,所述s2中镜像缓存制作包括以下具体步骤:

15、s21、在新建pod时,通过pod annotation标记容器进行新建镜像缓存或使用镜像缓存操作;

16、s22、新建镜像缓存,创建新的imagecache customresource,imagecacheoperator接收到customresource事件后开始施工制作镜像缓存。

17、本专利技术进一步的改进在于,所述s21中通过pod annotation标记容器进行新建镜像缓存或使用镜像缓存操作的具体内容为:若命中镜像缓存,则添加annotation,key为example.com/matched-image-cache,值为镜像缓存id,新建镜像缓存时,则添加annotation,key为example.com/imc-id,值为镜像缓存id。

18、本专利技术进一步的改进在于,所述s22包括以下具体步骤:

19、s221、生成新的云盘实例,挂载到pod所在主机镜像缓存目录`/data/imc-xxx`;

20、s222、在pod容器启动后,查询容器snapshot信息,复制snapshot子目录至`/data/imc-xxx/snapshots`下,复制snapshot组件metadata.db文件至镜像缓存目录;

21、s223、使用ctr image export命令导出镜像压缩包至`/data/imc-xxx`目录;

22、s224、使用`/data/imc-xxx`目录文件生成云盘快照。

23、本专利技术进一步的改进在于,所述s2中镜像缓存使用的具体内容为:更新imagecache customresource lastmatched字段为podname,imagecache operator收到更新本文档来自技高网...

【技术保护点】

1.一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:包括以下具体步骤:

2.根据权利要求1所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S1中镜像缓存管理包括以下具体步骤:

3.根据权利要求2所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S1中CustomResource定义镜像缓存必要属性,具体内容包含镜像缓存ID、镜像名称、所需磁盘容量大小。

4.根据权利要求3所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S1中Operator负责管理CustomResource生命周期,并在不同状态完成不同工作。

5.根据权利要求4所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S2中镜像缓存制作包括以下具体步骤:

6.根据权利要求5所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S21中通过Pod Annotation标记容器进行新建镜像缓存或使用镜像缓存操作的具体内容为:若命中镜像缓存,则添加Annotation,key为example.com/matched-image-cache,值为镜像缓存ID,新建镜像缓存时,则添加Annotation,key为example.com/imc-id,值为镜像缓存ID。

7.根据权利要求6所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S22包括以下具体步骤:

8.根据权利要求7所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S2中镜像缓存使用的具体内容为:更新ImageCache CustomResource LastMatched字段为PodName,ImageCache Operator收到更新事件后开始施工为容器准备镜像缓存。

9.根据权利要求8所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S2中镜像缓存使用包括以下具体步骤:

10.根据权利要求9所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述S2中镜像缓存使用时,以镜像缓存云盘快照生成云盘实例,挂载在Node所在主机上,containerd以云盘实例文件制作容器rootfs。

...

【技术特征摘要】

1.一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:包括以下具体步骤:

2.根据权利要求1所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述s1中镜像缓存管理包括以下具体步骤:

3.根据权利要求2所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述s1中customresource定义镜像缓存必要属性,具体内容包含镜像缓存id、镜像名称、所需磁盘容量大小。

4.根据权利要求3所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述s1中operator负责管理customresource生命周期,并在不同状态完成不同工作。

5.根据权利要求4所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述s2中镜像缓存制作包括以下具体步骤:

6.根据权利要求5所述的一种基于云盘制作镜像缓存加速容器启动的方法,其特征在于:所述s21中通过pod annotation标记容器进行新建镜像缓存或使用镜像缓存操作的具体内容为:若命中镜像缓存,则添加annotation,key为...

【专利技术属性】
技术研发人员:陈健培
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1