专利名称:多Kubernetes集群的端点资源的更新方法、更新装置及电子设备
专利类型:实用新型专利
专利申请号:CN202210968475.4
专利申请(专利权)人:新浪技术(中国)有限公司
权利人地址:北京市海淀区东北旺西路中关村软件园二期(西扩)N-1、N-2地块新浪总部科研楼5层501-502室
专利发明(设计)人:贾永鹏,马超
专利摘要:本申请公开了一种多Kubernetes集群的端点资源的更新方法、更新装置及电子设备,其中,所述更新方法包括:监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值。
主权利要求:
1.一种多Kubernetes集群的端点资源的更新方法,其特征在于,包括:监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;
根据所述变更事件信息,对共享内存中存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括集群标识信息和地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值;
所述根据所述变更事件信息,对共享内存中存储的所述服务对应的端点资源进行更新,包括:获取所述变更事件信息,其中,所述变更事件信息包括:变更事件类型以及所述服务对应的命名空间服务名;
根据所述变更事件信息,生成待处理的事件消息,并将所述事件消息存储到限速消息队列,其中,所述事件消息中包括:变更事件类型、变更事件发生的目标Kubernetes集群的标识信息、以及所述服务对应的命名空间服务名;
从所述限速消息队列中获取待处理的事件消息,并根据所述事件消息,对存储的所述服务对应的端点资源进行更新,所述服务对应的端点资源按照预定格式存储在共享内存中,所述预定格式用于建立所述服务对应的命名空间服务名与所述服务对应的端点资源之间的对应关系,所述命名空间服务名用于从所述共享内存中确定对应的服务。
2.根据权利要求1所述的更新方法,其特征在于,在所述变更事件信息的变更事件类型为增加端点资源的情况下,所述变更事件信息还包括待增加的目标端点资源对应的地址信息,所述事件消息还包括待增加的所述目标端点资源对应的地址信息;
所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:
按照预定格式生成待增加的所述目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;
在存储的所述服务对应的端点资源中增加所述目标端点资源。
3.根据权利要求1所述的更新方法,其特征在于,在所述变更事件信息的变更事件类型为修改端点资源的情况下,所述变更事件信息还包括待修改的目标端点资源对应的地址信息,所述事件消息还包括待修改的所述目标端点资源对应的地址信息;
所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:
按照预定格式生成待修改的所述目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;
通过所述目标端点资源替换初始端点资源,其中,所述初始端点资源为存储的所述服务对应的端点资源中与所述目标Kubernetes集群的标识信息对应的端点资源。
4.根据权利要求1所述的更新方法,其特征在于,所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:在所述变更事件信息的变更事件类型为删除端点资源的情况下,根据所述命名空间服务名和所述目标Kubernetes集群的标识信息,查找待删除的目标端点资源;
在存储的所述服务对应的端点资源中删除所述目标端点资源。
5.根据权利要求1所述的更新方法,其特征在于,在所述根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新之后,还包括:接收外部输入的所述服务对应的命名空间服务名、PodIP地址和与所述PodIP地址对应的目标权重值;
根据所述命名空间服务名和所述PodIP地址,确定所述服务对应的端点资源中与所述PodIP地址对应的初始权重值;
将所述初始权重值修改为所述目标权重值。
6.一种多Kubernetes集群的端点资源的更新装置,其特征在于,包括:监听模块,用于监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;
更新模块,用于根据所述变更事件信息,对共享内存中存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括集群标识信息和地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值;
所述更新模块根据所述变更事件信息,对共享内存中存储的所述服务对应的端点资源进行更新,包括:获取所述变更事件信息,其中,所述变更事件信息包括:变更事件类型以及所述服务对应的命名空间服务名;
根据所述变更事件信息,生成待处理的事件消息,并将所述事件消息存储到限速消息队列,其中,所述事件消息中包括:变更事件类型、变更事件发生的目标Kubernetes集群的标识信息、以及所述服务对应的命名空间服务名;
从所述限速消息队列中获取待处理的事件消息,并根据所述事件消息,对存储的所述服务对应的端点资源进行更新,所述服务对应的端点资源按照预定格式存储在共享内存中,所述预定格式用于建立所述服务对应的命名空间服务名与所述服务对应的端点资源之间的对应关系,所述命名空间服务名用于从所述共享内存中确定对应的服务。
7.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1‑5任一项所述的多Kubernetes集群的端点资源的更新方法的步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1‑5任一项所述的多Kubernetes集群的端点资源的更新方法的步骤。 说明书 : 多Kubernetes集群的端点资源的更新方法、更新装置及电子
设备技术领域[0001] 本申请涉及集群信息领域,尤其涉及一种多Kubernetes集群的端点资源的更新方法、更新装置及电子设备。背景技术[0002] 在Kubernetes(简称K8s)集群中,Pod是所有业务类型的基础,每一个Pod都会被指派一个唯一的网络之间互连的协议(InternetProtocol,IP)地址。[0003] 在多Kubernetes集群的环境下,业务服务往往需要在多个集群中进行服务(Service)的部署,并且,需要在每个Kubernetes集群上面部署一套Ingress用于实现用域名的方式访问K8s内部应用,但是,在此种部署方式下,通过单Kubernetes集群上的服务只能获取这个集群上服务对应的后端PodIP地址,存在无法实时感知多集群对应的后端PodIP地址,导致数据实时性较差的问题。发明内容[0004] 本申请公开一种多Kubernetes集群的端点资源的更新方法、更新装置及电子设备,以解决无法实时感知多集群对应的后端PodIP地址,导致数据实时性较差的问题。[0005] 为了解决上述问题,本申请采用下述技术方案:[0006] 第一方面,本申请实施例提供了一种多Kubernetes集群的端点资源的更新方法,包括:监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值。[0007] 第二方面,本申请实施例提供了一种多Kubernetes集群的端点资源的更新装置,包括:监听模块,用于监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;更新模块,用于根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值。[0008] 第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。[0009] 第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。[0010] 第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。[0011] 第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。[0012] 本申请实施例提供一种多Kubernetes集群的端点资源的更新方法,通过监听指示多Kubernetes集群中服务对应的服务端点的端点资源发生变更的变更事件信息,根据变更事件信息,对存储的服务对应的端点资源进行更新,其中,端点资源包括PodIP地址和PodIP地址对应的权重值,能够实时感知多集群对应的后端PodIP地址,进而保证数据的实时性。附图说明[0013] 图1为本申请实施例公开的一种多Kubernetes集群的端点资源的更新方法的流程示意图;[0014] 图2为本申请实施例公开的一种多Kubernetes集群的端点资源的更新方法的流程图;[0015] 图3为本申请实施例公开的一种共享内存存储数据结构体的示意图;[0016] 图4为本申请实施例公开的一种多Kubernetes集群的端点资源的更新方法的流程图;[0017] 图5为本申请实施例公开的一种多Kubernetes集群的端点资源的更新装置的结构示意图;[0018] 图6为本申请实施例公开的电子设备的一种结构示意图。具体实施方式[0019] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。[0020] 本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。[0021] 下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的多Kubernetes集群的端点资源的更新方法、更新装置及电子设备进行详细地说明。[0022] 本申请实施例提供了一种多Kubernetes集群的端点资源的更新方法,图1为本申请实施例公开的一种多Kubernetes集群的端点资源的更新方法的流程示意图。如图1所示,该方法包括如下步骤。[0023] S120、监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更。[0024] 在本申请中,PodIP感知服务监听多Kubernetes集群中服务对应的服务端点的变更事件信息,该变更事件信息可以包括变更事件类型和服务对应的命名空间服务名。变更事件类型可以包括增加端点资源、修改端点资源和删除端点资源,在变更事件类型为增加端点资源或修改端点资源的情况下,该变更事件信息还可以包括待变更的目标端点资源对应的地址信息。[0025] 在一种实现方式中,多Kubernetes集群中服务对应的服务端点的变更事件信息可以为由多Kubernetes集群中目标Kubernetes集群发送的,PodIP感知服务根据监听到的多Kubernetes集群中目标Kubernetes集群发送的服务对应的服务端点的变更事件信息,指示对服务端点的端点资源进行变更。[0026] 需要说明的是,目标Kubernetes集群可以为多Kubernetes集群中的一个Kubernetes集群,也可以为多Kubernetes集群中的几个Kubernetes集群,本申请对此不作具体限制。[0027] 在一种实现方式中,可以通过如图2所示的多集群事件收集器,主要使用KubernetesInformer机制,监听多Kubernetes集群中服务对应的服务端点(Endpoint)的变更事件信息。[0028] S140、根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值。[0029] 也就是说,PodIP感知服务根据监听到的多Kubernetes集群中服务对应的服务端点的变更事件信息,对存储的服务对应的端点资源进行变更并存储到共享内存存储。示例性的,可以根据变更事件信息,对服务对应的端点资源中的PodIP地址进行变更。[0030] 本申请实施例提供一种多Kubernetes集群的端点资源的更新方法,通过监听指示多Kubernetes集群中服务对应的服务端点的端点资源发生变更的变更事件信息,根据变更事件信息,对存储的服务对应的端点资源进行更新,其中,端点资源包括PodIP地址和PodIP地址对应的权重值,能够实时感知多集群对应的后端PodIP地址,进而保证数据的实时性。[0031] 在本申请实施例中,所述根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,可以包括:获取所述变更事件信息,其中,所述变更事件信息包括:变更事件类型以及所述服务对应的命名空间服务名;根据所述变更事件信息,生成待处理的事件消息,并将所述事件消息存储到限速消息队列,其中,所述事件消息中包括:变更事件类型、变更事件发生的目标Kubernetes集群的标识信息、以及所述服务对应的命名空间服务名;从所述限速消息队列中获取待处理的事件消息,并根据所述事件消息,对存储的所述服务对应的端点资源进行更新,所述服务对应的端点资源按照预定格式存储在共享内存中,所述预定格式用于建立所述服务对应的命名空间服务名与所述服务对应的端点资源之间的对应关系。[0032] 在监听到多Kubernetes集群中服务对应的服务端点的变更事件信息的情况下,可以获取包括变更事件类型和服务对应的命名空间服务名的变更事件信息,由于变更事件信息中不包括变更事件发生的目标Kubernetes集群的标识信息,因此,需要获取目标Kubernetes集群的标识信息,根据变更事件信息和目标Kubernetes集群的标识信息,生成待处理的包括变更事件类型、变更事件发生的目标Kubernetes集群的标识信息、以及服务对应的命名空间服务名的事件消息,并将事件消息存储到如图2所示的限速消息队列,通过限速消息队列对事件消息进行一定的限速,然后由如图2所示的协调器从限速消息队列中获取待处理的事件消息,并根据事件消息,对存储的服务对应的端点资源进行更新,并存储至共享内存中。本申请通过将事件消息存储到限速消息队列,由限速消息队列对事件消息进行一定的限速,能够保护协调器,避免协调器频繁协调资源。[0033] 在本申请中,目标Kubernetes集群的标识信息可以包括目标Kubernetes集群的集群名和目标Kubernetes集群的集群ID信息。[0034] 在本申请实施例中,在所述变更事件信息的变更事件类型为增加端点资源的情况下,所述变更事件信息还可以包括待增加的目标端点资源对应的地址信息,所述事件消息还可以包括待增加的所述目标端点资源对应的地址信息;所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,可以包括:按照预定格式生成待增加的所述目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;在存储的所述服务对应的端点资源中增加所述目标端点资源。[0035] 在多Kubernetes集群中服务对应的服务端点的变更事件信息的变更事件类型为增加端点资源的情况下,获取的变更事件信息还包括待增加的目标端点资源对应的地址信息,对应的,生成的待处理的事件消息还包括待增加的目标端点资源对应的地址信息,按照预定格式生成待增加的目标端点资源,然后根据服务对应的命名空间服务名从共享内存存储中确定服务,在存储的服务对应的端点资源中增加目标端点资源,其中,目标端点资源包括目标Kubernetes集群的标识信息和目标端点资源对应的地址信息,目标Kubernetes集群的标识信息可以包括目标Kubernetes集群的集群名(clusterName)和目标Kubernetes集群的集群ID信息(clusterId),目标端点资源对应的地址信息(addresses)可以包括PodIP地址、服务的端口信息和PodIP地址对应的权重值。示例性的,预定格式可以为:{集群ID,集群名,地址信息(PodIP,端口(port),PodIP对应的权重值(weight))}。[0036] 示例性的,原本服务对应的端点资源中不包括Kubernetes集群A(即,目标Kubernetes集群)的端点资源,在监听到多Kubernetes集群中服务对应的服务端点的变更事件信息,且该变更事件信息为由Kubernetes集群A发送的变更事件类型为增加端点资源的情况下,变更事件信息和事件消息分别还包括待增加的目标端点资源对应的地址信息("ip":"10.210.10.163","port":8080,"weight":100),在Kubernetes集群A的标识信息为:"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA"的情况下,按照预定格式生成待增加的目标端点资源,该待增加的目标端点资源可以为{"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA","addresses":[{"ip":"10.210.10.163","port":8080,"weight":100}]},然后根据服务对应的命名空间服务名从共享内存存储中确定服务,在存储的服务对应的端点资源中增加目标端点资源。[0037] 在处理增加端点资源的事件时,需要使用线程安全字典这种数据结构,确保数据存储的时候线程安全,其中线程安全字典的键为:“命名空间服务名”,值为:一个以集群(Clusters)(如图3所示的003)为数据结构的列表。[0038] 在本申请实施例中,在所述变更事件信息的变更事件类型为修改端点资源的情况下,所述变更事件信息还包括待修改的目标端点资源对应的地址信息,所述事件消息还包括待修改的所述目标端点资源对应的地址信息;所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,可以包括:按照预定格式生成待修改的目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;通过所述目标端点资源替换初始端点资源,其中,所述初始端点资源为存储的所述服务对应的端点资源中与所述目标Kubernetes集群的标识信息对应的端点资源。[0039] 在多Kubernetes集群中服务对应的服务端点的变更事件信息的变更事件类型为修改端点资源的情况下,获取的变更事件信息还包括待修改的目标端点资源对应的地址信息,对应的,生成的待处理的事件消息还包括待修改的目标端点资源对应的地址信息,按照预定格式生成待修改的目标端点资源,然后根据服务对应的命名空间服务名从共享内存存储中确定服务,循环里面的集群(Clusters)(如图3所示的003),如果集群标识信息与本次变更事件发生的集群的集群标识相同,则通过目标端点资源替换存储的服务对应的端点资源中与目标Kubernetes集群的标识信息对应的端点资源,其中,目标端点资源包括目标Kubernetes集群的标识信息和目标端点资源对应的地址信息,目标Kubernetes集群的标识信息可以包括目标Kubernetes集群的集群名(clusterName)和目标Kubernetes集群的集群ID信息(clusterId),目标端点资源对应的地址信息(addresses)可以包括PodIP地址、服务的端口信息和PodIP地址对应的权重值。示例性的,预定格式可以为:{集群ID,集群名,地址信息(PodIP,端口(port),PodIP对应的权重值(weight))}。[0040] 示例性的,原本服务对应的端点资源中Kubernetes集群A(即,目标Kubernetes集群)的端点资源中的PodIP为10.210.10.164,Kubernetes集群A发送的变更事件信息为将Kubernetes集群A的端点资源中的PodIP修改为10.210.10.163,则变更事件信息和事件消息分别还包括待修改的目标端点资源对应的地址信息("ip":"10.210.10.163","port":8080,"weight":100),在Kubernetes集群A的标识信息为:"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA"的情况下,按照预定格式生成待修改的目标端点资源,该待修改的目标端点资源可以为{"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA","addresses":[{"ip":"10.210.10.163","port":8080,"weight":100}]},然后根据服务对应的命名空间服务名确定服务,通过上述生成的待修改的目标端点资源替换服务对应的端点资源中与Kubernetes集群A的标识信息对应的初始端点资源{"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA","addresses":[{"ip":"10.210.10.164","port":8080,"weight":100}]}。[0041] 在本申请实施例中,所述根据所述事件消息,对存储的所述服务对应的端点资源进行更新,可以包括:在所述变更事件信息的变更事件类型为删除端点资源的情况下,根据所述命名空间服务名和所述目标Kubernetes集群的标识信息,查找待删除的目标端点资源;在存储的所述服务对应的端点资源中删除所述目标端点资源,达到删除共享内存存储数据的目的。[0042] 示例性的,原本的存储的服务对应的端点资源中包括Kubernetes集群A的端点资源和Kubernetes集群B的端点资源,在监听到Kubernetes集群B发送的变更事件信息,且变更事件信息的事件类型为删除Kubernetes集群B的端点资源的情况下,根据命名空间服务名从共享内存存储中确定服务,根据Kubernetes集群B的标识信息在服务中确定Kubernetes集群B的端点资源,在存储的服务对应的端点资源中删除Kubernetes集群B的端点资源。[0043] 在本申请中,如图2所示,共享内存存储中存储有协调器协调处理后的数据,为了保证数据的写入和读取速度,采用内存存储的方式。同时共享内存存储作为Web服务的数据源,提供给Web服务相关的数据源。共享内存存储数据结构体如图3所示,此数据结构使用基于字典的数据结构,使用字典这种数据结构的目的就是可以快速查找、删除修改字典中的值的目的。[0044] 并且,如图2所示,Web服务提供超文本传输协议(HyperTextTransferProtocol,HTTP)应用程序编程接口(ApplicationProgrammingInterface,API),通过HTTPAPI接口和HTTP查询参数(命名空间服务名),从共享内存存储中获取多集群服务对应的后端PodIP地址列表。由于共享存储是存储在内存中,所以Web服务器的响应速度会非常的快。[0045] 从共享内存存储中获取的数据格式可以为YAML数据格式,在共享内存存储中存储Kubernetes集群A的端点资源和Kubernetes集群B的端点资源的情况下,示例性的,获取到的数据可以为:[{"clusterId":"c_25626371485k","clusterName":"KubernetesClusterA","addresses":[{"ip":"10.210.10.163","port":8080,"weight":100//PodIP},{"ip":"10.210.10.164","port":8080,"weight":100}]},{"clusterId":"c_27169024643I","clusterName":"KubernetesClusterB","addresses":[{"ip":"10.210.170.100","port":8080,"weight":100}]}]。[0046] 在一种实现方式中,监听到的多Kubernetes集群中服务对应的服务端点的变更事件信息中包括事件类型、服务对应的命名空间服务名和PodIP地址,不包括PodIP地址对应的权重值,则由协调器给予初始权重值,示例性的,初始权重值可以为100。在所述根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新之后,还可以包括:接收外部输入的所述服务对应的命名空间服务名、PodIP地址和与所述PodIP地址对应的目标权重值;根据所述命名空间服务名和所述PodIP地址,确定所述服务对应的端点资源中与所述PodIP地址对应的初始权重值;将所述初始权重值修改为所述目标权重值。也就是说,用户可以对PodIP地址对应的权重值进行修改,示例性的,接收外部输入的与服务对应的命名空间服务名、PodIP地址10.210.10.163和与PodIP地址对应的目标权重值M,Web服务根据命名空间服务名和PodIP地址10.210.10.163,确定与PodIP地址对应的初始权重值100,然后将100修改为M。[0047] 在本申请中,如图4所示,多Kubernetes集群服务可以直接部署一个中心级别的七层反向代理,七层反向代理可以通过调用HTTPAPI接口,获取到后端PodIP信息,就可以分发流量到后端Pod上面。并且,由于本申请中多Kubernetes集群中服务对应的服务端点的端点资源包括多个Kubernetes集群的端点资源,且服务对应的端点资源实时更新,因此,能够实现流量跨集群调度。[0048] 并且,通过Web服务,可以直接修改共享内存存储中的数据,对后端PodIP进行权重的修改,通过权重的修改,七层反向代理服务可以进行业务流量的多集群切换、多集群流量的金丝雀发布、多集群流量的灰度发布等操作。[0049] 本申请实施例提供一种多Kubernetes集群的端点资源的更新方法,通过监听多Kubernetes集群中服务对应的服务端点的变更事件信息,获取变更事件信息,根据变更事件信息,生成待处理的事件消息,并将事件消息存储到限速消息队列,其中,事件消息中包括变更事件发生的目标Kubernetes集群的标识信息、服务对应的命名空间服务名以及变更事件类型,协调器从限速消息队列中获取待处理的事件消息,协调器根据事件消息,对存储的服务对应的端点资源进行处理更新,其中,对于不同类型的事件消息,可以按照不同方式进行处理,具体处理过程可以参照上述针对不同变更事件类型的的流程进行,在变更事件类型为删除端点资源的情况下,根据命名空间服务名和目标Kubernetes集群的标识信息,查找待删除的目标端点资源,在存储的服务对应的端点资源中删除目标端点资源;在变更事件类型为增加端点资源的情况下,事件消息中还包括待增加的目标端点资源对应的地址信息,按照预定格式生成待增加的目标端点资源,其中,目标端点资源包括:目标Kubernetes集群的标识信息和目标端点资源对应的地址信息,在存储的服务对应的端点资源中增加目标端点资源;在变更事件类型为修改端点资源的情况下,事件消息中还包括待修改的目标端点资源对应的地址信息,按照预定格式生成待修改的目标端点资源,其中,目标端点资源包括:目标Kubernetes集群的标识信息和目标端点资源对应的地址信息,通过目标端点资源替换初始端点资源,其中,初始端点资源为存储的服务对应的端点资源中与目标Kubernetes集群的标识信息对应的端点资源。[0050] 本申请实施例提供的多Kubernetes集群的端点资源的更新方法,执行主体可以为多Kubernetes集群的端点资源的更新装置。本申请实施例中以多Kubernetes集群的端点资源的更新装置执行多Kubernetes集群的端点资源的更新方法为例,说明本申请实施例提供的多Kubernetes集群的端点资源的更新装置。[0051] 图5为本申请实施例公开的一种多Kubernetes集群的端点资源的更新装置的结构示意图。如图5所示,多Kubernetes集群的端点资源的更新装置500包括:监听模块510和更新模块520。[0052] 在本申请中,监听模块510,用于监听多Kubernetes集群中服务对应的服务端点的变更事件信息,所述变更事件信息指示服务对应的服务端点的端点资源发生变更;更新模块520,用于根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,其中,所述端点资源包括地址信息,所述地址信息包括PodIP地址和所述PodIP地址对应的权重值。[0053] 在一种实现方式中,所述更新模块520根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新,包括:获取所述变更事件信息,其中,所述变更事件信息包括:变更事件类型以及所述服务对应的命名空间服务名;根据所述变更事件信息,生成待处理的事件消息,并将所述事件消息存储到限速消息队列,其中,所述事件消息中包括:变更事件类型、变更事件发生的目标Kubernetes集群的标识信息、以及所述服务对应的命名空间服务名;从所述限速消息队列中获取待处理的事件消息,并根据所述事件消息,对存储的所述服务对应的端点资源进行更新,所述服务对应的端点资源按照预定格式存储在共享内存中,所述预定格式用于建立所述服务对应的命名空间服务名与所述服务对应的端点资源之间的对应关系。[0054] 在一种实现方式中,在所述变更事件信息的变更事件类型为增加端点资源的情况下,所述变更事件信息还包括待增加的目标端点资源对应的地址信息,所述事件消息还包括待增加的所述目标端点资源对应的地址信息;所述更新模块520根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:按照预定格式生成待增加的所述目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;在存储的所述服务对应的端点资源中增加所述目标端点资源。[0055] 在一种实现方式中,在所述变更事件信息的变更事件类型为修改端点资源的情况下,所述变更事件信息还包括待修改的目标端点资源对应的地址信息,所述事件消息还包括待修改的所述目标端点资源对应的地址信息;所述更新模块520根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:按照预定格式生成待修改的所述目标端点资源,其中,所述目标端点资源包括:所述目标Kubernetes集群的标识信息和所述目标端点资源对应的地址信息;通过所述目标端点资源替换初始端点资源,其中,所述初始端点资源为存储的所述服务对应的端点资源中与所述目标Kubernetes集群的标识信息对应的端点资源。[0056] 在一种实现方式中,所述更新模块520根据所述事件消息,对存储的所述服务对应的端点资源进行更新,包括:在所述变更事件信息的变更事件类型为删除端点资源的情况下,根据所述命名空间服务名和所述目标Kubernetes集群的标识信息,查找待删除的目标端点资源;在存储的所述服务对应的端点资源中删除所述目标端点资源。[0057] 在一种实现方式中,所述更新装置还包括:接收模块,用于在所述根据所述变更事件信息,对存储的所述服务对应的端点资源进行更新之后,接收外部输入的所述服务对应的命名空间服务名、PodIP地址和与所述PodIP地址对应的目标权重值;确定模块,用于根据所述命名空间服务名和所述PodIP地址,确定所述服务对应的端点资源中与所述PodIP地址对应的初始权重值;修改模块,用于将所述初始权重值修改为所述目标权重值。[0058] 本申请实施例中的多Kubernetes集群的端点资源的更新装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。[0059] 本申请实施例提供的多Kubernetes集群的端点资源的更新装置能够实现多Kubernetes集群的端点资源的更新方法实施例实现的各个过程,为避免重复,这里不再赘述。[0060] 可选地,如图6所示,本申请实施例还提供一种电子设备600,包括处理器601和存储器602,存储器602上存储有可在所述处理器601上运行的程序或指令,该程序或指令被处理器601执行时实现上述多Kubernetes集群的端点资源的更新方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。[0061] 需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。[0062] 本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述多Kubernetes集群的端点资源的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。[0063] 其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。[0064] 本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述多Kubernetes集群的端点资源的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。[0065] 应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。[0066] 本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述多Kubernetes集群的端点资源的更新方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。[0067] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。[0068] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。[0069] 上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
专利地区:北京
专利申请日期:2022-08-12
专利公开日期:2024-06-18
专利公告号:CN115361440B