CN116893834A - 负载更新方法、装置、系统、电子设备及可读存储介质 - Google Patents

负载更新方法、装置、系统、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116893834A
CN116893834A CN202311160676.2A CN202311160676A CN116893834A CN 116893834 A CN116893834 A CN 116893834A CN 202311160676 A CN202311160676 A CN 202311160676A CN 116893834 A CN116893834 A CN 116893834A
Authority
CN
China
Prior art keywords
image
workload
information
load
task type
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.)
Granted
Application number
CN202311160676.2A
Other languages
English (en)
Other versions
CN116893834B (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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co 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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202311160676.2A priority Critical patent/CN116893834B/zh
Publication of CN116893834A publication Critical patent/CN116893834A/zh
Application granted granted Critical
Publication of CN116893834B publication Critical patent/CN116893834B/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/65Updates
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种负载更新方法、装置、系统、电子设备及可读存储介质,涉及云计算大数据技术领域。该方法包括:在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。本发明可以实现目标集群中工作负载的自动更新,提高目标集群中工作负载的更新效率。

Description

负载更新方法、装置、系统、电子设备及可读存储介质
技术领域
本发明实施例涉及云计算大数据技术领域,尤其涉及一种负载更新方法、装置、系统、电子设备及可读存储介质。
背景技术
基于容器的集群管理平台(kubernetes,k8s)为容器编排工具,在服务部署、服务监控、应用扩容和故障处理方面,k8s可以提供很好的解决方案。
当k8s集群中的某个服务需要升级时,通常需要停止k8s集群中与之相关的所有容器组(Pod),下载新版本的镜像并创建新的Pod。其中,Pod可以称之为k8s集群的工作负载。
目前,k8s可以内置滚动更新机制,以及各云服务商可以提供的触发器功能,来实现工作负载的更新。然而,均需要用户手动操作,存在工作负载更新效率低下的问题。
发明内容
本发明实施例提供一种负载更新方法、装置、系统、电子设备及可读存储介质,以解决现有技术中k8s集群中工作负载更新需要用户手动操作,使得工作负载更新效率低下的问题。
第一方面,本发明实施例提供一种负载更新方法,所述方法包括:
在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
第二方面,本发明实施例提供一种负载更新装置,所述装置包括:
第一获取模块,用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
第二获取模块,用于基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
更新模块,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
第三方面,本发明实施例提供一种负载更新系统,所述系统包括控制组件和更新服务组件,所述控制组件和所述更新服务组件通信连接;其中,
所述控制组件,用于监听到目标集群中与第一镜像关联的配置事件,所述目标集群为运行容器化应用的节点集群;
所述控制组件,还用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息;基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
所述更新服务组件,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
第四方面,本发明实施例提供一种电子设备,包括处理器,存储器,存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述负载更新方法的步骤。
第五方面,本发明实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述负载更新方法的步骤。
本发明实施例中,通过监听目标集群中与第一镜像关联的配置事件,并基于配置信息进行第一镜像的第一属性信息和配置有与第一属性信息匹配的第二镜像的工作负载的负载描述信息的获取,之后可以基于负载描述信息和配置事件实现目标集群中工作负载的更新,从而可以实现目标集群中工作负载的自动更新,提高目标集群中工作负载的更新效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获取其他的附图。
图1是本发明实施例提供的负载更新方法的流程示意图;
图2是本发明实施例提供的负载更新系统的流程示意图;
图3是本发明实施例提供的负载更新装置的结构示意图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
当k8s集群中的某个服务需要升级时,通常需要停止k8s集群中与之相关的所有容器组(Pod),下载新版本的镜像并创建新的Pod。其中,Pod可以称之为k8s集群的工作负载。如果k8s集群规模较大,则这个操作会导致服务在长时间内不能使用。
为了解决这个问题,k8s可以内置滚动更新机制来进行工作负载的更新。如果Pod是通过Deployment对象创建的,则用户可以在运行时修改Deployment的Pod定义或者镜像名称,并应用到Deployment对象上,系统既可完成对于工作负载的滚动更新。如果在更新过程中发生了错误,则还可以通过回滚的操作恢复Pod的版本。
滚动更新的具体实现方式是在初始创建Deployment时,创建一个对象ReplicaSet,并创建指定数量的Pod副本。更新Deployment时,系统创建了一个新的ReplicaSet,并将其副本数量扩展到1,将旧的ReplicaSet缩减,之后系统继续按照相同的更新策略对新旧两个ReplicaSet进行逐个调整。新的ReplicaSet运行了指定数量的新版本的Pod副本,旧的Pod副本数量达到0,从而实现工作负载的滚动更新。
如果需要进行工作负载的更新,需要改动Pod定义或者镜像名称,因此目前的更新方式有两种。一种是使用命令去设置新的镜像名称,另一种是使用命令修改Deployment的配置,将Pod定义或者镜像名称进行修改。两种方式都需要手动去执行命令,无法达到实时的效果。
为了解决这个问题,目前现在各种云服务商可以提供触发器这种功能,能够满足用户推送镜像既可完成对于工作负载的更新需求。以容器镜像服务(Alibaba CloudContainer Registry,ACR)中的触发器为例,用户通过对镜像进行设置触发器,当推送对应镜像到镜像仓库时,触发器接收到消息并进行处理,筛选出合适的触发器执行,更新集群中的工作负载。
当前k8s内置的滚动更新机制,以及各云服务商提供的触发器功能都存在一些问题,一是需要用户手动操作,当集群规模很大,工作负载的数量很多的情况下,针对每一个镜像,需要手动更新很多工作负载或者设置很多的触发器,并制定不同的触发策略,效率低下。二是用户在推送镜像的时候没有修改镜像的版本(tag)时,触发器则不会实现更新工作负载的功能。在软件开发和运营(Developmen and Operations,DevOps)的过程中,如果用户在在线制作镜像的情况下,没有设置不同的tag,虽然触发器会正常触发,但是并不会更新工作负载。
而本发明实施例提供了一种新的负载更新方案,可以很好地解决现有技术的问题,可以实现k8s集群中工作负载的自动更新,以及在推送镜像时不修改镜像的tag,也能够实现工作负载的更新。
需要说明的是,本发明实施例提供的负载更新方法涉及云计算大数据技术领域,特别涉及边缘计算技术领域,其可以广泛应用于k8s集群的负载更新系统中。
该方法可以由本发明实施例的负载更新装置执行。而负载更新装置可以配置在负载更新系统中,负载更新系统可以为k8s的负载更新系统,以执行本发明实施例的负载更新方法。下面首先对本发明实施例提供的负载更新方法进行说明。
参见图1,图中示出了本发明实施例提供的负载更新方法的流程示意图。如图1所示,该方法可以包括如下步骤:
步骤101,在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群。
该负载更新方法用于对目标集群的工作负载进行更新,其中,目标集群可以为运行容器化应用的节点集群,即k8s集群,其工作负载是以Pod形式部署的应用。
该负载更新方法可以应用于负载更新系统,图2是本实施例中一示例的负载更新系统的结构示意图,如图2所示,该负载更新系统可以包括控制组件201,可以称之为trigger-controller组件,该控制组件可以具有监控功能,作为工作负载自动更新控制器的控制器部分,可以监听k8s集群中与第一镜像关联的配置事件。
其中,配置事件包括但不限于以下几种:
基于第一镜像创建应用即创建Pod的事件;
推送第一镜像至镜像仓库的事件。
控制组件可以基于监听到的信息确定配置事件的事件类型,比如,若仅监听到第一镜像的相关信息,则可以确定该配置事件的事件类型是推送第一镜像至镜像仓库的事件。控制组件也可以基于监听接口确定配置事件的事件类型,不同监听接口监听到的事件类型不同,比如,控制组件通过异步消息处理机制如list/watch机制的监听接口,所监听到的配置事件的事件类型基于第一镜像创建应用即创建Pod的事件。控制组件还可以基于获取的事件类型的标识信息,确定配置事件的事件类型。
可选的,所述步骤101具体包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,获取所述配置事件关联的配置信息中所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和版本标识;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,接收所述镜像仓库针对所述第一镜像返回的第一消息,所述第一消息包括所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和摘要信息。
控制组件可以通过异步消息处理机制如list/watch机制监听k8s集群中命名空间中工作负载的创建或者更新,在监听到k8s集群中工作负载关于第一镜像的创建事件的情况下,可以获取配置事件关联的配置信息中第一镜像的第一属性信息。其中,第一镜像的第一属性信息可以包括第一镜像的名称和版本标识。
在一可选实施方式中,如图2所示,负载更新系统还可以包括更新服务组件,该更新服务组件可以包括应用程序接口服务组件2021,可以称之为kube-apiserver组件,kube-apiserver组件提供了k8s各类资源对象的增删改查等应用程序接口,可以对接k8s集群中的各种应用程序,是整个系统的数据总线和数据中心。工作负载的创建和更新都是由kube-apiserver组件进行实现的。
trigger-controller组件可以通过kube-apiserver组件的list/watch机制,自动监听并获取到k8s集群中指定命名空间下关于deployment工作负载创建的事件信息,并收集到工作负载中关于第一镜像的配置信息,从而获取到第一镜像的第一属性信息。
控制组件也可以建立与镜像仓库如harbor镜像仓库的关联,作为harbor中webhook消息的接受者,在第一镜像被推送到镜像仓库时可以接收镜像仓库反馈的webhook消息,以从webhook消息中获取第一镜像的第一属性信息。其中,第一属性信息包括第一镜像的名称和摘要信息。另外,第一属性信息还可以包括第一镜像的版本标识(tag)。
需要说明的是,可以在控制组件中配置镜像仓库相关信息,包括用户名以及密码,并将镜像仓库的webhook消息地址设置为控制组件对外暴露的服务地址,建立与镜像仓库如harbor镜像仓库的关联,用于从镜像仓库中查询镜像的详细信息以及接收推送镜像后镜像仓库反馈的webhook消息。
步骤102,基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息。
第二镜像为第一属性信息匹配的镜像。在一可选实施方式中,第二镜像即为第一镜像,也即名称和tag等均相同。在另一可选实施方式中,第二镜像的名称可以与第一镜像的名称相同,但是两者tag可能不同。
针对在大规模集群中拥有多个工作负载的场景,通过在部署应用时利用注释机制(annotation)描述应用中所需镜像的摘要信息,其注释的信息即为工作负载的负载描述信息,可以称之为annotation信息。
可以按照配置事件的事件类型对应的获取方式,获取配置有第二镜像的工作负载的负载描述信息。其中,负载描述信息中至少包括第二镜像的digest值。事件类型不同,配置有第二镜像的工作负载的负载描述信息的获取方式不同。
在一可选实施方式中,可以从镜像仓库中获取配置有第二镜像的工作负载的负载描述信息。在另一可选实施方式中,控制组件可以利用kube-apiserver组件,调用Pod的应用程序接口获取目标集群中使用第二镜像的工作负载的负载描述信息。
可选的,所述步骤102具体包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,基于所述第一属性信息,从镜像仓库中获取第二镜像的摘要信息,所述第二镜像为所述第一镜像,所述负载描述信息包括所述第二镜像的摘要信息;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,调用应用程序接口获取所述目标集群中使用第二镜像的工作负载的负载描述信息,所述第二镜像与所述第一镜像的名称相同,所述负载描述信息包括所述第二镜像的版本标识和摘要信息。
对于配置事件为基于第一镜像创建应用的事件,第二镜像即为第一镜像,控制组件可以基于第一镜像的名称,访问镜像仓库,以从镜像仓库中获取到第一镜像的digest值,这样可以进一步收集到工作负载中关于第一镜像的配置信息,以设置该工作负载的annatation信息。
对于配置事件为目标集群推送第一镜像到镜像仓库的事件,控制组件可以利用kube-apiserver组件,调用Pod的应用程序接口查找目标集群中使用与第一镜像名称相同的第二镜像的工作负载,相应获取该工作负载的负载描述信息。其中,该工作负载的负载描述信息可以包括第二镜像的版本标识和digest值。
步骤103,基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
该步骤中,是基于负载描述信息和配置事件,对目标集群的工作负载进行自动更新。
其中,为实现工作负载的自动更新,系统中创建了一种用于自动更新的命名空间,对k8s中原有的命名空间(namespace)对象进行修改,添加了自动更新字段,该自动更新字段可以为AutoUpdate字段。
对namespace对象中的方法进行修改,主要是在创建(Create)方法和应用(Apply)方法在创建命名空间时能够添加AutoUpdate字段,列表函数(List函数)能够通过AutoUpdate进行命名空间的筛选。
在namespace对象中添加AutoUpdate字段的基础上,可以基于负载描述信息和配置事件,触发对目标集群中目标命名空间的工作负载进行自动更新。其中,目标命名空间可以为基于负载描述信息和配置事件可触发自动更新的命名空间,即添加了AutoUpdate字段的命名空间。
相应的,可以基于配置事件的事件类型和负载描述信息,对目标集群的工作负载进行更新。事件类型不同,工作负载的更新内容和更新方式可能不同。在一可选实施方式中,可以对目标集群的工作负载的annatation信息进行更新,以添加或调整工作负载的annatation信息中镜像的digest值。在另一可选实施方式中,在配置事件为目标集群推送第一镜像到镜像仓库的事件时,可以通过对比推送的第一镜像和工作负载所使用的第二镜像的信息,实现工作负载的自动更新。
本实施例中,通过监听目标集群中与第一镜像关联的配置事件,并基于配置信息进行第一镜像的第一属性信息和配置有与第一属性信息匹配的第二镜像的工作负载的负载描述信息的获取,之后可以基于负载描述信息和配置事件实现目标集群中工作负载的更新,从而可以实现目标集群中工作负载的自动更新,提高目标集群中工作负载的更新效率。
k8s集群规模较大,工作负载很多,在进行工作负载的自动更新时,为了保证工作负载自动更新的依次有序进行,可以通过任务形式对目标集群的工作负载进行更新。可选的,所述步骤103具体包括:
基于所述配置事件,确定更新任务的任务类型,所述更新任务用于对所述目标集群的工作负载进行更新;
基于所述负载描述信息和所述任务类型,生成所述更新任务的描述信息;
基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新。
负载更新系统中的更新服务组件还可以包括消息处理组件2022,控制组件201可以将目标消息发给消息处理组件2022,以使消息处理组件2022可以基于目标消息创建更新任务。其中,消息处理组件可以称之为jobHandle组件。
其中,目标消息可以包括配置事件的事件类型、工作负载的负载描述信息等,可以由消息处理组件2022基于目标消息确定更新任务的任务类型,并基于负载描述信息和任务类型,生成更新任务的描述信息。
也可以由控制组件201基于配置事件和负载描述信息确定更新任务的任务类型,并基于负载描述信息和任务类型,生成更新任务的描述信息。其中,目标消息可以包括更新任务的描述信息,将其发送给消息处理组件2022。
根据更新任务的任务类型不同,目标消息主要有三种,第一种更新当前所创建的工作负载的消息,即接收关于k8s集群中创建工作负载的消息,更新该工作负载的annotation信息;第二种是删除工作负载对应pod的消息,以达到更新工作负载的目的;第三种是更新已有工作负载的消息,即在镜像推送到镜像仓库的情况下,基于所推送的镜像更新已有工作负载所使用的镜像,以及更新该工作负载的annotation信息。
消息处理组件2022接收到目标消息之后,可以判断任务类型,对目标消息进行处理,对其结构化为消息队列需要的格式,并将其将推送到更新服务组件的任务队列(workqueue)2023中。其中,workqueue作为一个消息队列,接收来自消息处理组件的消息,会将事件持久化存储在本地缓存中,用于将对象的交付与其处理分离,同时为更新任务添加任务标识(id)。
更新服务组件还可以包括任务处理组件2024,可以称之为processHandle组件,其作为实际任务(job)的执行者,可以启动一个无限循环的函数,接收并处理消息。每次从workqueue中获取消息进行处理,并打印消息。根据job的id从本地缓存中获取更新任务的描述信息。判断不同的任务类型,并基于更新任务的描述信息,按照任务类型指示的更新方式,利用应用程序接口服务组件2021,调用所需要更新的Pod的应用程序接口,对目标集群的工作负载进行更新。
如此,可以保证k8s集群中工作负载的自动更新依次有序进行。
可选的,所述基于所述配置事件,确定更新任务的任务类型,包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,确定所述任务类型为第一任务类型;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第一结果的情况下,确定所述任务类型为第二任务类型,所述第一结果包括:所述第一镜像与所述第二镜像的版本标识相同,所述第一镜像与所述第二镜像的摘要信息不相同;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第二结果的情况下,确定所述任务类型为第三任务类型,所述第二结果包括:所述第一镜像与所述第二镜像的版本标识不相同。
对于配置事件为基于第一镜像创建应用的事件,其任务类型为第一任务类型,指示更新任务是更新当前所创建的工作负载的任务。
对于配置事件为目标集群推送第一镜像到镜像仓库的事件,可以通过比对第一镜像的第一属性信息和配置有第二镜像的工作负载的负载描述信息,确定更新任务的任务类型。
在比对结果表示第一镜像与第二镜像的tag相同,第一镜像与第二镜像的digest值不相同的情况下,确定任务类型为第二任务类型,指示删除目标命名空间中配置有第二镜像的工作负载对应的pod。
在比对结果表示第一镜像与第二镜像的tag不相同的情况下,确定任务类型为第三任务类型,指示更新已有工作负载所使用的镜像,并更新该工作负载的annatation信息。
如此,可以基于配置信息,并结合第一镜像和第二镜像的信息比对结果,实现对更新任务的任务类型的确定,从而可以提高更新任务的生成准确性,实现工作负载的自动且准确地更新。
可选的,所述基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新,包括:
在所述任务类型为第一任务类型的情况下,将所述第二镜像的摘要信息添加至目标命名空间下关于所述第二镜像的工作负载的负载描述信息中;
在所述任务类型为第二任务类型的情况下,删除所述目标命名空间下关于所述第二镜像的工作负载,并创建所述目标命名空间下关于所述第一镜像的工作负载;
在所述任务类型为第三任务类型的情况下,基于所述第一镜像,调用应用程序接口更新所述目标命名空间下关于所述第二镜像的工作负载,所述第一镜像是基于所述第一属性信息从镜像仓库中拉取的。
对于第一任务类型的更新任务,可以调用应用程序接口如k8s API接口去更新当前所创建的工作负载的annotation信息,将其设置为预设格式,使得该工作负载的annotation信息可以包括第一镜像的digest值。
对于第二任务类型的更新任务,虽然第一镜像的tag与第二镜像的tag相同,但是第一镜像的摘要信息与第二镜像的摘要信息不相同,表示向镜像仓库推送的第一镜像与目标集群中工作负载所使用的第二镜像并不是同一镜像,因此,可以删除目标命名空间下关于第二镜像的工作负载,并通过自动重建Pod的方式创建目标命名空间下关于第一镜像的工作负载。
之后,可以基于第一镜像的摘要信息,更新目标命名空间下关于第一镜像的工作负载的负载描述信息,即更新关于第一镜像的工作负载的annotation信息,将其设置为预设格式,使得该工作负载的annotation信息可以包括第一镜像的digest值。至此,该更新任务执行完成。
如此,用户在向镜像仓库推送镜像时无需修改镜像的tag,即可实现工作负载的更新,因此,提供了一种应对镜像版本无变化也能进行工作负载更新的策略,可以简化用户的操作。并且,无需人工重复设置触发器策略,即可实现工作负载的自动更新,可以避免设置人工进行手动更新或者设置触发器的繁琐,提高工作负载的更新效率。
对于第三任务类型的更新任务,可以基于第一镜像,调用应用程序接口如k8s API接口去更新目标命名空间下关于第二镜像的工作负载,使得该工作负载更新为关于第一镜像的工作负载。之后,可以基于第一镜像的摘要信息,更新目标命名空间下关于第一镜像的工作负载的负载描述信息,即更新关于第一镜像的工作负载的annotation信息,将其设置为预设格式,使得该工作负载的annotation信息可以包括第一镜像的digest值。至此,该更新任务执行完成。
如此,可以根据镜像的digest值进行判断,以确定更新工作负载的方式,无需每次推送镜像时都进行tag的变动,推送相同版本的镜像也能够实现工作负载的更新,为自动构建和推送镜像并更新工作负载提供了便利。
可选的,目标命名空间是基于生成的更新任务可触发自动更新的命名空间。
即目标命名空间是添加了AutoUpdate字段的命名空间,用于工作负载的自动更新,这样能够缩小控制组件监听的范围,提高控制组件的监听效率,从而可以提高工作负载的自动更新效率,并且不影响集群中其他命名空间中业务的进行。
可选的,在所述任务类型为第二任务类型或第三任务类型的情况下,所述方法还包括:
在基于所述第一属性信息检测到镜像版本发生变化的情况下,基于所述第一属性信息从镜像仓库中拉取所述第一镜像。
任务处理组件2024还可以对接目标集群中的节点,负责节点对镜像的预下载任务,避免工作负载更新时因为镜像过大或者网络延迟,导致节点对镜像拉取时间过长,能够实现工作负载的快速更新。
不管镜像的拉取策略,如果发现镜像存在新的版本,就进行拉取。任务处理组件2024可以内置一个定时任务去完成镜像预下载的任务,可以借助开源的管理定时任务的corn库设置定时任务,采用预设函数,并指定触发的时间。
以下以一示例进行k8s集群中工作负载的更新工作流程的说明。
可以首先定义一个deployment,用来创建要实现的应用。可以创建一个自动更新的命名空间test,在此命名空间中创建一个nginx应用,设置其工作负载名称为nginx,命名空间为test,Pod副本的数量为3,使用的镜像为nginx,版本为v1.0。
trigger-controller组件会监听到创建事件,获取到镜像相关的信息,包括镜像名称和镜像版本。在此之前需要在trigger-controller组件中配置镜像仓库相关信息,包括用户名以及密码,还需要将镜像仓库的webhook消息地址设置为组件对外暴露的服务地址,用于查询镜像的详细信息以及接收推送镜像的消息。trigger-controller组件可以从镜像仓库中获取到镜像的digest值,设置任务类型为第一任务类型,即更新当前创建的工作负载的annatation信息,将相关消息发送给jobHandle组件。
jobHandle组件接收到消息之后,判断任务类型。对消息进行处理,对其结构化为消息队列需要的格式,将其将推送到workqueue中。processHandle组件会启动一个循环任务,不断从消息队列中获取任务id,使用该id从本地缓存中查询更新任务的描述信息,包括工作负载的名称、命名空间、所使用的镜像以及对应的digest值,并调用k8s API更新工作负载的annatation信息。
当推送nginx镜像到镜像仓库时,trigger-controller组件可以监听到该事件,并接收镜像仓库反馈的webhook消息,该消息可以包括镜像的名称以及digest值。可以调用k8s API获取到k8s集群中使用该镜像的工作负载,将相关信息发送jobHandler组件,jobHandle组件会接收到消息,并创建对应的更新任务。当镜像名称或者版本没有发生变化时,jobHandle组件可以对比digest值,如果digest值发生了变化才会创建工作负载的更新任务。
比如,推送名称为nginx,版本号为v1.0,但是与工作负载中匹配镜像的digest值不相同的镜像到镜像仓库,jobHandle组件会创建工作负载的更新任务。processHandle组件会对任务类型进行判断,如果镜像版本发生了改变,则调用k8s API进行工作负载的更新。如果镜像的版本未发生改变,则可以删除工作负载的Pod,并创建所推送镜像的工作负载。之后jobHandle组件还会创建更新annatation的任务,更新工作负载的annatation信息。至此,整个工作负载的更新任务才算完成,当更新任务完成时jobHandle组件可以返回更新成功的消息。
下面对本发明实施例提供的负载更新装置进行说明。
参见图3,图中示出了本发明实施例提供的负载更新装置的结构示意图,如图3所示,负载更新装置300包括:
第一获取模块301,用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
第二获取模块302,用于基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
更新模块303,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
可选的,所述第一获取模块301,具体用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,获取所述配置事件关联的配置信息中所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和版本标识;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,接收所述镜像仓库针对所述第一镜像返回的第一消息,所述第一消息包括所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和摘要信息。
可选的,所述第二获取模块302,具体用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,基于所述第一属性信息,从镜像仓库中获取第二镜像的摘要信息,所述第二镜像为所述第一镜像,所述负载描述信息包括所述第二镜像的摘要信息;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,调用应用程序接口获取所述目标集群中使用第二镜像的工作负载的负载描述信息,所述第二镜像与所述第一镜像的名称相同,所述负载描述信息包括所述第二镜像的版本标识和摘要信息。
可选的,所述更新模块,包括:
确定单元,用于基于所述配置事件,确定更新任务的任务类型,所述更新任务用于对所述目标集群的工作负载进行更新;
生成单元,用于基于所述负载描述信息和所述任务类型,生成所述更新任务的描述信息;
更新单元,用于基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新。
可选的,所述确定单元,具体用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,确定所述任务类型为第一任务类型;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第一结果的情况下,确定所述任务类型为第二任务类型,所述第一结果包括:所述第一镜像与所述第二镜像的版本标识相同,所述第一镜像与所述第二镜像的摘要信息不相同;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第二结果的情况下,确定所述任务类型为第三任务类型,所述第二结果包括:所述第一镜像与所述第二镜像的版本标识不相同。
可选的,所述更新单元,具体用于:
在所述任务类型为第一任务类型的情况下,将所述第二镜像的摘要信息添加至目标命名空间下关于所述第二镜像的工作负载的负载描述信息中;
在所述任务类型为第二任务类型的情况下,删除所述目标命名空间下关于所述第二镜像的工作负载,并创建所述目标命名空间下关于所述第一镜像的工作负载;
在所述任务类型为第三任务类型的情况下,基于所述第一镜像,调用应用程序接口更新所述目标命名空间下关于所述第二镜像的工作负载,所述第一镜像是基于所述第一属性信息从镜像仓库中拉取的。
可选的,在所述任务类型为所述第二任务类型或所述第三任务类型的情况下,所述更新单元,还用于:
基于所述第一镜像的摘要信息,更新所述目标命名空间下关于所述第一镜像的工作负载的负载描述信息。
可选的,所述目标命名空间为基于生成的所述更新任务可触发自动更新的命名空间。
可选的,在所述任务类型为第二任务类型或第三任务类型的情况下,所述装置包括:
镜像拉取模块,用于在基于所述第一属性信息检测到镜像版本发生变化的情况下,基于所述第一属性信息从镜像仓库中拉取所述第一镜像。
负载更新装置300能够实现上述负载更新方法实施例中实现的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
下面对本发明实施例提供的负载更新系统进行说明。
如图2所示,所述系统包括控制组件201和更新服务组件,所述控制组件201和所述更新服务组件通信连接;其中,
所述控制组件201,用于监听到目标集群中与第一镜像关联的配置事件,所述目标集群为运行容器化应用的节点集群;
所述控制组件201,还用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息;基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
所述更新服务组件,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
可选的,所述控制组件201,具体用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,获取所述配置事件关联的配置信息中所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和版本标识;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,接收所述镜像仓库针对所述第一镜像返回的第一消息,所述第一消息包括所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和摘要信息。
可选的,所述控制组件201,还用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,基于所述第一属性信息,从镜像仓库中获取第二镜像的摘要信息,所述第二镜像为所述第一镜像,所述负载描述信息包括所述第二镜像的摘要信息;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,调用应用程序接口获取所述目标集群中使用第二镜像的工作负载的负载描述信息,所述第二镜像与所述第一镜像的名称相同,所述负载描述信息包括所述第二镜像的版本标识和摘要信息。
可选的,所述更新服务组件包括应用程序接口服务组件2021、消息处理组件2022、任务队列2023和任务处理组件2024;
消息处理组件2021,用于基于所述配置事件,确定更新任务的任务类型,所述更新任务用于对所述目标集群的工作负载进行更新;基于所述负载描述信息和所述任务类型,生成所述更新任务的描述信息;
任务处理组件2024,用于基于所述描述信息,利用应用程序接口服务组件2021按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新。
其中,消息处理组件2021将更新任务发送至任务队列2023中,相应的,任务处理组件2024从任务队列2023中获取更新任务进行处理。
可选的,消息处理组件2021,具体用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,确定所述任务类型为第一任务类型;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第一结果的情况下,确定所述任务类型为第二任务类型,所述第一结果包括:所述第一镜像与所述第二镜像的版本标识相同,所述第一镜像与所述第二镜像的摘要信息不相同;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第二结果的情况下,确定所述任务类型为第三任务类型,所述第二结果包括:所述第一镜像与所述第二镜像的版本标识不相同。
可选的,任务处理组件2024,具体用于:
在所述任务类型为第一任务类型的情况下,将所述第二镜像的摘要信息添加至目标命名空间下关于所述第二镜像的工作负载的负载描述信息中;
在所述任务类型为第二任务类型的情况下,删除所述目标命名空间下关于所述第二镜像的工作负载,并创建所述目标命名空间下关于所述第一镜像的工作负载;
在所述任务类型为第三任务类型的情况下,基于所述第一镜像,调用应用程序接口更新所述目标命名空间下关于所述第二镜像的工作负载,所述第一镜像是基于所述第一属性信息从镜像仓库中拉取的。
可选的,在所述任务类型为所述第二任务类型或所述第三任务类型的情况下,任务处理组件2024,还用于:
基于所述第一镜像的摘要信息,更新所述目标命名空间下关于所述第一镜像的工作负载的负载描述信息。
可选的,所述目标命名空间为基于生成的所述更新任务可触发自动更新的命名空间。
可选的,在所述任务类型为第二任务类型或第三任务类型的情况下,任务处理组件2024,还用于:
在基于所述第一属性信息检测到镜像版本发生变化的情况下,基于所述第一属性信息从镜像仓库中拉取所述第一镜像。
负载更新系统能够实现上述负载更新方法实施例中实现的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
下面对本发明实施例提供的电子设备进行说明。
参见图4,图中示出了本发明实施例提供的电子设备的结构示意图。如图4所示,电子设备400包括:处理器401、存储器402、用户接口403和总线接口404。
处理器401,用于读取存储器402中的程序,执行下列过程:
在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
在图4中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器401代表的一个或多个处理器和存储器402代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口404提供接口。针对不同的用户设备,用户接口403还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器401负责管理总线架构和通常的处理,存储器402可以存储处理器401在执行操作时所使用的数据。
可选的,处理器401,还用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,获取所述配置事件关联的配置信息中所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和版本标识;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,接收所述镜像仓库针对所述第一镜像返回的第一消息,所述第一消息包括所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和摘要信息。
可选的,处理器401,还用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,基于所述第一属性信息,从镜像仓库中获取第二镜像的摘要信息,所述第二镜像为所述第一镜像,所述负载描述信息包括所述第二镜像的摘要信息;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,调用应用程序接口获取所述目标集群中使用第二镜像的工作负载的负载描述信息,所述第二镜像与所述第一镜像的名称相同,所述负载描述信息包括所述第二镜像的版本标识和摘要信息。
可选的,处理器401,还用于:
基于所述配置事件,确定更新任务的任务类型,所述更新任务用于对所述目标集群的工作负载进行更新;
基于所述负载描述信息和所述任务类型,生成所述更新任务的描述信息;
基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新。
可选的,处理器401,还用于:
在所述配置事件指示基于所述第一镜像创建应用的情况下,确定所述任务类型为第一任务类型;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第一结果的情况下,确定所述任务类型为第二任务类型,所述第一结果包括:所述第一镜像与所述第二镜像的版本标识相同,所述第一镜像与所述第二镜像的摘要信息不相同;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第二结果的情况下,确定所述任务类型为第三任务类型,所述第二结果包括:所述第一镜像与所述第二镜像的版本标识不相同。
可选的,处理器401,还用于:
在所述任务类型为第一任务类型的情况下,将所述第二镜像的摘要信息添加至目标命名空间下关于所述第二镜像的工作负载的负载描述信息中;
在所述任务类型为第二任务类型的情况下,删除所述目标命名空间下关于所述第二镜像的工作负载,并创建所述目标命名空间下关于所述第一镜像的工作负载;
在所述任务类型为第三任务类型的情况下,基于所述第一镜像,调用应用程序接口更新所述目标命名空间下关于所述第二镜像的工作负载,所述第一镜像是基于所述第一属性信息从镜像仓库中拉取的。
可选的,在所述任务类型为所述第二任务类型或所述第三任务类型的情况下,处理器401,还用于:
基于所述第一镜像的摘要信息,更新所述目标命名空间下关于所述第一镜像的工作负载的负载描述信息。
可选的,所述目标命名空间为基于生成的所述更新任务可触发自动更新的命名空间。
可选的,在所述任务类型为第二任务类型或第三任务类型的情况下,处理器401,还用于:
在基于所述第一属性信息检测到镜像版本发生变化的情况下,基于所述第一属性信息从镜像仓库中拉取所述第一镜像。
优选的,本发明实施例还提供一种电子设备,包括处理器401,存储器402,存储在存储器402上并可在所述处理器401上运行的计算机程序,该计算机程序被处理器401执行时实现上述负载更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种可读存储介质,可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述负载更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (13)

1.一种负载更新方法,其特征在于,所述方法包括:
在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
2.根据权利要求1所述的方法,其特征在于,所述基于所述配置事件,获取所述第一镜像的第一属性信息,包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,获取所述配置事件关联的配置信息中所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和版本标识;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,接收所述镜像仓库针对所述第一镜像返回的第一消息,所述第一消息包括所述第一镜像的第一属性信息,所述第一属性信息包括所述第一镜像的名称和摘要信息。
3.根据权利要求1所述的方法,其特征在于,所述基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,基于所述第一属性信息,从镜像仓库中获取第二镜像的摘要信息,所述第二镜像为所述第一镜像,所述负载描述信息包括所述第二镜像的摘要信息;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库的情况下,调用应用程序接口获取所述目标集群中使用第二镜像的工作负载的负载描述信息,所述第二镜像与所述第一镜像的名称相同,所述负载描述信息包括所述第二镜像的版本标识和摘要信息。
4.根据权利要求1所述的方法,其特征在于,所述基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新,包括:
基于所述配置事件,确定更新任务的任务类型,所述更新任务用于对所述目标集群的工作负载进行更新;
基于所述负载描述信息和所述任务类型,生成所述更新任务的描述信息;
基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新。
5.根据权利要求4所述的方法,其特征在于,所述基于所述配置事件,确定更新任务的任务类型,包括:
在所述配置事件指示基于所述第一镜像创建应用的情况下,确定所述任务类型为第一任务类型;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第一结果的情况下,确定所述任务类型为第二任务类型,所述第一结果包括:所述第一镜像与所述第二镜像的版本标识相同,所述第一镜像与所述第二镜像的摘要信息不相同;
在所述配置事件指示所述目标集群推送所述第一镜像到镜像仓库,且所述负载描述信息和所述第一属性信息的比对结果为第二结果的情况下,确定所述任务类型为第三任务类型,所述第二结果包括:所述第一镜像与所述第二镜像的版本标识不相同。
6.根据权利要求4所述的方法,其特征在于,所述基于所述描述信息,按照所述任务类型指示的更新方式对所述目标集群的工作负载进行更新,包括:
在所述任务类型为第一任务类型的情况下,将所述第二镜像的摘要信息添加至目标命名空间下关于所述第二镜像的工作负载的负载描述信息中;
在所述任务类型为第二任务类型的情况下,删除所述目标命名空间下关于所述第二镜像的工作负载,并创建所述目标命名空间下关于所述第一镜像的工作负载;
在所述任务类型为第三任务类型的情况下,基于所述第一镜像,调用应用程序接口更新所述目标命名空间下关于所述第二镜像的工作负载,所述第一镜像是基于所述第一属性信息从镜像仓库中拉取的。
7.根据权利要求6所述的方法,其特征在于,在所述任务类型为所述第二任务类型或所述第三任务类型的情况下,所述方法还包括:
基于所述第一镜像的摘要信息,更新所述目标命名空间下关于所述第一镜像的工作负载的负载描述信息。
8.根据权利要求6所述的方法,其特征在于,所述目标命名空间为基于生成的所述更新任务可触发自动更新的命名空间。
9.根据权利要求6所述的方法,其特征在于,在所述任务类型为第二任务类型或第三任务类型的情况下,所述方法还包括:
在基于所述第一属性信息检测到镜像版本发生变化的情况下,基于所述第一属性信息从镜像仓库中拉取所述第一镜像。
10.一种负载更新装置,其特征在于,所述装置包括:
第一获取模块,用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息,所述目标集群为运行容器化应用的节点集群;
第二获取模块,用于基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
更新模块,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
11.一种负载更新系统,其特征在于,所述系统包括控制组件和更新服务组件,所述控制组件和所述更新服务组件通信连接;其中,
所述控制组件,用于监听到目标集群中与第一镜像关联的配置事件,所述目标集群为运行容器化应用的节点集群;
所述控制组件,还用于在监听到目标集群中与第一镜像关联的配置事件的情况下,基于所述配置事件,获取所述第一镜像的第一属性信息;基于所述配置事件,获取配置有第二镜像的工作负载的负载描述信息,所述第二镜像为与所述第一属性信息匹配的镜像,所述负载描述信息包括所述第二镜像的摘要信息;
所述更新服务组件,用于基于所述负载描述信息和所述配置事件,对所述目标集群的工作负载进行更新。
12.一种电子设备,其特征在于,所述电子设备包括处理器,存储器,存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9中任一项所述的负载更新方法的步骤。
13.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的负载更新方法的步骤。
CN202311160676.2A 2023-09-11 2023-09-11 负载更新方法、装置、系统、电子设备及可读存储介质 Active CN116893834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311160676.2A CN116893834B (zh) 2023-09-11 2023-09-11 负载更新方法、装置、系统、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311160676.2A CN116893834B (zh) 2023-09-11 2023-09-11 负载更新方法、装置、系统、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN116893834A true CN116893834A (zh) 2023-10-17
CN116893834B CN116893834B (zh) 2023-12-12

Family

ID=88312432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311160676.2A Active CN116893834B (zh) 2023-09-11 2023-09-11 负载更新方法、装置、系统、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116893834B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110213309A (zh) * 2018-03-13 2019-09-06 腾讯科技(深圳)有限公司 一种绑定关系管理的方法、设备及存储介质
CN111880816A (zh) * 2020-07-24 2020-11-03 北京浪潮数据技术有限公司 Kubernetes工作负载升级方法、装置及设备
CN113031993A (zh) * 2021-04-26 2021-06-25 中国工商银行股份有限公司 基于集群容器的应用升级方法及装置
CN113268308A (zh) * 2020-02-14 2021-08-17 中移(苏州)软件技术有限公司 信息处理方法、装置以及存储介质
WO2021232845A1 (zh) * 2020-05-22 2021-11-25 国云科技股份有限公司 一种基于容器的镜像更新发布方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110213309A (zh) * 2018-03-13 2019-09-06 腾讯科技(深圳)有限公司 一种绑定关系管理的方法、设备及存储介质
CN113268308A (zh) * 2020-02-14 2021-08-17 中移(苏州)软件技术有限公司 信息处理方法、装置以及存储介质
WO2021232845A1 (zh) * 2020-05-22 2021-11-25 国云科技股份有限公司 一种基于容器的镜像更新发布方法及装置
CN111880816A (zh) * 2020-07-24 2020-11-03 北京浪潮数据技术有限公司 Kubernetes工作负载升级方法、装置及设备
CN113031993A (zh) * 2021-04-26 2021-06-25 中国工商银行股份有限公司 基于集群容器的应用升级方法及装置

Also Published As

Publication number Publication date
CN116893834B (zh) 2023-12-12

Similar Documents

Publication Publication Date Title
US8060892B2 (en) Executing business logic extensions on a client computing system
US9612919B2 (en) Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
CN107992537B (zh) 业务属性传递方法、装置、计算机设备及存储介质
US20070239725A1 (en) Active cache offline access and management of project files
US20070067359A1 (en) Centralized system for versioned data synchronization
US9652220B2 (en) Zero down-time deployment of new application versions
CN109871384B (zh) 基于PaaS平台进行容器迁移的方法、系统、设备和存储介质
JP2013511766A (ja) クラスタベースのjavaアプリケーションシステムのコードをロードおよび更新する装置および方法
CN110825399B (zh) 一种应用程序的部署方法及装置
CN113312153A (zh) 一种集群部署方法、装置、电子设备及存储介质
CN111666134A (zh) 一种分布式任务调度的方法和系统
CN114900449B (zh) 一种资源信息管理方法、系统及装置
CN113419818B (zh) 基础组件部署方法、装置、服务器及存储介质
CN116893834B (zh) 负载更新方法、装置、系统、电子设备及可读存储介质
CN115309558A (zh) 一种资源调度管理系统、方法、计算机设备及存储介质
CN113448493B (zh) 用于备份数据的方法、电子设备和计算机可读介质
US20110307532A1 (en) File processing apparatus, file processing method, and computer program product
CN113326052A (zh) 业务组件的升级方法、装置、计算机设备和存储介质
CN112463304A (zh) 容器镜像的回滚方法、装置、计算机设备和存储介质
CN113761075A (zh) 切换数据库的方法、装置、设备和计算机可读介质
CN111858234A (zh) 一种任务执行方法、装置、设备、介质
CN116775171B (zh) 一种架构切换方法、装置、电子设备及存储介质
CN117171419B (zh) 内容处理方法、装置、电子设备、存储介质及程序产品
CN114356214B (zh) 一种针对kubernetes系统提供本地存储卷的方法及系统
US20210294676A1 (en) Data consumer api for data delivered via message broker

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