CN109739619B - 一种基于容器化应用的处理方法、装置及存储介质 - Google Patents
一种基于容器化应用的处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109739619B CN109739619B CN201811521147.XA CN201811521147A CN109739619B CN 109739619 B CN109739619 B CN 109739619B CN 201811521147 A CN201811521147 A CN 201811521147A CN 109739619 B CN109739619 B CN 109739619B
- Authority
- CN
- China
- Prior art keywords
- task
- script
- application
- information
- script file
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于容器化应用的处理方法,包括:宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情;所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。本发明还同时公开了一种基于容器化应用的处理装置以及存储介质。
Description
技术领域
本发明涉及容器化技术领域,尤其涉及一种基于容器化应用的处理方法、装置及存储介质。
背景技术
目前,随着容器化技术的快速发展,可以在宿主机上部署多个容器,并可以对容器进行服务化。
由于容器的上下文环境与宿主机的上下文环境是分开的,也就是说,宿主机命令只能在宿主机的上下文环境中执行,而不能在宿主机的容器的上下文环境中执行,因而需要运维人员远程登录到宿主机,并在宿主机的上下文环境中通过手动操作执行宿主机命令。
因此,亟需找到一种通过容器与宿主机交互实现自动执行宿主机命令的技术方案。
发明内容
有鉴于此,本发明实施例期望提供一种基于容器化应用的处理方法、装置及存储介质,能够实现容器与宿主机交互实现自动执行宿主机命令。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种基于容器化应用的处理方法,所述方法包括:
宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;
当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情;
所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;
所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
上述方案中,所述方法还包括:
所述第一容器化应用向所述集群管理服务应用发送心跳请求;所述心跳请求用于获取所述发布的任务的第二信息;
所述第一容器化应用接收所述集群管理服务应用发送的所述发布的任务的第二信息;所述第二信息是所述集群管理服务应用响应所述心跳请求,向所述第一容器化应用发送的。
上述方案中,所述第一容器化应用基于所述任务详情,生成脚本文件包括:
所述第一容器化应用确定对应所述发布的任务的脚本模板;
基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
上述方案中,所述宿主机的脚本执行引擎执行共享目录的脚本文件,包括:
所述宿主机的脚本执行引擎对共享目录中的脚本文件进行周期性扫描;
当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
上述方案中,所述宿主机的脚本执行引擎执行共享目录的脚本文件之后,所述方法还包括:
所述第一容器化应用检测所述发布的任务的运行状态;
当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
本发明实施例一种基于容器化应用的处理装置,所述装置包括:
比较单元,用于将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;
获取单元,用于当所述比较结果表征所述第一信息与第二信息不同时,从集群管理服务应用获取所述发布的任务的任务详情;
生成单元,用于基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;
执行单元,用于执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
上述方案中,所述生成单元,具体用于确定对应所述发布的任务的脚本模板;基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
上述方案中,所述执行单元,具体用于对共享目录中的脚本文件进行周期性扫描;当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
上述方案中,所述装置还包括:
检测单元,用于检测所述发布的任务的运行状态;当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
本发明实施例提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上面所述任一项基于容器化应用的处理方法的步骤。
本发明实施例提供的基于容器化应用的处理方法、装置及存储介质,宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从所述宿主机的集群管理服务应用获取所述发布的任务的任务详情;所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。本发明实施例中,通过共享目录,实现所述第一容器化应用与所述宿主机的交互,这样,所述第一容器化应用可以将生成的与所述发布的任务对应的脚本文件保存到共享目录,以供所述宿主机上的脚本执行引擎执行所述脚本文件,这里,通过共享目录实现所述第一容器化应用与所述宿主机的交互,这样,所述宿主机上的脚本执行引擎可以自动执行所述共享目录中的脚本文件,无需运维人员的介入,实现更简单、更方便。
附图说明
图1为本发明实施例基于容器化应用的处理方法应用的平台架构示意图;
图2为本发明实施例基于容器化应用的处理方法的流程示意图;
图3为本发明实施例基于容器化应用的处理方法的具体实现流程示意图;
图4为本发明实施例集群管理服务应用与第一容器化应用交互的流程示意图;
图5为本发明实施例集群管理服务应用与第一容器化应用交互的框图示意图;
图6为本发明实施例宿主机的脚本执行引擎执行脚本文件的流程示意图;
图7为本发明实施例基于容器化应用的处理装置的组成结构示意图一;
图8为本发明实施例基于容器化应用的处理装置的组成结构示意图二。
具体实施方式
相关技术中,由于容器的上下文环境与宿主机的上下文环境是分开的,也就是说,宿主机命令只能在宿主机的上下文环境中执行,而不能在宿主机的容器的上下文环境中执行,因此需要运维人员通过telnet/ssh方式远程登录到宿主机,并在宿主机的上下文环境中通过手动操作执行宿主机命令,如docker服务重启、kubelet升级等等。显然,需要运维人员介入才能执行宿主机命令,实现复杂。
基于此,本发明实施例中,宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情;所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明。
图1是本发明实施例基于容器化应用的处理方法应用的平台架构示意图,如图1所示,平台可以包括任务管理服务应用、集群管理服务应用、第一容器化应用、脚本执行引擎;其中,所述第一容器化应用及脚本执行引擎可以位于宿主机中;所述任务管理服务应用、集群管理服务应用可以位于宿主机之外的其他主机中。
所述第一容器化应用,以容器形式部署运行,可以通过服务注册、服务发现、配置中心实现容器的动态配置及灵活的服务调用。
所述脚本执行引擎,用于执行本地服务的安装、升级、重启、卸载、修改配置、创建目录文件、查询宿主机资源等宿主机命令。
这里,所述平台中的任务管理服务应用、集群管理服务应用、第一容器化应用、脚本执行引擎可以是基于微服务架构实现的。所述微服务架构可以是指将功能分解到各个离散的服务中,以降低系统的耦合性。所述平台具体可以是OCEAN平台。
图2是本发明实施例基于容器化应用的处理方法的流程示意图,结合图1所示的平台架构示意图,详细说明本发明实施例基于容器化应用的处理方法,如图2所示,包括以下步骤:
步骤201:宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果。
这里,所述正在运行的任务可以是指在平台的脚本执行引擎中正在运行的宿主机命令;所述发布的任务可以是指供所述脚本执行引擎待执行的宿主机命令。所述宿主机命令可以是指在宿主机的上下文环境中执行的命令,如Docker容器重启命令、Kubelet升级命令。
其中,所述第一信息可以是指正在运行的任务的执行状态、版本等信息,所述第二信息可以是指发布的任务的执行状态、版本等信息。
这里,所述第一容器化应用获取所述发布的任务的第二信息的具体过程包括:用户先在平台中的任务管理服务应用中发布任务,比如发布的kubelet升级、Docker重启等等宿主机命令,所述任务管理服务应用记录所述用户发布的任务的第二信息。然后,所述宿主机中的第一容器化应用、集群管理服务应用可以在服务注册中心(图1未标示)进行注册,这样,所述第一容器化应用可以通过服务发现向所述集群管理服务应用发起调用,从而向所述集群管理服务应用发送心跳请求,所述集群管理服务应用接收到所述宿主机的第一容器化应用发送的心跳请求后,向所述任务管理服务应用发送获取请求,以请求获取所述发布的任务的第二信息。
基于此,在一实施例中,所述方法还包括:所述第一容器化应用向所述集群管理服务应用发送心跳请求;所述心跳请求用于获取所述发布的任务的第二信息;所述第一容器化应用接收所述集群管理服务应用发送的所述发布的任务的第二信息;所述第二信息是所述集群管理服务应用响应所述心跳请求,向所述第一容器化应用发送的。
这里,所述第一容器化应用可以通过心跳进程,向所述集群管理服务应用发送心跳请求,这样,能够及时从所述集群管理服务应用获取用户发布的任务的第二信息。
由于正在运行的任务也可以是在本次获取所述发布的任务之前用户发布的任务,因此,所述正在运行的任务的第一信息也可以是所述第一容器化应用通过心跳机制从所述集群管理服务应用获取的。
步骤202:当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情。
其中,所述任务详情可以包括所述发布的任务的任务类型;所述任务类型可以包括kubelet升级、Docker重启、卸载、目录创建、文件生成、配置修改、资源查询等等。
这里,如果所述比较结果表征所述第一信息与所述第二信息相同,则所述第一容器化应用可以确定所述发布的任务与在宿主机内正在运行的任务是相同的任务,这样,所述第一容器化应用不需要对正在运行的任务进行更新,如此,并不需要从集群管理服务应用获取所述发布的任务的任务详情。
如果所述比较结果表征所述第一信息与所述第二信息不同,则所述第一容器化应用可以确定所述发布的任务与在宿主机内正在运行的任务是不同且是最新的任务,这样,所述第一容器化应用可以对正在运行的任务进行更新,如此,因而可以从集群管理服务应用获取所述发布的任务的任务详情。
步骤203:所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中。
其中,所述第一容器化应用将生成的脚本文件保存到所述宿主机的共享目录,可以是指所述第一容器化应用将生成的脚本文件保存到所述宿主机的共享目录中指定的文件夹中。
这里,可以使用ssh创建所述宿主机的共享目录,创建的目录描述可以包括路径、依赖、是否持久等等,具体如下:
"folders":[
{"recursive":true,
"persist":true,
"depends_on":[],
"path":"/root/.ssh/",
"incarnation":0,
"resource_uuid":"b0fd0d61-b5d9-44e1-b76d-22f3f61ebfa1"}
]
这里,可以使用ssh创建所述指定的文件夹,创建的文件夹描述可以包括文件夹名称、依赖、内容、路径、写文件方式等等,具体如下:
"files":[
{"name":"authorized_keys",
"depends_on":[],
"incarnation":0,
"resource_uuid":"04901dcd-f0e5-41c4-a093-a53df3813579",
"content":"ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDAAVvlFS BoT/sNwOY6RCv06uW+1duq5l",
"persist":true,
"path":"/root/.ssh/"}
]
这里,由于可以通过共享目录实现所述第一容器化应用与宿主机的交互,因此,所述第一容器化应用将所述脚本文件保存到宿主机的共享目录中,就能够实现所述第一容器化应用与所述宿主机的交互,以便在所述宿主机的上下文环境中执行生成的脚本文件。
所述第一容器化应用可以按照预设脚本语言创建至少一个脚本模板,每个脚本模板可以包含至少一个宿主机命令。这样,当所述第一容器化应用获得所述发布的任务的任务详情后,可以确定对应的脚本模板,并将获得的任务详情作为确定的脚本模板中的内容,得到与所述发布的任务对应的脚本文件。所述预设脚本语言可以为script、shell等等。
基于此,在一实施例中,所述第一容器化应用基于所述任务详情,生成脚本文件,包括:所述第一容器化应用确定对应所述发布的任务的脚本模板;基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
举例来说,当获得的发布的任务为重启Docker容器时,可以从预先创建的多个脚本模板中,查找包含重启Docker容器命令的脚本模板,并将获得的任务详情作为查找到的脚本模板的内容,得到与发布的任务对应的脚本文件。
步骤204:所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
当所述第一容器化应用将生成脚本文件保存到宿主机的共享目录后,所述宿主机的脚本执行引擎可以通过对所述共享目录中的脚本文件进行扫描,以获取所述发布的任务对应的脚本文件,并执行。这样,当所述第一容器化应用不能执行所述发布的任务时,可以在所述宿主机的上下文环境中执行所述发布的任务。
基于此,在一实施例中,所述宿主机的脚本执行引擎执行共享目录的脚本文件,包括:所述宿主机的脚本执行引擎对共享目录中的脚本文件进行周期性扫描;当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
所述宿主机的脚本执行引擎在执行所述共享目录的脚本文件之后,还可以在所述共享目录中生成执行结果;所述执行结果可以包括执行的脚本文件名称、执行状态。
举例来说,假设所述宿主机的脚本执行引擎执行的脚本文件名称是9a6ff8d01d5a0e7c343ddceb031c928b_0,如果在执行所述发布的任务对应的脚本文件的过程中没有出现错误,则执行状态的名称可以是9a6ff8d01d5a0e7c343ddceb031c928b_0_SUCCESS;如果在执行所述发布的任务对应的脚本文件的过程中出现错误,则执行状态的名称可以是9a6ff8d01d5a0e7c343ddceb031c928b_0_FAILED。当所述宿主机的脚本执行引擎执行所述发布的任务对应的脚本文件后,可以以“脚本文件名称_执行状态”格式在所述共享目录中显示执行结果。
实际应用时,当所述共享目录中的脚本文件无任何问题时,所述宿主机的脚本执行引擎可以正确无误地执行所述脚本文件;当所述共享目录中的脚本文件有问题时,可能会导致所述宿主机的脚本执行引擎出现执行错误情况的发生。这样,所述第一容器化应用可以对呈现的所述发布的任务的运行状态进行检测,如果未检测到所述发布的任务的运行状态为正在运行,则向所述集群管理服务应用发送脚本文件执行出错的提示信息,以便所述集群管理服务应用向所述任务管理服务应用再次获取所述发布的任务。
基于此,在一实施例中,所述宿主机的脚本执行引擎执行共享目录的脚本文件之后,所述方法还包括:所述第一容器化应用检测所述发布的任务的运行状态;当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
实际应用时,所述宿主机的脚本执行引擎在执行所述发布的任务对应的脚本文件时,可能会出现执行错误情况的发生,在不确定所述发布的任务对应的脚本文件是否正确无误的情况下,所述宿主机的脚本执行引擎可以多次执行所述脚本文件,但如果多次执行所述脚本文件仍然出现执行错误时,所述宿主机的脚本执行引擎可以放弃执行所述脚本文件。
基于此,在一实施例中,所述方法还包括:所述宿主机的脚本执行引擎统计执行所述脚本文件的次数;判断统计的次数是否超过预设阈值;当确定统计的次数超过预设阈值时,不再执行所述发布的任务对应的脚本文件;当确定统计的次数未超过所述预设阈值时,再次执行所述发布的任务对应的脚本文件。
采用本发明实施例的技术方案,通过共享目录,实现所述第一容器化应用与所述宿主机的交互,这样,所述第一容器化应用可以将生成的与所述发布的任务对应的脚本文件保存到共享目录,以供所述宿主机上的脚本执行引擎执行所述脚本文件,这里,通过共享目录实现所述第一容器化应用与所述宿主机的交互,这样,所述宿主机上的脚本执行引擎可以自动执行所述共享目录中的脚本文件。显然,所述宿主机的脚本执行引擎可以自动执行宿主机命令,无需运维人员的介入,实现更简单、更方便。
另外,本发明实施例中,使用容器化技术实现所述第一容器化应用,通过宿主机的共享目录共享所述发布的任务对应的脚本文件,实现所述第一容器化应用与脚本执行引擎的交互。通过所述宿主机安装的脚本执行引擎周期扫描共享目录,执行所述发布的任务对应的脚本文件。如此,可以使所述第一容器化应用支持执行宿主机命令,这样,通过所述第一容器化应用就可以实现宿主机的资源管理、状态监控、日志收集、安装部署升级重启等功能,并可以应用在docker重启升级、kubernetes主从节点安装部署、主机健康检查及资源监控、主机定期清理、创建目录文件等应用场景中。
下面以具体实施例为例对本发明实施例基于容器化应用的处理方法的具体实现过程进行详细说明。
图3是本发明实施例基于容器化应用的处理方法的具体实现流程示意图,结合图1所示的平台架构示意图,如图3所示,包括以下步骤:
步骤301:用户在OCEAN平台中的任务管理服务应用中发布任务,所述任务管理服务应用记录所述用户发布的任务的第二信息。
这里,用户发布的任务可以是kubelet升级、Docker重启等等宿主机命令。所述第二信息可以是指发布的任务的执行状态、版本等信息。
步骤302:所述集群管理服务应用在服务注册中心进行注册。
这里,所述宿主机中的第一容器化应用也在服务注册中心进行注册,这样,所述第一容器化应用可以通过服务发现向所述集群管理服务应用发起调用,以发送心跳请求。
步骤303:所述第一容器化应用向所述集群管理服务应用发送心跳请求。
步骤304:所述集群管理服务应用接收到所述心跳请求后,向所述任务管理服务应用发送获取请求,以请求获取所述发布的任务的第二信息。
步骤305:所述第一容器化应用接收所述集群管理服务应用发送的所述发布的任务的第二信息。
步骤306:所述第一容器化应用将正在运行的任务的第一信息与获取的发布的任务的第二信息进行比较,当确定所述发布的任务为新任务时,从集群管理服务应用获取所述发布的任务的任务详情。
步骤307:所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中。
步骤308:所述宿主机的脚本执行引擎扫描所述共享目录中的脚本文件,并执行所述发布的任务对应的脚本文件。
需要说明的是,通过所述集群管理服务、所述宿主机的第一容器化应用、所述宿主机的脚本引擎构成容器执行宿主机命令的架构。所述宿主机的第一容器化应用向所述集群管理服务发送节点心跳请求,通过心跳响应获取用户发布的任务的执行状态。通过宿主机的共享目录共享所述发布的任务对应的脚本文件,实现所述第一容器化应用与脚本执行引擎的交互。在宿主机安装脚本执行引擎,通过所述脚本执行引擎周期扫描共享目录发现需要执行的脚本文件并执行。如此,可以使所述第一容器化应用支持执行宿主机命令。
图4是本发明实施例集群管理服务应用与第一容器化应用交互的流程示意图,图5是本发明实施例集群管理服务应用与第一容器化应用交互的框图示意图,如图4所示,包括以下步骤:
步骤401:第一容器化应用向所述集群管理服务应用发送心跳请求。
这里,所述第一容器化应用可以使用容器化技术进行部署。所述第一容器化应用可以定期启动心跳(heartbeat)线程,向所述集群管理服务应用(可以用Phoenix表示)发送心跳请求,以获取包含有用户发布的任务的第二信息的配置文件。
步骤402:所述集群管理服务应用向所述第一容器化应用发送包含有发布的任务的第二信息的配置文件。
步骤403:所述第一容器化应用将获得的发布的任务的第二信息与当前正在运行的任务的第一信息进行比较,判断所述发布的任务是不是新任务。
步骤404:当确定所述发布的任务是新任务时,所述第一容器化应用从所述集群管理服务应用获取所述发布的任务的任务详情,基于所述任务详情,生成脚本文件,并将生成的脚本文件保存在所述宿主机的共享目录中。
这里,所述宿主机的脚本执行引擎扫描所述共享目录,当发现所述发布的任务的脚本文件时,执行所述发布的任务的脚本文件。
步骤405:所述第一容器化应用检测所述发布的任务的运行状态;当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送执行错误的提示信息。
图6是本发明实施例宿主机的脚本执行引擎执行脚本文件的流程示意图,如图6所示,包括以下步骤:
步骤601:宿主机的脚本执行引擎扫描共享目录中存储脚本文件的文件夹。
假设所述宿主机的共享目录中存储脚本文件的文件夹为goal;所述共享目录为:/etc/spectre/command/dirge/goal;
步骤602:判断是否发现所述发布的任务对应的脚本文件,当确定发现所述发布的任务对应的脚本文件时,执行步骤603;否则,执行601。
假设发布的任务对应的脚本文件的名称为abcde;判断是否在goal文件夹中扫描到abcde脚本文件。
步骤603:所述宿主机的脚本执行引擎对发现的脚本文件进行解析,并执行。
这里,假设通过解析脚本文件得到脚本文件的来源为:第一容器化应用(可以用spectre表示)。
步骤604:判断执行所述脚本文件是否成功,当执行成功时,执行步骤605;否则,执行步骤606。
步骤605:生成表征执行成功的执行文件。
这里,假设表征执行成功的执行文件的名称为abcde_SUCCESS,保存执行文件的文件夹为status,存储目录为:/etc/spectre/command/dirge/status。
步骤606:生成表征执行错误的执行文件,并执行步骤607。
步骤607:判断执行次数是否超过预设阈值,当确定执行次数超过预设阈值时,放弃执行;否则,再次执行步骤603。
这里,假设表征执行成功的执行文件的名称为abcde_FAILED,保存执行文件的文件夹为status,存储目录为:/etc/spectre/command/dirge/status。
为实现本发明实施例的方法,本发明实施例还提供了一种基于容器化应用的处理装置,设置在宿主机上,如图7所示,所述装置包括:
比较单元71,用于将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;
获取单元72,用于当所述比较结果表征所述第一信息与第二信息不同时,从集群管理服务应用获取所述发布的任务的任务详情;其中,所述任务详情可以包括所述发布的任务的任务类型;所述任务类型可以包括kubelet升级、Docker重启、卸载、目录创建、文件生成、配置修改、资源查询等等。
生成单元73,用于基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;
执行单元74,用于执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
这里,所述正在运行的任务可以是指在平台的脚本执行引擎中正在运行的宿主机命令;所述发布的任务可以是指供所述脚本执行引擎待执行的宿主机命令。所述宿主机命令可以是指在宿主机的上下文环境中执行的命令,如Docker容器重启命令、Kubelet升级命令。
其中,所述第一信息可以是指正在运行的任务的执行状态、版本等信息,所述第二信息可以是指发布的任务的执行状态、版本等信息。
所述获取单元72,具体用于向所述集群管理服务应用发送心跳请求;所述心跳请求用于获取所述发布的任务的第二信息;并接收所述集群管理服务应用发送的所述发布的任务的第二信息;所述第二信息是所述集群管理服务应用响应所述心跳请求,向所述宿主机发送的。
这里,如果所述比较结果表征所述第一信息与所述第二信息相同,则可以确定所述发布的任务与在宿主机内正在运行的任务是相同的任务,这样,所述宿主机不需要对正在运行的任务进行更新,如此,并不需要从集群管理服务应用获取所述发布的任务的任务详情。
如果所述比较结果表征所述第一信息与所述第二信息不同,则可以确定所述发布的任务与在宿主机内正在运行的任务是不同且是最新的任务,这样,所述宿主机可以对正在运行的任务进行更新,如此,因而可以从集群管理服务应用获取所述发布的任务的任务详情。
这里,由于可以通过共享目录实现容器与宿主机的交互,因此,将所述脚本文件保存到宿主机的共享目录中,就能够实现所述容器与所述宿主机的交互,以便在所述宿主机的上下文环境中执行生成的脚本文件。
这里,可以按照预设脚本语言创建至少一个脚本模板,每个脚本模板可以包含至少一个宿主机命令。这样,当获得所述发布的任务的任务详情后,可以确定对应的脚本模板,并将获得的任务详情作为确定的脚本模板中的内容,得到与所述发布的任务对应的脚本文件。所述预设脚本语言可以为script、shell等等。
基于此,在一实施例中,所述生成单元73,具体用于:确定对应所述发布的任务的脚本模板;基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
当将生成脚本文件保存到宿主机的共享目录后,可以通过对所述共享目录中的脚本文件进行扫描,以获取所述发布的任务对应的脚本文件,并执行。这样,当不能在容器中执行所述发布的任务时,可以在所述宿主机的上下文环境中执行所述发布的任务。
基于此,在一实施例中,所述执行单元74,具体用于:对共享目录中的脚本文件进行周期性扫描;当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
这里,在执行所述共享目录的脚本文件之后,还可以在所述共享目录中生成执行结果;所述执行结果可以包括执行的脚本文件名称、执行状态。
实际应用时,当所述共享目录中的脚本文件无任何问题时,可以正确无误地执行所述脚本文件;当所述共享目录中的脚本文件有问题时,可能会导致出现执行错误情况的发生。这样,可以对呈现的所述发布的任务的运行状态进行检测,如果未检测到所述发布的任务的运行状态为正在运行,则向所述集群管理服务应用发送脚本文件执行出错的提示信息,以便所述集群管理服务应用向所述任务管理服务应用再次获取所述发布的任务。
基于此,在一实施例中,所述装置还包括:检测单元,用于检测所述发布的任务的运行状态;当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
实际应用时,在执行所述发布的任务对应的脚本文件时,可能会出现执行错误情况的发生,在不确定所述发布的任务对应的脚本文件是否正确无误的情况下,可以多次执行所述脚本文件,但如果多次执行所述脚本文件仍然出现执行错误时,可以放弃执行所述脚本文件。
基于此,在一实施例中,所述装置还包括:判断单元,用于统计执行所述脚本文件的次数;判断统计的次数是否超过预设阈值;当确定统计的次数超过预设阈值时,不再执行所述发布的任务对应的脚本文件;当确定统计的次数未超过所述预设阈值时,再次执行所述发布的任务对应的脚本文件。
需要说明的是:上述实施例提供的基于容器化应用的处理装置在执行脚本文件时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的基于容器化应用的处理装置与基于容器化应用的处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在实际应用中,获取单元72可由位于基于容器化应用的处理装置上的通信接口实现;比较单元71、生成单元73、执行单元74、判断单元、检测单元可由位于基于容器化应用的处理装置上的处理器比如中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Micro Processor Unit)、数字信号处理器(DSP,Digital Signal Processor)、或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现。
图8是本发明基于容器化应用的处理装置的结构示意图,图8所示的基于容器化应用的处理装置800设置在所述终端上,包括:至少一个处理器801、存储器802、用户接口803、至少一个网络接口804。基于容器化应用的处理装置800中的各个组件通过总线系统805耦合在一起。可理解,总线系统805用于实现这些组件之间的连接通信。总线系统805除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统805。
其中,用户接口803可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。
本发明实施例中的存储器802用于存储各种类型的数据以支持基于容器化应用的处理装置800的操作。这些数据的示例包括:用于在基于容器化应用的处理装置800上操作的任何计算机程序,如操作系统8021和应用程序8022;其中,操作系统8021包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序8022可以包含各种应用程序,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序8022中。
上述本发明实施例揭示的方法可以应用于处理器801中,或者由处理器801实现。处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器、数字信号处理器,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器801可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器802,处理器801读取存储器802中的信息,结合其硬件完成前述方法的步骤。
可以理解,存储器802可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可基于容器化应用的处理装置可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可基于容器化应用的处理装置可编程只读存储器(EEPROM,Electrically Erasable ProgrammableRead-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random accessmemory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,CompactDisc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static RandomAccess Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random AccessMemory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random AccessMemory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous DynamicRandom Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink DynamicRandom Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus RandomAccess Memory)。本发明实施例描述的存储器802旨在包括但不限于这些和任意其它适合类型的存储器。
基于本申请各实施例提供的基于容器化应用的处理装置方法,本申请还提供一种计算机可读存储介质,参照图8所示,所述计算机可读存储介质可以包括:用于存储计算机程序的存储器802,上述计算机程序可由基于容器化应用的处理装置800的处理器801执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种基于容器化应用的处理方法,其特征在于,所述方法包括:
宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;
当所述比较结果表征所述第一信息与第二信息不同时,所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情;其中,所述任务详情包括:升级,重启,卸载,目录创建,文件生成,配置修改,或资源查询;
所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;
所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一容器化应用向所述集群管理服务应用发送心跳请求;所述心跳请求用于获取所述发布的任务的第二信息;
所述第一容器化应用接收所述集群管理服务应用发送的所述发布的任务的第二信息;所述第二信息是所述集群管理服务应用响应所述心跳请求,向所述第一容器化应用发送的。
3.根据权利要求1所述的方法,其特征在于,所述第一容器化应用基于所述任务详情,生成脚本文件包括:
所述第一容器化应用确定对应所述发布的任务的脚本模板;
基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
4.根据权利要求1所述的方法,其特征在于,所述宿主机的脚本执行引擎执行共享目录的脚本文件,包括:
所述宿主机的脚本执行引擎对共享目录中的脚本文件进行周期性扫描;
当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
5.根据权利要求1所述的方法,其特征在于,所述宿主机的脚本执行引擎执行共享目录的脚本文件之后,所述方法还包括:
所述第一容器化应用检测所述发布的任务的运行状态;
当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
6.一种基于容器化应用的处理装置,其特征在于,所述装置包括:
比较单元,用于通过宿主机的第一容器化应用将正在运行的任务的第一信息与发布的任务的第二信息进行比较,得到比较结果;
获取单元,用于当所述比较结果表征所述第一信息与第二信息不同时,通过所述第一容器化应用从集群管理服务应用获取所述发布的任务的任务详情;其中,所述任务详情包括:升级,重启,卸载,目录创建,文件生成,配置修改,或资源查询;
生成单元,用于通过所述第一容器化应用基于所述任务详情,生成脚本文件,并保存到宿主机的共享目录中;
执行单元,用于通过所述宿主机的脚本执行引擎执行所述共享目录中的脚本文件,以在所述第一容器化应用中呈现所述发布的任务的运行状态。
7.根据权利要求6所述的装置,其特征在于,
所述生成单元,具体用于通过所述第一容器化应用确定对应所述发布的任务的脚本模板;基于所述脚本模板,及所述任务详情,生成所述发布的任务对应的脚本文件。
8.根据权利要求6所述的装置,其特征在于,
所述执行单元,具体用于通过所述宿主机的脚本执行引擎对共享目录中的脚本文件进行周期性扫描;当扫描到所述发布的任务对应的脚本文件时,执行所述脚本文件。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
检测单元,用于通过所述第一容器化应用检测所述发布的任务的运行状态;当未检测到所述发布的任务的运行状态时,向所述集群管理服务应用发送提示信息;所述提示信息用于指示在执行所述发布的任务的过程中出现错误。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811521147.XA CN109739619B (zh) | 2018-12-12 | 2018-12-12 | 一种基于容器化应用的处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811521147.XA CN109739619B (zh) | 2018-12-12 | 2018-12-12 | 一种基于容器化应用的处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739619A CN109739619A (zh) | 2019-05-10 |
CN109739619B true CN109739619B (zh) | 2021-07-06 |
Family
ID=66358858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811521147.XA Active CN109739619B (zh) | 2018-12-12 | 2018-12-12 | 一种基于容器化应用的处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739619B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874291B (zh) * | 2019-10-31 | 2022-10-21 | 北京中科云脑智能技术有限公司 | 一种异常容器实时检测方法 |
CN112799740B (zh) * | 2021-02-08 | 2022-07-26 | 联想(北京)有限公司 | 一种控制方法、装置及电子设备 |
CN113691624A (zh) * | 2021-08-24 | 2021-11-23 | 湖北亿咖通科技有限公司 | 基于容器的数据传输方法及设备 |
CN113791864B (zh) * | 2021-09-08 | 2024-03-26 | 国电南瑞科技股份有限公司 | 一种基于容器和微服务化功能的监控系统及其构建方法 |
CN114064594B (zh) * | 2021-11-22 | 2023-09-22 | 马上消费金融股份有限公司 | 数据处理方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447203B (zh) * | 2015-12-31 | 2019-03-26 | 杭州华为数字技术有限公司 | 一种共享文件的访问方法、系统及相关设备 |
CN105760212B (zh) * | 2016-02-02 | 2019-04-12 | 贵州大学 | 一种基于容器的数据重分布方法及装置 |
CN106095337A (zh) * | 2016-06-07 | 2016-11-09 | 国云科技股份有限公司 | 一种基于san网络存储的云盘快速共享方法 |
CN106528200A (zh) * | 2016-10-08 | 2017-03-22 | 广州视睿电子科技有限公司 | 一种基于docker compose的持续集成方法及装置 |
CN107526626B (zh) * | 2017-08-24 | 2020-12-01 | 武汉大学 | 一种基于CRIU的Docker容器热迁移方法及系统 |
WO2019127191A1 (zh) * | 2017-12-28 | 2019-07-04 | 深圳前海达闼云端智能科技有限公司 | 一种多操作系统共享文件系统的方法、装置和电子设备 |
CN108415795B (zh) * | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
-
2018
- 2018-12-12 CN CN201811521147.XA patent/CN109739619B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109739619A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739619B (zh) | 一种基于容器化应用的处理方法、装置及存储介质 | |
CN109597677B (zh) | 用于处理信息的方法和装置 | |
US8245217B2 (en) | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine | |
CN111061643B (zh) | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 | |
US20080126879A1 (en) | Method and system for a reliable kernel core dump on multiple partitioned platform | |
EP4049130B1 (en) | Updating a metadata structure for a firmware update | |
CN111225064A (zh) | Ceph集群部署方法、系统、设备和计算机可读存储介质 | |
US20040205167A1 (en) | Automatic configuration of performance management tools | |
CN112579307A (zh) | 一种物理锁资源的分配检测方法、装置及电子设备 | |
US7043726B2 (en) | Binding of processes in network systems | |
JP2006011506A (ja) | 起動イメージ提供システム及び方法、ブートノード装置、ブートサーバ装置並びにプログラム | |
CN111176720A (zh) | 一种实现在多系统中运行应用程序的控制方法、控制装置 | |
JP3348430B2 (ja) | プリインストール済みアプリケーションの自動環境設定方法及び記憶媒体 | |
CN108595292B (zh) | 一种系统的优化方法、移动终端及计算机存储介质 | |
CN111400128A (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
CN115080114A (zh) | 应用程序的移植处理方法、装置和介质 | |
US11726860B2 (en) | Intelligent automatic support | |
CN115993979A (zh) | 配置转换方法、平滑升级方法、装置、设备及存储介质 | |
CN113553243A (zh) | 远端侦错方法 | |
CN116541104B (zh) | 程序管理方法、控制装置、平台、设备以及存储介质 | |
CN115454827B (zh) | 兼容性检测方法、系统、设备和介质 | |
CN115421785B (zh) | 应用程序的移植处理方法、装置和介质 | |
CN113687915B (zh) | 容器运行方法、装置、设备及存储介质 | |
WO2021147375A1 (zh) | 数据管理方法、装置、设备、计算机可读存储介质及系统 | |
US20240045701A1 (en) | Method, device and system for loading page data |
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 |