CN111897550B - 镜像预加载方法、设备及存储介质 - Google Patents

镜像预加载方法、设备及存储介质 Download PDF

Info

Publication number
CN111897550B
CN111897550B CN202010752296.8A CN202010752296A CN111897550B CN 111897550 B CN111897550 B CN 111897550B CN 202010752296 A CN202010752296 A CN 202010752296A CN 111897550 B CN111897550 B CN 111897550B
Authority
CN
China
Prior art keywords
node
mirror image
scheduling
host
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010752296.8A
Other languages
English (en)
Other versions
CN111897550A (zh
Inventor
李连强
孙宏亮
杨桐玲
马宏涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Hytera Technology Corp ltd
Original Assignee
Harbin Hytera Technology Corp ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Hytera Technology Corp ltd filed Critical Harbin Hytera Technology Corp ltd
Priority to CN202010752296.8A priority Critical patent/CN111897550B/zh
Publication of CN111897550A publication Critical patent/CN111897550A/zh
Application granted granted Critical
Publication of CN111897550B publication Critical patent/CN111897550B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明提供了镜像预加载方法、设备及存储介质,所述方法包括:根据获取的Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果;按照预判调度结果,将指定镜像的信息发送至优选节点,以使优选节点提前从镜像仓库中拉取指定镜像,并在优选节点实现指定镜像的预加载,从而能够在Kubernetes调度服务执行实际调度之前,就在相应宿主机节点处实现指定镜像的预加载,且无需人工干预,从而提高了镜像预加载过程的准确性、可靠性与高效性。

Description

镜像预加载方法、设备及存储介质
技术领域
本发明涉及计算机技术领域,更具体的说,涉及镜像预加载方法、设备及存储介质。
背景技术
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能,它已成为容器编排领域的事实标准。
目前,应用/服务的部署、扩容到哪台宿主机,都是通过Kubernetes调度服务来指定的,Kubernetes调度服务会检查所有符合该应用/服务要求的节点Node列表,开始执行调度逻辑,并在调度成功后,将应用/服务绑定到优选节点上,然后优选节点上的kubelet服务就会从指定的镜像仓库中拉取镜像包,最终完成整个应用/服务的部署、扩容、升级。但是在拉取镜像的过程中,经常会因为节点分布、网络状况及应用(镜像包)的大小等诸多因素的影响,轻则导致应用/服务能提供服务的时间被延迟,重则导致部署失败,尤其在升级和扩容等对时间有苛刻要求的场景下,这更是不能容忍的。现有的解决方案通常是将镜像按人工制定的策略上传到宿主机上,这样就不需要从远程仓库进行拉取下载,以达到预加载效果,或者提前由分发系统将镜像同步到离集群较近的边缘节点的镜像库中,以减少网络传输时间,但是上述解决方案存在人工干预易出错,占用资源多,效率低等诸多问题,而并不能准确、可靠且高效地完成镜像的预加载。
因此,目前迫切需要一种切实有效的镜像预加载方案,以提高镜像预加载过程的准确性、可靠性与高效性。
发明内容
有鉴于此,本发明提供了一种镜像预加载方法、设备及存储介质,以解决目前镜像预加载方案并不能准确、可靠且高效地完成镜像的预加载的技术问题。
为实现上述目的,本发明提供如下技术方案:
一种镜像预加载方法,包括:
获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑;
根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果;其中,所述预判调度结果至少包括:按照所述调度预判策略,从所述Kubernetes集群的宿主机节点中确定出来的优选节点;
按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载。
优选的,所述获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑包括:
采用周期性轮询的方式,定期获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑。
优选的,所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果包括:
根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分;
将所述各个宿主机节点中得分最高的宿主机节点,确定为优选节点,并作为预判调度结果。
优选的,所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果包括:
查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD;
若Kubernetes集群中存在正在运行的、且与所述指定镜像的信息相匹配的POD,则获取所述POD的信息;
根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果。
优选的,在所述根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果之后,所述方法还包括:
获取Kubernetes集群中其他宿主机节点的节点状态、资源使用情况与服务拓扑;
根据所述其他宿主机节点的节点状态、资源使用情况与服务拓扑,按照所述预设计算规则,计算所述其他宿主机节点的得分;
将所述其他宿主机节点中得分最高的宿主机节点,确定为优选节点,也作为预判调度结果。
优选的,在所述查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD之后,所述方法还包括:
若Kubernetes集群中不存在正在运行的、且与所述指定镜像的信息相匹配的POD,则执行所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分的步骤。
优选的,所述按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载包括:
按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点的镜像代理,以使所述优选节点的镜像代理提前从镜像仓库中拉取所述指定镜像,并在所述优选节点中预加载所述指定镜像。
优选的,在所述按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载之后,所述方法还包括:
获取Kubernetes调度服务对于所述指定镜像的实际调度结果,所述实际调度结果中至少包括:由Kubernetes调度服务从所述Kubernetes集群的宿主机节点中确定出来的目标节点;
当所述优选节点与所述目标节点不一致时,指示所述优选节点将已拉取的所述指定镜像分发给所述目标节点。
一种镜像预加载设备,包括:存储器与处理器;
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,以执行前述的镜像预加载方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序在被计算机设备调用时,执行前述的镜像预加载方法的步骤。
从上述的技术方案可以看出,本发明根据获取的Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果;按照预判调度结果,将指定镜像的信息发送至优选节点,以使优选节点提前从镜像仓库中拉取指定镜像,并实现指定镜像的预加载,从而能够在Kubernetes调度服务执行实际调度之前,就在相应宿主机节点处实现指定镜像的预加载,且无需人工干预,从而提高了镜像预加载过程的准确性、可靠性与高效性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例一提供的镜像预加载方法的流程图;
图2为本发明实施例二提供的预判调度结果获取过程的流程图;
图3为本发明实施例三提供的预判调度结果获取过程的流程图;
图4为本发明实施例四提供的镜像预加载方案的系统架构图;
图5为本发明实施例五提供的镜像预加载方法的流程图;
图6为本发明实施例六提供的镜像预加载方案的系统架构图;
图7为本发明实施例七提供的镜像预加载设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的技术方案提供一个Schedule(计划)调度服务,该Schedule调度服务动态监控Kubernetes集群中各个宿主机节点的节点状态、资源使用情况、与服务拓扑等信息,并通过预设的调度预判策略来对Kubernetes调度服务的调度结果进行预判,在得到预判调度结果后,该Schedule调度服务会将预判调度结果推送到预判调度结果所指示的各个优选节点上,以使各个优选节点能够提前拉取所需镜像,最终完成镜像的预加载。
实施例一
请参阅图1,图1为本发明实施例一提供的镜像预加载方法的流程图。
本实施例提供的镜像预加载方法,就是利用前面所提到的Schedule调度服务来实现的。
如图1所示,本实施例的镜像预加载方法包括:
S101:获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑。
节点状态主要包括:notready(未就绪状态)、unhealthy(异常状态)与ready(就绪状态)。
资源使用情况主要包括:磁盘剩余空间,内存剩余空间,CPU可使用空间与CPU可使用时间等。
服务拓扑,即已部署的POD,主要包括:已经运行的容器(Docker)、POD本身的运行参数(例如,亲和以及反亲和、资源请求参数,当前POD运行信息等)。
在一示例中,可以采用周期性轮询的方式,定期获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑;
在其他示例中,也可以采取其他预设触发机制,来自动触发获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑的步骤。
S102:根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果。
所述预判调度结果至少包括:按照所述调度预判策略,从所述Kubernetes集群的宿主机节点中确定出来的优选节点。该优选节点就是由调度预判策略预判出来的需要加载指定镜像的节点。
基于各个宿主机节点的节点状态、资源使用情况与服务拓扑等数据,采用调度预判策略,预判出Kubernetes调度服务将会将指定镜像调度至哪些节点上。
Kubernetes调度服务的调度策略主要有以下几种:
①、基于资源的调度策略:将镜像拉取到具有足够可用资源的宿主机节点上;
②、基于服务升级的调度策略:将镜像拉取到名称相同的容器所在的宿主机节点上;
③、基于亲和性、反亲和性调度策略:亲和性的调度策略是指服务的容器能运行在哪些节点上,反亲和性调度的策略是指服务的POD(包含一个或多个容器)可以和哪些POD部署在同一个拓扑域中,如果一个POD在某一台宿主机上运行,与之互斥的POD将不能被调度到该宿主机上。
POD是Kubernetes中能够创建和部署的最小单元。
本发明中的调度预判策略,可以是自定义的,并默认集成上述调度策略,使预判调度结果尽可能与实际调度结果相一致,而调度策略的计算算法则可以根据业务需要,以插件的方式集成到Schedule调度服务中。
S103:按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载。
基于预判调度结果,将指定镜像提前推送到相应的优选节点上,并在优选节点上执行指定镜像的加载过程,便能够在优选节点上实现指定镜像的预加载的目的。
宿主机节点中均配置有镜像代理Image-Client,具体可以按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点的镜像代理Image-Client,以使所述优选节点的镜像代理Image-Client提前从镜像仓库中拉取所述指定镜像,并在所述优选节点中预加载所述指定镜像。
本实施例提供的镜像预加载方法,根据预先获取到的Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑,并按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果,按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,从而能够在Kubernetes调度服务执行实际调度之前,就在相应宿主机节点处实现指定镜像的预加载,且无需人工干预,从而提高了镜像预加载过程的准确性、可靠性与高效性。
实施例二
请参阅图2,图2为本发明实施例二提供的预判调度结果获取过程的流程图。
本实施例提供的预判调度结果获取过程,用于实现前述实施例中根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果的步骤。
如图2所示,本实施例的预判调度结果获取过程包括:
S201:根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分。
预设计算规则可以是由用户自定义的,按照预设计算规则对各个宿主机节点进行打分,例如:按磁盘、CPU、内存空闲资源进行打分,节点剩余资源越多的,得分就越高;有污点标签越多的,得分就越低。
S202:将所述各个宿主机节点中得分最高的宿主机节点,确定为优选节点,并作为预判调度结果。
本实施例提供的预判调度结果获取过程,根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分,并将所述各个宿主机节点中得分最高的宿主机节点,确定为优选节点,并作为预判调度结果,从而基于节点状态、资源使用情况与服务拓扑等客观数据信息,实现了对调度结果的预判,提高了预判调度结果的准确性。
实施例三
请参阅图3,图3为本发明实施例三提供的预判调度结果获取过程的流程图。
本实施例提供的预判调度结果获取过程,同样用于实现前述实施例中根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果的步骤。
如图3所示,本实施例的预判调度结果获取过程包括:
S301:查询正在运行的POD。
查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD。
S302:判断是否存在匹配的POD,若是,则执行步骤S303;若否,则执行步骤S308。
也就是说,通过步骤S301-S302,查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD,若是,则执行步骤S303;若否,则执行步骤S308。
S303:获取匹配的POD的信息。
若Kubernetes集群中存在正在运行的、且与所述指定镜像的信息相匹配的POD,则获取所述正在运行的、且与所述指定镜像的信息相匹配的POD。
S304:将正在运行匹配的POD的宿主机节点,确定为优选节点。
根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果。例如,从Kubernetes集群中的所有宿主机节点中,筛选出正在运行所述POD的宿主机节点,并将其确定为优选节点,作为预判调度结果。
Schedule调度服务,获取Kubernetes集群中已运行的容器信息、相关POD信息及节点的信息,并根据当前运行POD及容器运行信息进行筛选,筛选条件为:目前运行该POD的所有节点均默认为优选节点,其中排除磁盘空间不足的节点。
S305:获取其他宿主机节点的信息。
获取Kubernetes集群中其他宿主机节点的节点状态、资源使用情况与服务拓扑。
S306:计算其他宿主机节点的得分。
根据所述其他宿主机节点的节点状态、资源使用情况与服务拓扑,按照所述预设计算规则,计算所述其他宿主机节点的得分;
S307:将其他宿主机节点中得分最高的宿主机节点,确定为优选节点。
将所述其他宿主机节点中得分最高的宿主机节点,确定为优选节点,也作为预判调度结果。
在将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果之后,还可以进一步从Kubernetes集群中其他宿主机节点中确定优选节点,也作为预判调度结果。例如,从Kubernetes集群中其他宿主机节点中,筛选出得分最高的宿主机节点,确定为优选节点,并作为预判调度结果。
在一示例中,在步骤S306之前,还可以先对其它宿主机节点进行一次筛选,筛选的策略可以包括:节点是否满足nodeSelector、nodeName的约束条件,是否可以容忍节点上的污点,POD需求的资源是否可以满足等,据此先将都满足的其它宿主机节点先筛选出来;然后,可以按照预设计算规则,对筛选出来的其他宿主机节点进行打分,评分高者同样被确定为优选节点,并作为预判调度结果。
其中,nodeSelector为Kubernetes节点选择标签;nodeName为Kubernetes节点名称。
其中,步骤S305-S307为可选步骤,可根据具体需求进行灵活取舍。
S308:根据各个宿主机节点的信息,计算各个宿主机节点的得分。
根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分。
若Kubernetes集群中不存在正在运行的、且与所述指定镜像的信息相匹配的POD,则执行根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分的步骤。
S309:将各个宿主机节点中得分最高的宿主机节点,确定为优选节点。
将所述各个宿主机节点中得分最高的宿主机节点,确定为优选节点,并作为预判调度结果。
其中,步骤S308-S309与前述实施例中的步骤S201-S202相类似,可以相互参照,在此不再赘述。
本实施例提供的预判调度结果获取过程,先查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD,若是,则获取相应的POD信息,根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点;若否,则根据所述其他宿主机节点的节点状态、资源使用情况与服务拓扑,按照所述预设计算规则,计算所述其他宿主机节点的得分,并将所述其他宿主机节点中得分最高的宿主机节点,确定为优选节点,从而根据不同的情况,采用不同的预判方式来获取预判调度结果,进而提高了预判方式的多样性与灵活性,提高了预判效率与预判结果的准确性。
实施例四
请参阅图4,图4为本发明实施例四提供的镜像预加载方案的系统架构图。
本发明的Schedule调度服务可以拆分成Schedule-Service(计划服务)与Resource-Service(资源服务)两部分来实现。
图4中,Resource-Service监控集群各个宿主机节点的节点状态、资源使用情况与服务拓扑等数据信息。Schedule-Service计算调度预判策略,并将相应的预判调度结果传送给Resource-Service。
本实施例的镜像预加载方案的系统流程如下:
A1、用户上传镜像到镜像仓库;
A2、镜像仓库推送镜像名称、版本到Resource-Service,Resource-Service获取集群的信息(采取周期性轮询的方式,定期获取集群中的节点信息、所有部署的服务信息等);
A3、Resource-Service根据第A2步的镜像信息查询当前集群下是否存在运行相同镜像名称的容器,若不存在,则执行第A4步,若存在,则执行第A5步;
A4、Resource-Service将所有节点信息发送到Schedule-Service,Schedule-Service按照用户自定义的预设计算规则进行节点打分,例如:按磁盘、CPU、内存空闲资源进行打分,节点剩余资源多的分值高;有污点标签越多的得分越低,最终计算得分最高的即为优选节点;
A5、Resource-Service获取集群中已运行的容器信息、相关POD信息及节点的信息发送给Schedule-Service,Schedule-Service根据当前运行POD及容器运行信息进行筛选,其中筛选条件为:目前运行该POD的所有节点默认为优选节点(磁盘空间不足的排除)。然后再筛选其它节点,筛选策略为:节点是否满足nodeSelector、nodeName约束条件,是否可以容忍节点上的污点,POD需求的资源是否可以满足,当都满足时则可以按第A4步的条件进行打分,评分高者即为优选节点;
A6、将所有优选节点及镜像信息发送给Resource-Service,Resource-Service将镜像信息发送给优选节点上的Image-Client;
A7、优选节点上的Image-Client从远端的镜像仓库(Remote Repository)拉取与Resource-Service推送的镜像信息相匹配的镜像,并完成预加载过程。
此外,在图4中,Kubernetes中的API-Server为Kubernets访问接口;Kubernetes中的Schedule为Kubernetes的调度器,用于提供调度服务;Kubernetes中的Controllermanager为Kubernetes的管理控制中心。
Host为宿主机节点;Host中的Kubelet是用于对Kubernetes上对容器全生命周期管理的服务(节点代理);Image-Client为镜像代理。
当Kubernetes通过编排创建了Pod之后,调度器会为这个Pod选择一个宿主机节点来运行,kubelet执行具体的创建操作。被选择的节点上的kubelet发起创建Pod的CRI请求,请求由实现CRI接口(CRIgrpc)的docker(容器)shim组件处理,shim组件将请求内容组装成相应容器API(client api)请求发给容器docker的Daemon。Daemon从本地的镜像仓库(LocalRegistry)中获取镜像,如果本地镜像存在所需的镜像文件则执行后续操作,否则需要拉取远程仓库的镜像,而本发明所解决的问题就是提前将服务所需要的指定镜像预加载到了本地的镜像仓库中,而无需在实际调度时再向远程仓库获取指定镜像。
CRI shim组件用于将CRI请求翻译成RuntimeAPI,并与Container Runtime进行交互。
本实施例提供的镜像预加载方案,根据预先获取到的Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑,并按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果,按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,从而能够在Kubernetes调度服务执行实际调度之前,就在相应宿主机节点处实现指定镜像的预加载,且无需人工干预,从而提高了镜像预加载过程的准确性、可靠性与高效性。
实施例五
请参阅图5,图5为本发明实施例五提供的镜像预加载方法的流程图。
对于偶然的预判失误,本实施例也可以通过预判调度结果中的优选节点,将获取到的指定镜像分发给目标节点,以减少对远端镜像仓库的网络阻塞,使镜像的分发和拉取速度得到提升。
如图5所示,本实施例的镜像预加载方法包括:
S501:获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑。
S502:根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果。
所述预判调度结果至少包括:按照所述调度预判策略,从所述Kubernetes集群的宿主机节点中确定出来的优选节点。
S503:按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载。
本发明中的预判调度结果基于静态数据计算的,可能会与Kubernetes实际的调度结果有偏差,尤其是基于资源的调度策略计算的结果的偏差会大一些,偏差就是决策的失误。例如,预判调度结果为A服务应该在Node1节点上运行,那么本发明就会将A服务所依赖的指定镜像提前在Node1节点上进行下载,但实际上由于资源的变化,kubernetes没有将A服务运行在了Node1上,以上不匹配的情况都归属于策略失误。对此,本发明还提供了后续步骤S504-S505,以有效解决上述失误。
S504:获取Kubernetes调度服务对于所述指定镜像的实际调度结果。
所述实际调度结果中至少包括:由Kubernetes调度服务从所述Kubernetes集群的宿主机节点中确定出来的目标节点。目标节点是指由Kubernetes调度服务从所述Kubernetes集群的宿主机节点中确定出来、用于实际加载指定镜像的节点。
可见,目标节点与优选节点都是确定出来的用于加载指定镜像的节点,但是两者的确定方式不同:目标节点是由Kubernetes调度服务,按照实际的调度策略确定出来的;优选节点是由本发明提供的Schedule调度服务,按照预设的调度预判策略确定出来的。由于确定方式不同,优选节点可能会存在与目标节点不一致的情况。
S505:当所述优选节点与所述目标节点不一致时,指示所述优选节点将已拉取的所述指定镜像分发给所述目标节点。
镜像都是从远端的镜像仓库拉取到本地的,如果有很多节点同时向远端的镜像仓库拉取镜像,那么远端的镜像仓库带宽限制(阻塞网络的原因)和性能限制都会影响拉取速度。所以,本实施例通过优选节点,将已拉取的所述指定镜像分发给所述目标节点,这样就可以减少对远端镜像仓库的网络阻塞,使分发和拉取速度得到提升。
其中,优选节点将已拉取的指定镜像分发给目标节点,可以采用P2P模式、CDN模式或其他类似模式进行分发。从而减少对远端镜像仓库的网络阻塞,使分发和拉取速度得到提升。
例如,当发生预判失误时,会将指定镜像提前拉取到错误的节点上,如果不做特殊处理,就会导致kubernetes在实际调度时,会让其他节点从远端的镜像仓库重新拉取服务服务镜像,影响镜像拉取效率;如果采取步骤S504-S505的特殊处理,并采用P2P或CDN的模式让节点与节点之间共享镜像,这样其他节点再拉取指定镜像时不是从远端仓库去拉取指定镜像,而是去已存在该指定镜像的节点去拉取,这样镜像的拉取效率就可以得到提升,由于不会对远端的镜像仓库发起请求,从而也节省了镜像仓库端的带宽资源,也降低了镜像仓库端处理请求的时延。
本实施例提供的镜像预加载方法,在所述按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载之后,获取Kubernetes调度服务对于所述指定镜像的实际调度结果,所述实际调度结果中至少包括:由Kubernetes调度服务从所述Kubernetes集群的宿主机节点中确定出来的目标节点;当所述优选节点与所述目标节点不一致时,指示所述优选节点将已拉取的所述指定镜像分发给所述目标节点,从而为预判失误采取了补救措施,并且能够减少对远端镜像仓库的网络阻塞,使镜像的分发和拉取速度得到提升。
实施例六
请参阅图6,图6为本发明实施例六提供的镜像预加载方案的系统架构图。
本实施例与实施例四相类似,可以相互参照,但不同之处在于,本实施例增加了通过节点与节点之间的镜像共享。
如图6所示,在多个不同的宿主机节点Host之间,都建立了P2P/CDN通道,以实现Host与Host之间的镜像共享。
Host与Host之间的镜像共享,具体是通过Host中的镜像代理Image-Client来实现的。
本实施例提供的镜像预加载方案,在预判调度结果有误时,会指示优选节点将已拉取的指定镜像分发给目标节点,从而为预判失误采取了补救措施,并且能够减少对远端镜像仓库的网络阻塞,使镜像的分发和拉取速度得到提升。
实施例七
请参阅图7,图7为本发明实施例七提供的镜像预加载设备的结构示意图。
如图7所示,镜像预加载设备可以包括:处理器10,通信接口20,存储器30与通信总线40;其中,处理器10、通信接口20与存储器30通过通信总线40完成相互间的通信。
通信接口20可以为通信模块的接口,如GSM模块的接口;
存储器30,用于存储程序;
处理器10,用于调用存储器30中存储的程序。
程序可以包括程序代码,所述程序代码包括处理器的操作指令。
处理器10可能是一个中央处理器CPU,或者是特定集成电路ASIC,或者是被配置成实施本申请实施例的一个或多个集成电路。
存储器30可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
其中,所述程序代码被处理器10调用时可执行前述的镜像预加载方法的步骤。
本实施例提供的镜像预加载设备,根据预先获取到的Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑,并按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果,按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,从而能够在Kubernetes调度服务执行实际调度之前,就在相应宿主机节点处实现指定镜像的预加载,且无需人工干预,从而提高了镜像预加载过程的准确性、可靠性与高效性。
本发明实施例中所提及的存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序在被计算机设备调用时,执行前述的镜像预加载方法的步骤。
本发明实施例提供了一种处理器,所述处理器用于运行程序代码,其中,所述程序代码运行时执行前述的镜像预加载方法的步骤,或者,前述的镜像预加载方法的步骤。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有前述的镜像预加载方法或镜像预加载方法的步骤的程序。
最后,还需要说明的是,在本文中,诸如第一和第一等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式来实现。基于这样的理解,本申请的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例采用递进或并列的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种镜像预加载方法,其特征在于,包括:
获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑;
根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果;其中,所述预判调度结果至少包括:按照所述调度预判策略,从所述Kubernetes集群的宿主机节点中确定出来的优选节点;
按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载;
其中,所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果包括:
根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分;
将所述各个宿主机节点中得分最高的宿主机节点,确定为优选节点,并作为预判调度结果;
或,
所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设的调度预判策略,预判Kubernetes调度服务对于指定镜像的调度结果,作为预判调度结果包括:
查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD;
若Kubernetes集群中存在正在运行的、且与所述指定镜像的信息相匹配的POD,则获取所述POD的信息;
根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果。
2.根据权利要求1所述的方法,其特征在于,所述获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑包括:
采用周期性轮询的方式,定期获取Kubernetes集群中各个宿主机节点的节点状态、资源使用情况与服务拓扑。
3.根据权利要求1所述的方法,其特征在于,在所述根据所述POD的信息,将Kubernetes集群中正在运行所述POD的宿主机节点,确定为优选节点,并作为预判调度结果之后,所述方法还包括:
获取Kubernetes集群中其他宿主机节点的节点状态、资源使用情况与服务拓扑;
根据所述其他宿主机节点的节点状态、资源使用情况与服务拓扑,按照所述预设计算规则,计算所述其他宿主机节点的得分;
将所述其他宿主机节点中得分最高的宿主机节点,确定为优选节点,也作为预判调度结果。
4.根据权利要求1所述的方法,其特征在于,在所述查询Kubernetes集群中是否存在正在运行的、且与所述指定镜像的信息相匹配的POD之后,所述方法还包括:
若Kubernetes集群中不存在正在运行的、且与所述指定镜像的信息相匹配的POD,则执行所述根据所述各个宿主机节点的节点状态、资源使用情况与服务拓扑,按照预设计算规则,计算所述各个宿主机节点的得分的步骤。
5.根据权利要求1所述的方法,其特征在于,所述按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载包括:
按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点的镜像代理,以使所述优选节点的镜像代理提前从镜像仓库中拉取所述指定镜像,并在所述优选节点中预加载所述指定镜像。
6.根据权利要求1所述的方法,其特征在于,在所述按照所述预判调度结果,将所述指定镜像的信息发送至所述优选节点,以使所述优选节点提前从镜像仓库中拉取所述指定镜像,并在所述优选节点实现所述指定镜像的预加载之后,所述方法还包括:
获取Kubernetes调度服务对于所述指定镜像的实际调度结果,所述实际调度结果中至少包括:由Kubernetes调度服务从所述Kubernetes集群的宿主机节点中确定出来的目标节点;
当所述优选节点与所述目标节点不一致时,指示所述优选节点将已拉取的所述指定镜像分发给所述目标节点。
7.一种镜像预加载设备,其特征在于,包括:存储器与处理器;
所述存储器,用于存储程序;
所述处理器,用于调用所述程序,以执行如权利要求1~6任一项所述的镜像预加载方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序,所述程序在被计算机设备调用时,执行如权利要求1~6任一项所述的镜像预加载方法的步骤。
CN202010752296.8A 2020-07-30 2020-07-30 镜像预加载方法、设备及存储介质 Active CN111897550B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010752296.8A CN111897550B (zh) 2020-07-30 2020-07-30 镜像预加载方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010752296.8A CN111897550B (zh) 2020-07-30 2020-07-30 镜像预加载方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111897550A CN111897550A (zh) 2020-11-06
CN111897550B true CN111897550B (zh) 2024-04-12

Family

ID=73182598

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010752296.8A Active CN111897550B (zh) 2020-07-30 2020-07-30 镜像预加载方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111897550B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064696A (zh) * 2021-03-25 2021-07-02 网易(杭州)网络有限公司 集群的系统扩容方法、设备及介质
CN113296807B (zh) * 2021-05-12 2023-10-31 阿里巴巴新加坡控股有限公司 数据更新方法
CN114721743B (zh) * 2022-04-15 2024-02-13 支付宝(杭州)信息技术有限公司 任务执行方法、装置和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107733977A (zh) * 2017-08-31 2018-02-23 北京百度网讯科技有限公司 一种基于Docker的集群管理方法及装置
CN110661842A (zh) * 2019-08-12 2020-01-07 广州亦云信息技术股份有限公司 一种资源的调度管理方法、电子设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11329885B2 (en) * 2018-06-21 2022-05-10 International Business Machines Corporation Cluster creation using self-aware, self-joining cluster nodes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107733977A (zh) * 2017-08-31 2018-02-23 北京百度网讯科技有限公司 一种基于Docker的集群管理方法及装置
CN110661842A (zh) * 2019-08-12 2020-01-07 广州亦云信息技术股份有限公司 一种资源的调度管理方法、电子设备和存储介质

Also Published As

Publication number Publication date
CN111897550A (zh) 2020-11-06

Similar Documents

Publication Publication Date Title
CN111897550B (zh) 镜像预加载方法、设备及存储介质
US9729488B2 (en) On-demand mailbox synchronization and migration system
US7627618B2 (en) System for managing data collection processes
US8209272B2 (en) Dynamic computation of optimal placement for services in a distributed computing system
US20180373517A1 (en) Systems, methods, and apparatuses for docker image downloading
EP2754046B1 (en) Automatic preemption in multiple computer systems
US20160142323A1 (en) Systems and/or methods for resource use limitation in a cloud environment
CN108173774B (zh) 一种客户端的升级方法及系统
US9830235B1 (en) Cooperative fault tolerance and load balancing
CN111404992A (zh) 承租人控制的云更新
CN114153581A (zh) 数据处理方法、装置、计算机设备和存储介质
US10216593B2 (en) Distributed processing system for use in application migration
US20050102675A1 (en) Method for managing execution of a process based on available services
EP2415213B1 (en) Smart routing
CN108111630B (zh) 一种Zookeeper集群系统及其连接方法和系统
US9137331B2 (en) Adaptive replication
CN111240824A (zh) 一种cpu资源调度方法及电子设备
CN112860421B (zh) 用于作业处理的方法、设备和计算机程序产品
CN113138842A (zh) 微服务集群的调度方法、装置及介质
JP6595419B2 (ja) Api提供装置及びapiリクエスト制御方法
US11768704B2 (en) Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling
US20230281052A1 (en) Distributing workloads to hardware accelerators during transient workload spikes
US20230362103A1 (en) Reducing placement conflicts between concurrent virtual machine allocations
Latchoumy et al. Reliable job execution with process failure recovery in computational grid
CN116260814A (zh) 一种基于集群文件传输系统选择最优传输客户端的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant