首页> 中国专利> 基于kubernetes上传容器镜像文件到容器镜像仓库的方法及装置

基于kubernetes上传容器镜像文件到容器镜像仓库的方法及装置

摘要

本发明提供了一种基于kubernetes上传容器镜像文件到容器镜像仓库的方法及装置,构建能创建Pod实例的封装了容器管理软件客户端程序的客户端程序容器镜像文件,并将其上传到容器镜像仓库得到其位置路径;根据位置路径编辑DaemonSet控制器配置信息并创建DaemonSet控制器,提取客户端程序容器镜像文件在各主机上创建Pod实例;对所有的Pod实例进行筛选;在筛选出的Pod实例中执行拟上传的容器镜像文件的操作指令。本发明通过筛选Pod实例,在主机负载较低的pod实例上进行上传,平衡了主机之间的负载平衡。当有大量的容器镜像文件进行推送时,在多个主机的pod实例中筛选出主机负载较低的多个pod实例上传多个镜像文件,大幅提高推送大量镜像文件到容器镜像仓库的效率。

著录项

  • 公开/公告号CN113806022A

    专利类型发明专利

  • 公开/公告日2021-12-17

    原文格式PDF

  • 申请/专利权人 梯度云科技(北京)有限公司;

    申请/专利号CN202111362323.1

  • 发明设计人 王伟华;梅进;樊宇;刘井山;

    申请日2021-11-17

  • 分类号G06F9/455(20060101);H04L29/08(20060101);

  • 代理机构11885 北京融智邦达知识产权代理事务所(普通合伙);

  • 代理人董惠文

  • 地址 101100 北京市通州区榆西一街1号院4号楼5层502室713

  • 入库时间 2023-06-19 13:45:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-03-15

    授权

    发明专利权授予

说明书

技术领域

本发明属于大数据作业领域,尤其是涉及一种基于kubernetes上传容器镜像到容器镜像仓库的方法及装置。

背景技术

随着互联网行业的快速发展,互联网与传统行业的深度融合,在快速变幻的市场环境中,业务模式不断地推陈出新,使应用软件必须快速迭代以适应新的业务需求。在此背景下,通过容器部署应用软件越来越广泛,从而需要频繁使用容器管理软件推送容器镜像到容器镜像仓库的操作。

在实际使用中,在安装有容器管理软件客户端的主机上执行加载、推送命令会占用主机资源,当主机负载高时会严重影响同主机其它软件运行的性能。此外当有大量容器镜像文件需要推送到容器镜像仓库中时,存在加载、推送时间过长的情况,使得工作效率低下。

发明内容

本发明要解决的技术问题是怎样高效率的将容器镜像文件推送到容器镜像仓库,提出了一种基于kubernetes上传容器镜像到容器镜像仓库的方法及装置。

为解决上述技术问题,本发明所采用的技术方案是:

一种基于kubernetes上传容器镜像文件到容器镜像仓库的方法,包括以下步骤:

步骤1:构建能创建Pod实例的封装了容器管理软件客户端程序的客户端程序容器镜像文件,并将所述客户端程序容器镜像文件保存到容器镜像仓库,得到所述客户端程序容器镜像文件的位置路径;

步骤2:根据所述客户端程序容器镜像文件的位置路径编辑Kubernetes容器编排软件中的DaemonSet控制器的配置信息,根据所述配置信息创建DaemonSet控制器,根据DaemonSet控制器配置信息中的客户端程序容器镜像文件的位置路径从所述容器镜像仓库中提取出客户端程序容器镜像文件,并根据所述客户端程序容器镜像文件在多台主机上创建Pod实例;

步骤3:对DaemonSet控制器所控制的多台主机上的Pod实例进行筛选;

步骤4:获取拟上传的容器镜像文件地址,根据拟上传的容器镜像文件地址创建上传到容器镜像仓库的容器镜像操作指令;

步骤5:在筛选出的Pod实例中执行容器镜像操作指令,将拟上传的容器镜像文件上传到容器镜像仓库中。

进一步地,步骤2中所述DaemonSet控制器的配置信息中指定镜像键为所述客户端程序容器镜像文件的位置路径、指定限额键中CPU和内存的配额。

进一步地,步骤3中进行筛选的方法是:通过Kubernetes容器编排软件提供的kubectl get pod命令筛选出正在运行的Pod实例,根据各个Pod实例信息获得Pod所在主机的地址,根据主机地址获取主机负载情况信息,选择出所在主机负载最低的Pod实例。

进一步地,步骤5在筛选出的Pod实例中执行容器镜像操作指令的方法是:通过Kubernetes容器编排软件提供的kubectl exec命令向筛选出的Pod实例发送容器镜像操作指令。

进一步地,所述容器镜像操作指令包括下载拟上传的容器镜像文件到pod实例、加载拟上传的容器镜像文件到pod实例、指定拟上传的容器镜像文件的镜像标签、推送拟上传的容器镜像文件到容器镜像仓库以及清理资源的指令,其中下载的指令参数指定为拟上传的容器镜像文件的位置路径。

进一步地,当所述容器镜像文件为多个时,在步骤3中从多个主机上对DaemonSet控制器所控制的正在运行的Pod实例进行筛选,筛选方法是:对正在运行的Pod实例所在主机负载进行排序,从所在主机负载最小的开始选出所需数量的Pod实例。

进一步地,当所述容器镜像文件为多个时,在步骤4中,

为每个拟上传的容器镜像文件分别创建容器镜像操作指令;

在筛选出的多个Pod实例中并行执行多个容器镜像操作指令,将多个拟上传的容器镜像文件上传到容器镜像仓库中。

进一步地,在筛选出的多个Pod实例中并行执行多个容器镜像操作指令时,优先选择从所在主机负载最低的Pod实例开始执行。

一种基于kubernetes上传容器镜像文件到容器镜像仓库的装置,包括以下模块:

客户端程序容器镜像文件路径获取模块:用于构建能创建Pod实例的封装了容器管理软件客户端程序的客户端程序容器镜像文件,并将所述客户端程序容器镜像文件保存到容器镜像仓库,得到所述客户端程序容器镜像文件的位置路径;

Pod实例创建模块:用于根据所述客户端程序容器镜像文件的位置路径编辑Kubernetes容器编排软件中的DaemonSet控制器的配置信息,根据所述配置信息创建DaemonSet控制器,根据DaemonSet控制器配置信息中的客户端程序容器镜像文件的位置路径从所述容器镜像仓库中提取出客户端程序容器镜像文件,并根据所述客户端程序容器镜像文件在多台主机上创建Pod实例;

筛选模块:对DaemonSet控制器所控制的多台主机上的Pod实例进行筛选;

容器镜像操作指令创建模块:用于获取拟上传的容器镜像文件地址,根据拟上传的容器镜像文件地址创建上传到容器镜像仓库的容器镜像操作指令;

上传模块:用于在筛选出的Pod实例中执行容器镜像操作指令,将拟上传的容器镜像文件上传到容器镜像仓库中。

采用上述技术方案,本发明具有如下有益效果:

本发明提供的一种基于kubernetes上传容器镜像文件到容器镜像仓库的方法及装置,通过筛选DaemonSet控制器包含的Pod实例,选择出所在主机负载较低的pod实例执行创建容器镜像操作指令,可以平衡主机之间的负载平衡。当有大量的容器镜像文件进行推送时,可以在多个主机上的pod实例中筛选出所在主机负载较低的多个pod实例并行加载、推送不同的容器镜像文件,可大幅提高推送大量容器镜像文件到容器镜像仓库的效率。通过指定DaemonSet控制器包含的Pod资源运行的CPU、内存最大使用量配额,当主机负载高时在Pod中执行加载、推送命令只会占用指定的CPU、内存使用量,不会影响同主机其它软件运行的性能。

附图说明

图1为本发明系统流程图;

图2为本发明具体实施例示意图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1和图2给出了本发明一种基于kubernetes上传容器镜像到容器镜像仓库的方法的具体实施例,包括以下步骤:

步骤1:构建能创建Pod实例的封装了容器管理软件客户端程序的客户端程序容器镜像文件,并将所述客户端程序容器镜像文件保存到容器镜像仓库,得到所述客户端程序容器镜像文件的位置路径。本实施例中,容器管理软件使用Docker,客户端程序容器镜像文件为封装了Docker容器管理软件的镜像文件。通过Docker容器管理软件提供的方法,把Docker容器管理软件客户端程序封装到客户端程序容器镜像文件中。构建容器镜像文件的方法使用Dockerfile。容器镜像仓库为存储容器镜像的存储库,使用Harbor做为容器镜像仓库。通过Docker容器管理软件提供的方法,保存封装了Docker容器管理软件客户端程序的容器镜像到Harbor容器镜像仓库,执行命令docker push进行推送镜像到镜像仓库。

步骤2:根据所述客户端程序容器镜像文件的位置路径编辑Kubernetes容器编排软件中的DaemonSet控制器的配置信息,根据所述配置信息创建DaemonSet控制器,根据DaemonSet控制器配置信息中的客户端程序容器镜像文件的位置路径从所述容器镜像仓库中提取出客户端程序容器镜像文件,并根据所述客户端程序容器镜像文件在多台主机上创建Pod实例。本实施例中,使用kubectl apply命令在Kubernetes容器编排软件中创建DaemonSet控制器资源。DaemonSet控制器的配置信息中指定镜像键为所述容器镜像文件的位置路径、指定限额键中CPU和内存的配额,配额为DaemonSet控制器包含的Pod资源运行的CPU和内存最大使用量,也是运行在Pod中的封装了容器管理软件客户端程序的容器在执行加载、推送命令所能占用主机的最大CPU和内存使用量,通过指定DaemonSet控制器包含的Pod资源运行的CPU和内存最大使用量配额,当主机负载高时在Pod中执行加载、推送命令只会占用指定的CPU和内存使用量,不会影响同主机其它软件运行的性能;指定亲和性键、主机选择键、容忍键等,使DaemonSet控制器控制的Pod资源运行在需要执行容器镜像文件推送指令的主机上。

