System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及容器镜像服务领域,具体涉及一种snapshotter适配装置及方法。
技术介绍
1、在容器技术的发展过程中,docker作为最早的容器化平台之一,引入了命名空间和控制组等技术,使得应用程序能够在隔离的环境中运行。随着kubernetes(k8s)的出现,容器编排和管理变得更加高效和灵活。kubernetes最初与docker紧密耦合,但随着容器运行时的多样化,kubernetes逐渐转向使用containerd作为其容器运行时。containerd作为一个高性能的容器管理工具,提供了更好的插件化架构和存储驱动支持,其中snapshotter是其重要组成部分,负责管理容器的文件系统快照。
2、尽管containerd支持多种snapshotter,但在kubernetes中,kubelet通过cri调用containerd时只能全局指定一个snapshotter,这限制了不同镜像使用不同snapshotter的灵活性,尤其在某些snapshotter与特定镜像不兼容的情况下,导致了资源的浪费和管理的复杂性。
技术实现思路
1、本公开实施例提供一种snapshotter适配装置及方法,旨在解决上述
技术介绍
存在的问题。
2、为了解决上述技术问题,本公开是这样实现的:
3、第一方面,本公开实施例提供了一种snapshotter适配装置,所述装置包括:snapshotter特征库、监听服务模块以及containerd客户端;
4、所述
5、所述监听服务模块,用于响应来自kubelet的镜像拉取请求,获取待拉取的目标容器镜像对应的manifest文件,并基于所述snapshotter特征库,根据所述manifest文件的manifest类型确定与所述目标容器镜像适配的目标snapshotter;
6、所述containerd客户端,用于向containerd转发所述镜像拉取请求,并指定所述目标snapshotter,以通过所述containerd拉取所述目标容器镜像。
7、可选地,所述snapshotter特征库预设有已知的manifest类型与对应的snapshotter之间的第一映射关系,所述第一映射关系通过内部编码的方式加载于所述snapshotter特征库。
8、可选地,所述snapshotter特征库预设有除所述第一映射关系之外的第二映射关系,所述第二映射关系通过环境变量或命令行参数的方式定义并加载于所述snapshotter特征库。
9、可选地,所述监听服务模块,还用于根据所述镜像拉取请求确定所述目标容器镜像的属性信息,并基于所述snapshotter特征库,根据所述目标容器镜像的属性信息确定与所述目标容器镜像适配的目标snapshotter;所述属性信息至少包括:所述目标容器镜像所属的命名空间、所述目标容器镜像所属的镜像仓库、所述目标容器镜像的tag后缀以及所述目标容器镜像的tag前缀。
10、可选地,所述监听服务模块包括未知服务处理器;
11、所述监听服务模块,还用于响应来自其他containerd客户端的其他接口请求,通过所述未知服务处理器将所述其他接口请求转发至所述containerd。
12、可选地,所述监听服务模块,用于记录原有的containerd套接字文件,并将所述原有的containerd套接字文件转移到新的位置;创建与所述原有的containerd套接字文件的文件名相同的新的套接字文件;
13、所述监听服务模块,用于通过所述新的套接字文件监听来自kubelet的镜像拉取请求,以及来自其他containerd客户端的其他接口请求;
14、所述监听服务模块,用于响应来自kubelet的镜像拉取请求,以及来自其他containerd客户端的其他接口请求,通过所述原有的containerd套接字文件将所述镜像拉取请求发送至所述containerd。
15、可选地,所述监听服务模块,用于根据所述原有的containerd套接字文件,建立指向所述原有的containerd套接字文件的软链接;
16、所述软链接,用于在所述snapshotter适配装置停止运行的情况下,将来自kubelet或其他containerd客户端的请求转发至所述原有的containerd套接字文件。
17、可选地,所述装置还包括验证模块;
18、所述验证模块,用于在所述snapshotter特征库中写入第一验证镜像和对应snapshotter之间的映射关系,所述第一验证镜像为加速版本的容器镜像;
19、所述验证模块,还用于创建并运行第二验证镜像,并检查所述第一验证镜像所在的根目录中是否有新内容生成,所述第二验证镜像为普通版本的容器镜像;
20、在所述第一验证镜像所在的根目录中没有新内容生成的情况下,创建并运行第一验证镜像,检查所述第一验证镜像是否运行成功;
21、在检查到所述第一验证镜像运行成功的情况下,确定所述snapshotter适配装置通过验证。
22、第二方面,本公开实施例提供了一种snapshotter适配方法,应用于一种snapshotter适配装置,所述方法包括:
23、响应于来自kubelet的镜像拉取请求,获取待拉取的目标容器镜像对应的manifest文件;
24、基于所述snapshotter特征库,根据所述manifest文件的manifest类型确定与所述目标容器镜像适配的目标snapshotter;
25、向containerd转发所述镜像拉取请求,并指定所述目标snapshotter,以通过所述containerd拉取所述目标容器镜像。
26、可选地,所述基于所述snapshotter特征库,根据所述manifest文件的manifest类型确定与所述目标容器镜像适配的目标snapshotter,包括:
27、解析所述manifest文件,确定所述manifest文件所属的manifest类型;
28、在所述snapshotter特征库中查找与所述manifest类型匹配的映射关系;
29、在查找到与所述manifest类型匹配的映射关系的情况下,将该映射关系所对应的snapshotter确定为所述目标snapshotter;
30、在未查找到与所述manifest类型匹配的映射关系的情况下,将默认指定的snapshotter确定为所述目标snapshotter。
31、本公开的实施例提供的技术方案至少带来以下有益效果:
32、本公开通过引入snapshotter特征库和监听服务模块,实现了对不同manifest类型的动态适配本文档来自技高网...
【技术保护点】
1.一种snapshotter适配装置,其特征在于,所述装置包括:snapshotter特征库、监听服务模块以及containerd客户端;
2.根据权利要求1所述的装置,其特征在于,所述snapshotter特征库预设有已知的manifest类型与对应的snapshotter之间的第一映射关系,所述第一映射关系通过内部编码的方式加载于所述snapshotter特征库。
3.根据权利要求2所述的装置,其特征在于,所述snapshotter特征库预设有除所述第一映射关系之外的第二映射关系,所述第二映射关系通过环境变量或命令行参数的方式定义并加载于所述snapshotter特征库。
4.根据权利要求1所述的装置,其特征在于,所述监听服务模块,还用于根据所述镜像拉取请求确定所述目标容器镜像的属性信息,并基于所述snapshotter特征库,根据所述目标容器镜像的属性信息确定与所述目标容器镜像适配的目标snapshotter;所述属性信息至少包括:所述目标容器镜像所属的命名空间、所述目标容器镜像所属的镜像仓库、所述目标容器镜像的tag后缀以及所述目标容
5.根据权利要求1所述的装置,其特征在于,所述监听服务模块包括未知服务处理器;
6.根据权利要求5所述的装置,其特征在于,所述监听服务模块,用于记录原有的containerd套接字文件,并将所述原有的containerd套接字文件转移到新的位置;创建与所述原有的containerd套接字文件的文件名相同的新的套接字文件;
7.根据权利要求6所述的装置,其特征在于,所述监听服务模块,用于根据所述原有的containerd套接字文件,建立指向所述原有的containerd套接字文件的软链接;
8.根据权利要求1所述的装置,其特征在于,所述装置还包括验证模块;
9.一种snapshotter适配方法,其特征在于,应用于如权利要求1-8任一项所述的snapshotter适配装置,所述方法包括:
10.根据权利要求9所述的方法,其特征在于,所述基于所述snapshotter特征库,根据所述manifest文件的manifest类型确定与所述目标容器镜像适配的目标snapshotter,包括:
...【技术特征摘要】
1.一种snapshotter适配装置,其特征在于,所述装置包括:snapshotter特征库、监听服务模块以及containerd客户端;
2.根据权利要求1所述的装置,其特征在于,所述snapshotter特征库预设有已知的manifest类型与对应的snapshotter之间的第一映射关系,所述第一映射关系通过内部编码的方式加载于所述snapshotter特征库。
3.根据权利要求2所述的装置,其特征在于,所述snapshotter特征库预设有除所述第一映射关系之外的第二映射关系,所述第二映射关系通过环境变量或命令行参数的方式定义并加载于所述snapshotter特征库。
4.根据权利要求1所述的装置,其特征在于,所述监听服务模块,还用于根据所述镜像拉取请求确定所述目标容器镜像的属性信息,并基于所述snapshotter特征库,根据所述目标容器镜像的属性信息确定与所述目标容器镜像适配的目标snapshotter;所述属性信息至少包括:所述目标容器镜像所属的命名空间、所述目标容器镜像所属的镜像仓库、所述目标容器镜像的tag后缀以及所述目标...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。