CN116866412A - 集群自动服务发现方法、装置、电子设备及可读存储介质 - Google Patents

集群自动服务发现方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN116866412A
CN116866412A CN202310640380.4A CN202310640380A CN116866412A CN 116866412 A CN116866412 A CN 116866412A CN 202310640380 A CN202310640380 A CN 202310640380A CN 116866412 A CN116866412 A CN 116866412A
Authority
CN
China
Prior art keywords
instance
pod
list
custom resource
maintenance platform
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.)
Pending
Application number
CN202310640380.4A
Other languages
English (en)
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.)
Du Xiaoman Technology Beijing Co Ltd
Original Assignee
Du Xiaoman Technology Beijing 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 Du Xiaoman Technology Beijing Co Ltd filed Critical Du Xiaoman Technology Beijing Co Ltd
Priority to CN202310640380.4A priority Critical patent/CN116866412A/zh
Publication of CN116866412A publication Critical patent/CN116866412A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration

Abstract

本发明提供一种集群自动服务发现方法,包括:当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;对比所述对象信息中的应用实例和独立运维平台中挂载的实例,生成实例操作列表;向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。本发明还提供了集群自动服务发现装置、电子设备及可读存储介质。本发明通过自定义资源定义CRD以及k8s的控制器机制实现了挂载实例与自定义资源的应用实例的匹配,使得主动变更自定义资源CR时业务可以正常访问Redis Pod实例。

Description

集群自动服务发现方法、装置、电子设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及集群自动服务发现方法、装置、电子设备及可读存储介质。
背景技术
Kubernetes(K8s)是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
当前各大云厂商都提供Kubernetes作为容器编排解决方案,实现Redis集群化部署,但是开源的解决方案无法兼容企业内部的服务发现机制,如果使用开源的k8s service方式,业务改造成本高。若不进行改造,直接使用访问router的方式,在故障或者升级场景下router Pod发生漂移的场景下由于访问入口的容器实例发生改变,但是访问入口的实例列表未自动改变,会导致业务无法正常访问Redis服务。
发明内容
有鉴于此,本发明实施例提供了一种集群自动服务发现方法、装置、电子设备及可读存储介质,以解决在采用企业内部的服务发现机制时无法正常访问redis服务的问题。
根据本发明的一方面,提供了一种集群自动服务发现方法,包括:
当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
对比所述对象信息中的应用实例和独立运维平台中挂载的实例,生成实例操作列表;
向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
本发明还提供了一种集群自动服务发现方法,在所述监听到自定义资源发生变更之前,还包括:
监听pod的变更事件;
当所述变更事件与自定义资源相关时,获取所述自定义资源的信息;
根据所述变更事件对所述自定义资源的信息进行变更。
根据本发明的另一方面,提供了一种集群自动服务发现装置,包括:
第一获取模块,用于当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
对比模块,用于对比所述对象信息中的实例和独立运维平台中挂载的实例,生成实例操作列表;
操作请求模块,用于向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
根据本发明的另一方面,提供了一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行前述任一种方法。
还提供了一种计算机可读存储介质,其中,存储有计算机指令,所述计算机指令用于使计算机执行前述任一种方法。
本申请实施例中提供的一个或多个技术方案,可以实现以下技术效果:
1、通过自定义资源定义CRD以及k8s的控制器机制实现了挂载实例与自定义资源的应用实例的匹配,使得主动变更自定义资源CR时业务可以正常访问Redis Pod实例;
2、通过监听机制,实时获取Pod的变化信息并对自定义资源进行变更,解决了pod自动变更带来的app挂载实例与实际自定义资源不一致问题。
附图说明
在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:
图1示出了根据本发明示例性实施例的一种集群自动服务发现方法的流程示意图一;
图2示出了根据本发明示例性实施例的一种集群自动服务发现方法步骤S110的流程示意图;
图3示出了根据本发明示例性实施例的一种集群自动服务发现方法的自定义控制器的示意性结构框图;
图4示出了根据本发明示例性实施例的一种集群自动服务发现方法的流程示意图二;
图5示出了根据本发明示例性实施例的一种集群自动服务发现方法的PodWatcher的示意性流程框图;
图6示出了根据本发明示例性实施例的一种集群自动服务发现方法的步骤S102的流程示意图;
图7示出了根据本发明示例性实施例的一种集群自动服务发现方法的步骤S103的流程示意图;
图8示出了根据本发明示例性实施例的一种集群自动服务发现装置的结构示意图一;
图9示出了根据本发明示例性实施例的一种集群自动服务发现装置的结构示意图二;
图10示出了能够用于实现本发明的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
第一方面,一种集群自动服务发现方法,如图1所示,包括:
S110:当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
S120:对比所述对象信息中的应用实例和独立运维平台中挂载的实例,生成实例操作列表;
S130:向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
本实施例中,所述自定义资源CR(Custom Resource)用于描述redis集群的信息,存储一些集群所必须的信息,如拓扑状态、实例数量、实例ip等相关信息。所述自定义资源的对象信息,是指每次从K8s APIServer监听到的RedisApp的自定义资源的对象,其中包括自定义资源中的实例(appInstances,即应用实例)的相关信息。所述独立运维平台,是指用于实现企业内部的服务发现机制的运维平台,其替代了K8s Service的功能。本实施例中所述独立运维平台以Noah平台为例;其中Noah是一个可视化平台,包括了服务管理、机器管理、资源定位、监控报警、自动部署、任务调度等系列运维系统的集合。
当所述自定义资源的对象信息发生变更后,所述对象信息的应用实例(appInstances)与所述独立运维平台挂载的实例不一致,此时需要根据所述自定义资源的对象信息对独立运维平台上挂载的实例进行操作修改,以使当前挂载实例状态与期望状态相匹配。基于此,本实施例中生成用于在独立运维平台上进行实例变更操作的所述实例操作列表,且向所述独立运维平台发送实例操作请求,所述独立运维平台根据所述实力操作列表进行对应的操作,使所述独立运维平台挂载的实例与所述自定义资源CR中的应用实例(appInstances)一致。
所述实例操作列表,通过将所述对象信息中的应用实例(appInstances)和独立运维平台中挂载的实例进行对比来生成。
一些实施例中,所述实例操作列表,包括删除列表、挂载列表和更新列表中的至少一种;
所述对应操作,包括对所述删除列表中的实例进行的删除操作、对所述挂载列表中的实例进行的挂载操作以及对所述更新列表中的实例进行的更新操作。
本实施例中,根据监听到的所述对象信息中的应用实例的变化进行对应的操作。具体来说,可根据监听到的所述对象信息中的实例及其发生的删除事件,生成包括了全部待删除实例的删除列表;可根据监听到的所述对象信息中的实例及其发生的挂载事件,生成包括了全部待挂载实例的挂载列表;可根据监听到的所述对象信息中的实例及其发生的更新事件,生成包括了全部待更新实例的更新列表。
对所述实例的操作,可包括删除、挂载和更新操作中的一种或几种,其中更新操作还包括屏蔽和解屏蔽操作;因此所述实例操作列表可能包括删除列表、挂载列表和更新列表,也可能仅包括其中一种或两种。所述独立运维平台在接收到实例操作请求后,对所述删除列表、挂载列表和更新列表中的实例进行对应的操作。
一些实施例中,所述对比所述对象信息中的应用实例和独立运维平台中挂载的实例,生成实例操作列表,包括:
若所述对象信息中存在着至少一个在所述独立运维平台中未挂载的待挂载实例,则根据所述待挂载实例生成挂载列表;
若所述独立运维平台中挂载的实例中存在着至少一个与所述对象信息中对应但不相同的待更新实例,则根据所述待更新实例生成更新列表;
若所述独立运维平台中挂载的实例中存在着至少一个在所述对象信息中不存在的待删除实例,则根据所述第三实例生成删除列表。
本实施例中,所述实例操作列表根据所述应用实例和独立运维平台中挂载的实例对比的结果来生成,具体来说,在对象信息的应用实例中,如果存在独立运维平台未挂载的实例,则为独立运维平台生成挂载列表;如果存在独立运维平台未更新的实例,则为独立运维平台生成更新列表;如果在应用实例中不存在但独立运维平台却有挂载的实例,则为独立运维平台生成删除列表。
一些实施例中,当所述集群为迁移集群时,所述实例操作列表不生成所述删除列表,或所述删除操作不生效。
其中,本实施例的自定义资源定义CRD(Custom Resource Definition)中还可包括redis集群类型(redisClusterType),其中可包括常规集群(OrdinaryCluster)、迁移集群(TransitionCluster)以及非托管集群(UnmanagedCluster)等类型。如果所述redis集群为常规集群(OrdinaryCluster)则所述独立运维平台上的实例需严格对齐自定义资源CR中的实例的挂载和屏蔽状态;如果为迁移集群(TransitionCluster)则不会进行删除实例操作,只对实例进行挂载和更新(如屏蔽和解屏蔽)操作,因为该模式用于老集群迁移至新架构,该过程中可能有一些预期的自独立运维平台(比如noah)中实际挂载的实例比自定义资源CR中的实例多的情况;如果为非托管集群(UnmanagedCluster),则不对自定义资源CR的变化做任何app实例处理操作。
其中,当redis集群为迁移集群(TransitionCluster)则不会进行删除实例操作,该方案可以通过多种不同的方式实现,比如在实例操作列表时就不生成删除列表,或者让删除操作不生效。
一些实施例中,所述获取所述自定义资源的对象信息,如图2所示,包括:
S111:获取所述自定义资源的最新版本的对象信息并持续获取所述对象信息的增量;
S112:根据所述对象信息建立本地存储并建立与所述对象信息对应的索引;
S113:根据所述增量更新所述本地存储中的所述对象信息;
S114:为所述增量创建第一标签并将所述第一标签发送至工作队列;
S115:从所述工作队列获取所述第一标签;
S116:根据所述第一标签和所述索引从所述本地存储中获取所述自定义资源的对象信息。
本实施例中,如图3所示,利用k8s的operator机制,可自定义控制器(controller),其中包括informer、工作队列(WorkQueue)及调谐(reconcile,指控制器让关联资源的当前状态向期望状态迈进的控制过程)等结构。所述informer中的反射器(Reflector)可通过ListWatch的方法监控RedisApp的自定义资源的对象,从KubernetesAPIServer中List所述自定义资源的所有实例,取得最新的资源版本(ResourceVersion),然后使用Watch方法监听所述资源版本(ResourceVersion)之后的所有变化,一旦所述对象的实例有创建、删除、更新等动作,反射器(Reflector)都会收到变更事件的通知,并利用反射机制将监听的结果实例化成具体的对象。所述变更事件及它对应的实例的组合称为增量(Delta),之后会被存进增量优先队列(DeltaFIFO)中。所述增量优先队列,将反射器监控的增量变化的对象形成一个先入先出(FIFO)队列。
所述Informer会不断地从增量优先队列(DeltaFIFO)中读取增量,每出现一个对象,Informer就会判断这个增量的事件类型,然后创建或更新本地存储(LocalStore,可以是缓存)。例如,若所述事件类型是Added(添加对象),那么Informer会把该增量中的对象保存到本地存储中,并为其创建索引;若为删除操作,则在本地存储中删除该对象。
此外,本地存储(LocalStore)还利用索引提供快速查找的能力,当使用者需要查询(Get/List)Kubernetes对象时可以直接请求LocalStore,以此减轻KubernetesAPIServer的压力。
对于工作队列(Workqueue),当DeltaFIFO在同步完LocalStore后,会Pop这个事件到控制器(controller)中,控制器会调用事先注册的回调函数(如OnAdd、OnUpdate、OnDelete)进行处理,这些回调函数只做一些简单的过滤工作,最后将根据所述增量创建的对象键值(即第一标签)放入所述工作队列(Workqueue)中,以供调谐(reconcile)中的业务逻辑处理。
在所述调谐(reconcile)的控制过程中,可根据从工作队列中获取到的第一标签的键值,利用所述索引提供的快速查找能力,从本地存储中获取对象的详细信息。其中,若获取不到对应对象时,说明自定义资源已经被删除,该redis集群已经废弃,本次处理结束;若能够获取到对应对象,则可继续进行前述实施例中所述的对比所述对象信息中的实例和独立运维平台中挂载的实例,生成实例操作列表的操作。
在一类实施例中,如图4所示,在所述监听到自定义资源发生变更之前,还包括:
S101:监听pod的变更事件;
S102:当所述变更事件与自定义资源相关时,获取所述自定义资源的信息;
S103:根据所述变更事件对所述自定义资源的信息进行变更。
其中,前述实施例中描述的S110~S130的内容,可以是主动对RedisApp的自定义资源CR进行修改的场景,而本实施例的方案中,使用statefulset来管理router多副本。而staefulset中的pod若发生异常或者升级场景,是无法触发RedisApp的自定义资源CR的应用实例(appInstances)变更的,也就无法触发调谐(reconcile),这样会导致独立运维平台(此处可以是noah)中挂载的实例与实际statefulset中提供的不一致,导致业务访问到异常的实例。本实施例通过订阅Pod的变化,对节点中自定义资源的应用实例进行实时变更,以解决业务访问到异常实例的问题。
其中,所述Pod是K8s最小的运行、部署单位。用K8s作容器管理的服务,比如Mysql,Redis等服务运行需要创建Pod,才能对外提供服务。所述statefulset主要用来在k8s上管理有状态应用pod,在本发明中的主要功能就是维持Pod的个数,比如设置statefulset需要保证3个Pod运行,当其中一个Pod挂掉后,statefulset将会自动启动一个pod,保证总数量为3个Pod的运行。
如图5所示,当PodWatcher(Pod监听器)组件监听到pod发生变更时,先判断pod的变更事件是否与自定义资源相关,若是则获取该变更事件关联的自定义资源信息。所述pod的变更事件,可包括pod创建事件(pod create)、pod更新事件(pod update)和pod删除事件(pod delete)中的至少一种。
一些实施例中,如图6所示,所述步骤S102:当所述变更事件与自定义资源相关时,获取所述自定义资源的信息,包括:
当监听到pod的变更事件时,判断pod中是否包含与redis及所述自定义资源相关的第二标签:
若包含则根据所述第二标签获取到相关联的自定义资源的信息;
若不包含则不进行处理。
本实施例中,在对自定义资源进行变更之前,先判断监听到的pod变更事件是否与redis及自定义资源有关,如果无关则无需处理,如果有关再进行后续的判断和变更。
如图5所示,所述第二标签,可以是包含redis-crd的标签(label),比如redis-app-operator-crd。当pod中包含第二标签时,可通过所述第二标签获取自定义资源的名称(CR Name),进而获取到与所述名称关联的自定义资源CR。
本实施例的方案可以有效提升系统的运行效率。
一些实施例中,如图5、图7所示,所述步骤S103:根据所述变更事件对所述自定义资源的信息进行变更,包括:
处理所述pod创建事件时,转为处理所述pod更新事件;
处理所述pod更新事件时,判断所述自定义资源中是否存在与所述pod更新事件对应的实例:
若存在则判断所述pod是否为能够提供服务的状态,若否则将所述自定义资源中的所述实例设置为屏蔽状态,若是则不处理;
若不存在则判断所述pod是否为能够提供服务的状态,若是则将所述实例以屏蔽状态存放至所述自定义资源,若否则不处理;
处理所述pod删除事件时,判断所述自定义资源中是否存在与所述pod删除事件对应的实例,若存在则将所述实例从所述自定义资源中删除,若不存在则不处理。
其中,如图5所示,在判断为与redis和自定义资源CR有关后,本实施例的方案根据pod变更事件的不同,对自定义资源CR进行进一步处理。Pod变更事件包括创建事件(podcreate)、更新事件(pod update)和删除事件(pod delete)。由于在创建pod时会修改pod的状态为running,此时会产生更新(update)事件,故此时按照pod更新事件的处理方式进行处理即可。
在处理pod更新事件时,会进行两层判断,即判断CR中是否存在对应实例以及判断该pod的状态是否为ready(即能提供服务的状态)。若不存在对应实例且pod不为ready,则不进行操作;若不存在对应实例且pod为ready,则将该实例以屏蔽状态保存到自定义资源CR中;若存在对应实例且pod不为ready,则说明实例异常,将该实例改为屏蔽状态,并保存到自定义资源CR中;若存在对应实例且pod为ready,则不进行操作。
在处理pod删除事件时,若自定义资源中不存在对应实例,则不操作;否则将该实例从自定义资源中删除。
如图5所示,在将上述操作更新到所述自定义资源之后,可触发Redisapp的调谐逻辑,执行前述方法中的步骤S110~S130,使独立运维平台中的实例与自定义资源CR中的应用实例保持一致。
本发明通过自定义资源定义CRD以及k8s的控制器机制实现了挂载实例与自定义资源的应用实例的匹配,使得主动变更自定义资源CR时业务可以正常访问Redis Pod实例。还通过监听机制,实时获取Pod的变化信息并对自定义资源进行变更,解决了pod自动变更带来的app挂载实例与实际自定义资源不一致问题。
第二方面,一种集群自动服务发现装置1,如图8所示,包括:
第一获取模块11,用于当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
对比模块12,用于对比所述对象信息中的实例和独立运维平台中挂载的实例,生成实例操作列表;
操作请求模块13,用于向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
其中,本实施例与前述实施例中描述的S110~S130的内容相对应。所述自定义资源CR(Custom Resource)用于描述redis集群的信息,存储一些集群所必须的信息,如拓扑状态、实例数量、实例ip等相关信息。所述自定义资源的对象信息,是指每次从K8sAPIServer监听到的RedisApp的自定义资源的对象,其中包括自定义资源中的实例(appInstances,即应用实例)的相关信息。所述独立运维平台,是指用于实现企业内部的服务发现机制的运维平台,其替代了K8s Service的功能。本实施例中所述独立运维平台以Noah平台为例。
当所述自定义资源的对象信息发生变更后,所述对象信息的应用实例(appInstances)与所述独立运维平台挂载的实例不一致,此时需要根据所述自定义资源的对象信息对独立运维平台上挂载的实例进行操作修改,以使当前挂载实例状态与期望状态相匹配。基于此,本实施例中生成用于在独立运维平台上进行实例变更操作的所述实例操作列表,且向所述独立运维平台发送实例操作请求,所述独立运维平台根据所述实力操作列表进行对应的操作,使所述独立运维平台挂载的实例与所述自定义资源CR中的应用实例(appInstances)一致。
所述实例操作列表,通过将所述对象信息中的应用实例(appInstances)和独立运维平台中挂载的实例进行对比来生成。
一些实施例中,所述集群自动服务发现装置1,如图9所示,还包括:
监听模块101,用于监听pod的变更事件;
第二获取模块102,用于当所述变更事件与自定义资源相关时,获取所述自定义资源的信息;
变更模块103,用于根据所述变更事件对所述自定义资源的信息进行变更。
其中,前述实施例中的一种集群自动服务发现装置,可用于主动对RedisApp的自定义资源CR进行修改的场景,而本实施例的方案中,使用statefulset来管理router多副本。而staefulset中的pod若发生异常或者升级场景,是无法触发RedisApp的自定义资源CR的应用实例(appInstances)变更的,也就无法触发调谐(reconcile),这样会导致独立运维平台(此处可以是noah)中挂载的实例与实际statefulset中提供的不一致,导致业务业务访问到异常的实例。本实施例通过订阅Pod的变化,对节点中自定义资源的应用实例进行实时变更,以解决业务访问到异常实例的问题。
其中,所述Pod是K8s最小的运行、部署单位。用K8s作容器管理的服务,比如Mysql,Redis等服务运行需要创建Pod,才能对外提供服务。所述statefulset主要用来在k8s上管理有状态应用pod,在本发明中的主要功能就是维持Pod的个数,比如设置statefulset需要保证3个Pod运行,当其中一个Pod挂掉后,statefulset将会自动启动一个pod,保证总数量为3个Pod的运行。
当监听模块(即PodWatcher组件)监听到pod发生变更时,若pod的变更事件与自定义资源相关,则第二获取模块获取该变更事件关联的自定义资源信息。变更模块在根据变更事件对自定义资源进行变更。所述pod的变更事件,可包括pod创建事件、pod更新事件和pod删除事件中的至少一种。
如图9所示,在所述变更模块103对所述自定义资源的信息进行变更之后,可依次触发前述装置中的第一获取模块11、对比模块12以及操作请求模块13,使独立运维平台中的实例与自定义资源CR中的应用实例保持一致。
第三方面,本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
参考图10,现将描述可以作为本发明的服务器或客户端的电子设备200的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图10所示,电子设备200包括计算单元201,其可以根据存储在只读存储器(ROM)202中的计算机程序或者从存储单元208加载到随机访问存储器(RAM)203中的计算机程序,来执行各种适当的动作和处理。在RAM 203中,还可存储设备200操作所需的各种程序和数据。计算单元201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
电子设备200中的多个部件连接至I/O接口205,包括:输入单元206、输出单元207、存储单元208以及通信单元209。输入单元206可以是能向电子设备200输入信息的任何类型的设备,输入单元206可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元207可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元204可以包括但不限于磁盘、光盘。通信单元209允许电子设备200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元201的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元201执行上文所描述的各个方法和处理。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 202和/或通信单元209而被载入和/或安装到电子设备200上。在一些实施例中,计算单元201可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

Claims (13)

1.一种集群自动服务发现方法,其特征在于,包括:
当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
对比所述对象信息中的应用实例和独立运维平台中挂载的实例,生成实例操作列表;
向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
2.根据权利要求1所述的集群自动服务发现方法,其特征在于:
所述实例操作列表,包括删除列表、挂载列表和更新列表中的至少一种;
所述对应操作,包括对所述删除列表中的实例进行的删除操作、对所述挂载列表中的实例进行的挂载操作以及对所述更新列表中的实例进行的更新操作。
3.根据权利要求2所述的集群自动服务发现方法,其特征在于:
所述对比所述对象信息中的实例和独立运维平台中挂载的实例,生成实例操作列表,包括:
若所述对象信息中存在着至少一个在所述独立运维平台中未挂载的待挂载实例,则根据所述待挂载实例生成挂载列表;
若所述独立运维平台中挂载的实例中存在着至少一个与所述对象信息中对应但不相同的待更新实例,则根据所述待更新实例生成更新列表;
若所述独立运维平台中挂载的实例中存在着至少一个在所述对象信息中不存在的待删除实例,则根据所述第三实例生成删除列表。
4.根据权利要求2所述的集群自动服务发现方法,其特征在于:
当所述集群为迁移集群时,所述实例操作列表不生成所述删除列表,或
所述删除操作不生效。
5.根据权利要求1任一项所述的集群自动服务发现方法,其特征在于,所述获取所述自定义资源的对象信息,包括:
获取所述自定义资源的最新版本的对象信息并持续获取所述对象信息的增量;
根据所述对象信息建立本地存储并建立与所述对象信息对应的索引;
根据所述增量更新所述本地存储中的所述对象信息;
为所述增量创建第一标签并将所述第一标签发送至工作队列;
从所述工作队列获取所述第一标签;
根据所述第一标签和所述索引从所述本地存储中获取所述自定义资源的对象信息。
6.根据权利要求1-5任一项所述的集群自动服务发现方法,其特征在于,在所述监听到自定义资源发生变更之前,还包括:
监听pod的变更事件;
当所述变更事件与自定义资源相关时,获取所述自定义资源的信息;
根据所述变更事件对所述自定义资源的信息进行变更。
7.根据权利要求6所述的集群自动服务发现方法,其特征在于,所述当所述变更事件与自定义资源相关时,获取所述自定义资源的信息,包括:
当监听到pod的变更事件时,判断pod中是否包含与redis及所述自定义资源相关的第二标签:
若包含则根据所述第二标签获取到相关联的自定义资源的信息;
若不包含则不进行处理。
8.根据权利要求6所述的集群自动服务发现方法,其特征在于:
所述变更事件包括pod创建事件、pod更新事件和pod删除事件中的至少一种。
9.根据权利要求8所述的集群自动服务发现方法,其特征在于,所述根据所述变更事件对所述自定义资源的信息进行变更,包括:
处理所述pod创建事件时,转为处理所述pod更新事件;
处理所述pod更新事件时,判断所述自定义资源中是否存在与所述pod更新事件对应的实例:
若存在则判断所述pod是否为能够提供服务的状态,若否则将所述自定义资源中的所述实例设置为屏蔽状态,若是则不处理;
若不存在则判断所述pod是否为能够提供服务的状态,若是则将所述实例以屏蔽状态存放至所述自定义资源,若否则不处理;
处理所述pod删除事件时,判断所述自定义资源中是否存在与所述pod删除事件对应的实例,若存在则将所述实例从所述自定义资源中删除,若不存在则不处理。
10.一种集群自动服务发现装置,其特征在于,包括:
第一获取模块,用于当监听到自定义资源发生变更时,获取所述自定义资源的对象信息;
对比模块,用于对比所述对象信息中的实例和独立运维平台中挂载的实例,生成实例操作列表;
操作请求模块,用于向所述独立运维平台发送实例操作请求,其中所述实例操作请求用于使所述独立运维平台对所述独立运维平台上挂载的实例按照所述实例操作列表进行对应操作。
11.根据权利要求10所述的集群自动服务发现装置,其特征在于,还包括:
监听模块,用于监听pod的变更事件;
第二获取模块,用于当所述变更事件与自定义资源相关时,获取所述自定义资源的信息;
变更模块,用于根据所述变更事件对所述自定义资源的信息进行变更。
12.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-9中任一项所述的方法。
13.一种可读存储介质,其中,存储有计算机指令,所述计算机指令用于使计算机执行根据权利要求1-9中任一项所述的方法。
CN202310640380.4A 2023-06-01 2023-06-01 集群自动服务发现方法、装置、电子设备及可读存储介质 Pending CN116866412A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310640380.4A CN116866412A (zh) 2023-06-01 2023-06-01 集群自动服务发现方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310640380.4A CN116866412A (zh) 2023-06-01 2023-06-01 集群自动服务发现方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN116866412A true CN116866412A (zh) 2023-10-10

Family

ID=88231121

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310640380.4A Pending CN116866412A (zh) 2023-06-01 2023-06-01 集群自动服务发现方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN116866412A (zh)

Similar Documents

Publication Publication Date Title
CN108737270B (zh) 一种服务器集群的资源管理方法和装置
CN107534570B (zh) 用于虚拟化网络功能监控的计算机系统、方法和介质
US8910138B2 (en) Hot pluggable extensions for access management system
US9942353B2 (en) Management of connections within a messaging environment based on the statistical analysis of server responsiveness
CN110196731B (zh) 一种运维系统、方法及存储介质
US11418392B2 (en) Network resource management devices methods and systems
CN111694857B (zh) 存储资源数据的方法、装置、电子设备及计算机可读介质
US20150067761A1 (en) Managing security and compliance of volatile systems
CN113709810B (zh) 一种网络服务质量的配置方法、设备和介质
CN113742031A (zh) 节点状态信息获取方法、装置、电子设备及可读存储介质
CN115640110B (zh) 分布式云计算系统调度方法和装置
US8543680B2 (en) Migrating device management between object managers
CN111782254A (zh) 用于升级对象的方法、装置、设备以及存储介质
CN112346926A (zh) 资源状态监控方法、装置及电子设备
WO2023093127A1 (zh) 一种监控集群的方法、装置及电子设备
CN113297031A (zh) 容器集群中的容器组防护方法及装置
CN114168297A (zh) 一种归集任务调度方法、装置、设备及介质
CN114070889B (zh) 配置方法、流量转发方法、设备、存储介质及程序产品
CN116866412A (zh) 集群自动服务发现方法、装置、电子设备及可读存储介质
CN114968636A (zh) 一种故障处理的方法和装置
CN112559001B (zh) 更新应用的方法和装置
CN112579247A (zh) 确定任务状态的方法和装置
US20230409568A1 (en) Monitoring metadata synchronization and aggregation
US20230246916A1 (en) Service map conversion with preserved historical information
US20220350656A1 (en) Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling

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