步骤3:对DaemonSet控制器所控制的多台主机上的Pod实例进行筛选。本实施例中进行筛选的方法是:通过Kubernetes容器编排软件提供的kubectl get pod命令筛选出正在运行的Pod实例,通过Kubernetes容器编排软件提供的kubectl get node命令查询出Pod实例对应的主机信息,依据主机的负载情况选择负载最低的主机执行加载、推送指令,使主机可以安全、稳定的执行加载、推送指令。当有大量的镜像文件进行推送时,通过筛选DaemonSet控制器所控制的正在运行的Pod实例,筛选方法是:对正在运行的Pod实例所在主机负载进行排序,从所在主机负载最小的开始选出所需数量的Pod实例。在多个主机的Pod实例中并行加载、推送不同的镜像文件,可大幅提高推送大量镜像文件到容器镜像仓库的效率。

步骤4:获取拟上传的容器镜像文件地址,根据拟上传的容器镜像文件地址创建上传到容器镜像仓库的容器镜像操作指令。本实施例中,将拟上传的容器镜像文件地址写进容器镜像操作指令中,从而在执行容器镜像操作指令时,将拟上传的容器镜像文件从拟上传的容器镜像文件地址下载到筛选出的pod实例中。所述容器镜像操作指令包括下载拟上传的容器镜像文件到pod实例、加载拟上传的容器镜像文件到pod实例、指定拟上传的容器镜像文件的镜像标签、推送拟上传的容器镜像文件到容器镜像仓库以及清理资源的指令,其中下载的指令参数指定为拟上传的容器镜像文件的位置路径。下载拟上传的容器镜像文件到pod实例,通过wget命令与拟上传的容器镜像文件路径地址,拷贝拟上传的容器镜像文件到Pod内的容器内;加载拟上传的容器镜像文件到pod实例,通过docker load命令把拟上传的容器镜像文件加载到Pod实例中;指定拟上传的容器镜像文件的镜像标签,通过dockertag命令为拟上传的容器镜像文件指定需要的标签;推送拟上传的容器镜像文件到容器镜像仓库,通过docker push命令把拟上传的容器镜像文件推送到Harbor容器镜像仓库进行保存;清理资源,将Pod中封装了Docker容器管理软件客户端程序的容器内不需要保存的文件、容器镜像进行清理,使用docker rmi命令清理容器镜像,使用rm 命令清理不需要的文件,使容器环境恢复到执行加载、推送命令前的状态。

步骤5:在筛选出的Pod实例中执行容器镜像操作指令,将拟上传的容器镜像文件上传到容器镜像仓库中。本实施例中,通过Kubernetes容器编排软件提供的kubectl exec命令,向筛选出的Pod实例发送容器镜像要执行的容器镜像操作指令。当有大量的容器镜像文件进行推送时,通过Kubernetes容器编排软件提供的kubectl get pod命令从多个主机上对DaemonSet控制器所包含的正在运行的Pod实例进行筛选,筛选出多个所在主机负载较低的Pod实例;为每个将要上传的容器镜像文件创建容器镜像操作指令;在筛选出的多个Pod实例中并行执行多个容器镜像操作指令,实现多个容器镜像文件的上传。通过kubectlexec命令分别并行向选出的多个Pod发送要执行的容器操作指令,从而把大量的镜像文件推送工作分散到不同主机的Pod中,可大幅提高推送大量镜像文件到容器镜像仓库的效率。在筛选出的多个Pod实例中并行执行多个容器镜像操作指令时,优先选择从所在主机负载最低的Pod实例开始执行。

本发明还提供了一种基于kubernetes上传容器镜像文件到容器镜像仓库的装置,包括以下模块:

客户端程序容器镜像文件路径获取模块:用于构建能创建Pod实例的封装了容器管理软件客户端程序的客户端程序容器镜像文件,并将所述客户端程序容器镜像文件保存到容器镜像仓库,得到所述客户端程序容器镜像文件的位置路径;

Pod实例创建模块:用于根据所述客户端程序容器镜像文件的位置路径编辑Kubernetes容器编排软件中的DaemonSet控制器的配置信息,根据所述配置信息创建DaemonSet控制器,根据DaemonSet控制器配置信息中的客户端程序容器镜像文件的位置路径从所述容器镜像仓库中提取出客户端程序容器镜像文件,并根据所述客户端程序容器镜像文件在多台主机上创建Pod实例;

筛选模块:对DaemonSet控制器所包含的多台主机上的Pod实例进行筛选;

容器镜像操作指令创建模块:用于获取拟上传的容器镜像文件地址,根据拟上传的容器镜像文件地址创建上传到容器镜像仓库的容器镜像操作指令;

上传模块:用于在筛选出的Pod实例中执行容器镜像操作指令,将拟上传的容器镜像文件上传到容器镜像仓库中。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号