CN115712545B - 一种实现集群的服务拓扑感知的方法、装置、设备及介质 - Google Patents

一种实现集群的服务拓扑感知的方法、装置、设备及介质 Download PDF

Info

Publication number
CN115712545B
CN115712545B CN202310023589.6A CN202310023589A CN115712545B CN 115712545 B CN115712545 B CN 115712545B CN 202310023589 A CN202310023589 A CN 202310023589A CN 115712545 B CN115712545 B CN 115712545B
Authority
CN
China
Prior art keywords
node
cluster
service
container
label
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
CN202310023589.6A
Other languages
English (en)
Other versions
CN115712545A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310023589.6A priority Critical patent/CN115712545B/zh
Publication of CN115712545A publication Critical patent/CN115712545A/zh
Application granted granted Critical
Publication of CN115712545B publication Critical patent/CN115712545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种实现集群的服务拓扑感知的方法、装置、设备及介质,方法包括:为集群中的每个节点添加预设标签;在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中;将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。通过使用本发明的方案,能够在数据包进入内核协议栈之前通过读取Map完成服务对应的后端容器的选择,提高了网络转发效率。

Description

一种实现集群的服务拓扑感知的方法、装置、设备及介质
技术领域
本发明涉及计算机领域,并且更具体地涉及一种实现集群的服务拓扑感知的方法、装置、设备及可读介质。
背景技术
当前容器云平台大部分基于kubernetes(容器云平台使用量最多的开源容器编排架构,能够实现容器的自动调度、扩展、故障恢复等)框架,面向用户提供以应用管理为核心的功能体系。通过k8s为某一具体业务创建一组Pod(kubernetes调度的最小管理单元,由1个或多个容器组成,这些容器共享进程、网络等命名空间),并通过service提供对外服务。Service(服务,k8s中的一种资源,通过service可以访问一组特定的Pod,并且提供了负载均衡功能)负载均衡主要是通过节点上的kube-proxy进程从API Server获取service对应的Pod,再通过iptables(Linux操作***内核中的信息包过滤***,可以根据特定的匹配条件实现数据包的接收、转发、删除等操作)或ipvs(运行于Linux内核网络协议栈的第四层,提供负载均衡能力)规则来实现。当客户端通过service访问具体业务时,访问流量有可能被路由至service对应的任一后端pod,因此虽然 service 转发做了负载均衡,但如果转发到的Pod距离比较远,流量转发过去网络时延就相对比较高,相应的就会影响网络性能,在某些情况下甚至还可能会付出额外的流量费用,所以需要一种方案能实现 service 就近转发,即根据访问发起点的位置确定负载均衡后的Pod,此方法被称为service topology(服务拓扑感知)。在原生k8s的service中,可以通过指定topologyKeys标签实现拓扑感知。当创建含有topologyKeys标签的service时,kube-proxy会根据筛选条件选出一部分符合当前拓扑域的Pod生成iptables或ipvs规则,将后端设置为符合topologykey标签要求的k8s节点上的pod,从而实现就近访问。但是iptables或ipvs规则要经过冗长的linux操作***内核网络协议栈,其效率相对较低,会造成一定的网络延迟,无法全部满足高带宽、低延迟的应用访问需求。
发明内容
有鉴于此,本发明实施例的目的在于提出一种实现集群的服务拓扑感知的方法、装置、设备及可读介质,通过使用本发明的技术方案,能够在数据包进入内核协议栈之前通过读取Map完成服务对应的后端容器的选择,提高了网络转发效率。
基于上述目的,本发明的实施例的一个方面提供了一种实现集群的服务拓扑感知的方法,包括以下步骤:
为集群中的每个节点添加预设标签;
在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;
响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中;
将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。
根据本发明的一个实施例,响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中包括:
响应于监听服务的程序监听到集群创建或更新服务,解析服务对应的后端容器的具体信息,并获取容器所在节点的信息;
将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中。
根据本发明的一个实施例,标签信息包括节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
根据本发明的一个实施例,将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中包括:
将容器所在节点的节点名称的标签与当前节点的节点名称的标签进行比较;
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签相同,将容器存储到Map中。
根据本发明的一个实施例,还包括:
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签不相同,将容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签进行比较;
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签相同,将容器存储到Map中。
根据本发明的一个实施例,还包括:
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签不相同,将容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签进行比较;
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签相同,将容器存储到Map中。
根据本发明的一个实施例,还包括:
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签不相同,将所有容器存储到Map中以保证服务的可用性。
根据本发明的一个实施例,基于比较结果将容器存储到Map中包括:
将容器存储到Map的键值对中的值中。
根据本发明的一个实施例,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的socket层。
根据本发明的一个实施例,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群内节点或容器通过服务发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
根据本发明的一个实施例,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的XDP位置。
根据本发明的一个实施例,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群外部客户通过nodeprot发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
根据本发明的一个实施例,为集群中的每个节点添加预设标签包括:
为集群中每个节点添加节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
根据本发明的一个实施例,在集群中创建监听服务的程序包括:
在集群中编写API服务监听程序用于监听集群中的服务。
根据本发明的一个实施例,在集群中创建ebpf程序的Map包括:
在集群中创建ebpf程序的Map,其中Map的键为服务的IP和端口,值为服务对应的后端容器的信息。
根据本发明的一个实施例,还包括:
响应于监听服务的程序监听到集群删除服务,删除对应Map中服务的信息。
根据本发明的一个实施例,集群为k8s集群。
本发明的实施例的另一个方面,还提供了一种实现集群的服务拓扑感知的装置,装置包括:
添加模块,添加模块配置成为集群中的每个节点添加预设标签;
创建模块,创建模块配置为在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;
存储模块,存储模块配置为响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中;
处理模块,处理模块配置为将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。
本发明的实施例的另一个方面,还提供了一种计算机设备,该计算机设备包括:
至少一个处理器;以及
存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行时实现上述任意一项方法的步骤。
本发明的实施例的另一个方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述任意一项方法的步骤。
本发明具有以下有益技术效果:本发明实施例提供的实现集群的服务拓扑感知的方法,通过为集群中的每个节点添加预设标签;在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中;将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器的技术方案,能够在数据包进入内核协议栈之前通过读取Map完成服务对应的后端容器的选择,提高了网络转发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明一个实施例的实现集群的服务拓扑感知的方法的示意性流程图;
图2为根据本发明一个实施例的实现集群的服务拓扑感知的装置的示意图;
图3为根据本发明一个实施例的计算机设备的示意图;
图4为根据本发明一个实施例的计算机可读存储介质的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
基于上述目的,本发明的实施例的第一个方面,提出了一种实现集群的服务拓扑感知的方法的一个实施例。图1示出的是该方法的示意性流程图。
如图1中所示,该方法可以包括以下步骤:
S1为集群中的每个节点添加预设标签。在创建k8s集群时,可以为集群内的节点指定特定标签,后续创建k8s资源时可以根据节点的标签进行筛选。在节点加入k8s集群时,为每个节点都添加上对应的三个标签:hostName、zone、region,三个标签的范围依次扩大,其中hostName为节点名称,zone为节点所处的可用区,region为节点所处的域。如某节点的标签示例如下:
labels:
                 kubernetes.io/hostname: Node1
                 topology.kubernetes.io/zone: zone1
                 topology.kubernetes.io/region: region1。
S2在集群中创建监听服务的程序并在集群中创建ebpf(一种可以在 Linux 内核中运行的由用户编写的程序,其本质上是一个运行在内核态的虚拟机,使得用户可以在内核中加载运行自定义程序的技术,并且用户和内核可以按需交互数据,随时管理内核的行为)程序的Map(映射存储)。在集群中编写程序监听API Server并创建ebpf Map,其中Map的键为服务的IP和端口,值为该服务对应的后端容器信息。
S3响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中。当监听到有服务创建或更新时,解析其对应的后端容器的具体信息并提取出容器所在节点信息。根据服务的拓扑感知选项将容器所在节点标签信息与当前节点标签信息进行比较,如果标签信息相同,则将对应的容器加入到Map中。首先会比较当前节点与容器所在节点的名称是否相同,如果名称相同,则将容器加入Map,如果节点的名称不相同,则继续进行后续可用区和所处域的比较,若所有容器的所有标签信息都跟当前节点不相同,则不再进行筛选,将所有容器全部加入Map以保证服务的可用性,即此时就近访问原则失效。经过上述筛选,Map中存储的容器信息即为根据拓扑感知选项筛选后的符合要求的容器。例如某服务的拓扑选项部分如下所示:
               topologyKeys:
                    - "kubernetes.io/hostname"
               - "topology.kubernetes.io/zone"
               - "topology.kubernetes.io/region"
                    - "*"。
S4将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。编写ebpf程序读取上述Map,将ebpf程序挂载至集群内节点内核的socket层和XDP位置。当集群内节点或容器通过服务发起东西向访问时,流量首先进入socket层,在此处根据数据包的目的地址读取Map,获取到的后端容器即为就近访问的容器。当集群外部客户通过nodeprot发起南北向访问时,外部流量到达网卡后首先到达XDP挂载点,跟socket处的处理逻辑类似,同样根据数据包的目的地址读取Map,从而获取对应的后端容器地址。上述两种情况下都是在数据包进入内核网络协议栈之前完成后端容器选择,网络转发效率较高。
通过本发明的技术方案,能够在数据包进入内核协议栈之前通过读取Map完成服务对应的后端容器的选择,极大提高了网络转发效率。
在本发明的一个优选实施例中,响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中包括:
响应于监听服务的程序监听到集群创建或更新服务,解析服务对应的后端容器的具体信息,并获取容器所在节点的信息;
将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中。集群中的服务发生变化时,获取服务对应的后端容器的信息以及容器所在节点的信息,然后将容器所在节点的标签信息分别与当前节点的标签信息进行比较,当标签信息中至少有一个相同时,将容器存储到Map中。
在本发明的一个优选实施例中,标签信息包括节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
在本发明的一个优选实施例中,将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中包括:
将容器所在节点的节点名称的标签与当前节点的节点名称的标签进行比较;
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签相同,将容器存储到Map中。比较时,首先比较节点名称,如果节点名称的标签相同,则将容器存储到Map中,如果不同,则继续比较其他标签。
在本发明的一个优选实施例中,还包括:
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签不相同,将容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签进行比较;
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签相同,将容器存储到Map中。如果节点名称的标签不同,则比较节点所处的可用区的标签,如果节点所处的可用区的标签相同,则将容器存储到Map中,如果不同,则继续比较其他标签。
在本发明的一个优选实施例中,还包括:
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签不相同,将容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签进行比较;
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签相同,将容器存储到Map中。如果节点所处的可用区的标签还不相同,则继续比较节点所处的域的标签,如果节点所处的域的标签相同则将容器存储到Map中,
在本发明的一个优选实施例中,还包括:
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签不相同,将所有容器存储到Map中以保证服务的可用性。如果节点所处的域的标签还是不相同,也就是所有的标签都不相同时,将所有Pod全部加入Map以保证服务的可用性,即此时就近访问原则失效。经过上述筛选,Map中存储的Pod信息即为根据拓扑感知选项筛选后的符合要求的Pod。
在本发明的一个优选实施例中,基于比较结果将容器存储到Map中包括:
将容器存储到Map的键值对中的值中。即将容器存储到key-value中的value中。
在本发明的一个优选实施例中,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的socket层。
在本发明的一个优选实施例中,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群内节点或容器通过服务发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。当集群内节点或Pod通过service发起东西向访问时,流量首先进入socket层,在此处根据数据包的目的地址读取Map,获取到的后端Pod即为就近访问的Pod。
在本发明的一个优选实施例中,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的XDP位置。
在本发明的一个优选实施例中,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群外部客户通过nodeprot发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。当集群外部客户通过nodeprot发起南北向访问时,外部流量到达网卡后首先到达XDP挂载点,根据数据包的目的地址读取Map,从而获取对应的后端Pod地址。
在本发明的一个优选实施例中,为集群中的每个节点添加预设标签包括:
为集群中每个节点添加节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
在本发明的一个优选实施例中,在集群中创建监听服务的程序包括:
在集群中编写API服务监听程序用于监听集群中的服务。
在本发明的一个优选实施例中,在集群中创建ebpf程序的Map包括:
在集群中创建ebpf程序的Map,其中Map的键为服务的IP和端口,值为服务对应的后端容器的信息。
在本发明的一个优选实施例中,还包括:
响应于监听服务的程序监听到集群删除服务,删除对应Map中服务的信息。
在本发明的一个优选实施例中,集群为k8s集群。
通过本发明的技术方案,能够在数据包进入内核协议栈之前通过读取Map完成服务对应的后端容器的选择,提高了网络转发效率。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
此外,根据本发明实施例公开的方法还可以被实现为由CPU 执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU 执行时,执行本发明实施例公开的方法中限定的上述功能。
基于上述目的,本发明的实施例的第二个方面,提出了一种实现集群的服务拓扑感知的装置,如图2所示,装置200包括:
添加模块,添加模块配置成为集群中的每个节点添加预设标签;
创建模块,创建模块配置为在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;
存储模块,存储模块配置为响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中;
处理模块,处理模块配置为将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。
在本发明的一个优选实施例中,存储模块还配置为:
响应于监听服务的程序监听到集群创建或更新服务,解析服务对应的后端容器的具体信息,并获取容器所在节点的信息;
将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中。
在本发明的一个优选实施例中,标签信息包括节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
在本发明的一个优选实施例中,存储模块还配置为:
将容器所在节点的节点名称的标签与当前节点的节点名称的标签进行比较;
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签相同,将容器存储到Map中。
在本发明的一个优选实施例中,存储模块还配置为:
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签不相同,将容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签进行比较;
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签相同,将容器存储到Map中。
在本发明的一个优选实施例中,存储模块还配置为:
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签不相同,将容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签进行比较;
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签相同,将容器存储到Map中。
在本发明的一个优选实施例中,存储模块还配置为:
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签不相同,将所有容器存储到Map中以保证服务的可用性。
在本发明的一个优选实施例中,存储模块还配置为:
将容器存储到Map的键值对中的值中。
在本发明的一个优选实施例中,处理模块还配置为:
将ebpf程序挂载到集群内节点内核的socket层。
在本发明的一个优选实施例中,处理模块还配置为:
响应于集群内节点或容器通过服务发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
在本发明的一个优选实施例中,处理模块还配置为:
将ebpf程序挂载到集群内节点内核的XDP位置。
在本发明的一个优选实施例中,处理模块还配置为:
响应于集群外部客户通过nodeprot发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
在本发明的一个优选实施例中,添加模块还配置成:
为集群中每个节点添加节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
在本发明的一个优选实施例中,创建模块还配置为:
在集群中编写API服务监听程序用于监听集群中的服务。
在本发明的一个优选实施例中,创建模块还配置为:
在集群中创建ebpf程序的Map,其中Map的键为服务的IP和端口,值为服务对应的后端容器的信息。
在本发明的一个优选实施例中,还包括删除模块,删除模块配置为:
响应于监听服务的程序监听到集群删除服务,删除对应Map中服务的信息。
在本发明的一个优选实施例中,集群为k8s集群。
基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备。图3示出的是本发明提供的计算机设备的实施例的示意图。如图3所示,本发明实施例包括如下装置:至少一个处理器21;以及存储器22,存储器22存储有可在处理器上运行的计算机指令23,指令由处理器执行时实现上述任一项方法实施例中的步骤。
基于上述目的,本发明实施例的第四个方面,提出了一种计算机可读存储介质。图4示出的是本发明提供的计算机可读存储介质的实施例的示意图。如图4所示,计算机可读存储介质31存储有被处理器执行时执行上述任一项方法实施例中的步骤的计算机程序32。
此外,根据本发明实施例公开的方法还可以被实现为由处理器执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被处理器执行时,执行本发明实施例公开的方法中限定的上述功能。
此外,上述方法步骤以及***单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储介质实现。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
在一个或多个示例性设计中,功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (19)

1.一种实现集群的服务拓扑感知的方法,其特征在于,包括以下步骤:
为集群中的每个节点添加预设标签;
在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;
响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中,其中响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中包括:响应于监听服务的程序监听到集群创建或更新服务,解析服务对应的后端容器的具体信息,并获取容器所在节点的信息,将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中;
将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。
2.根据权利要求1所述的方法,其特征在于,标签信息包括节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
3.根据权利要求2所述的方法,其特征在于,将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中包括:
将容器所在节点的节点名称的标签与当前节点的节点名称的标签进行比较;
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签相同,将容器存储到Map中。
4.根据权利要求3所述的方法,其特征在于,还包括:
响应于容器所在节点的节点名称的标签与当前节点的节点名称的标签不相同,将容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签进行比较;
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签相同,将容器存储到Map中。
5.根据权利要求4所述的方法,其特征在于,还包括:
响应于容器所在节点的节点所处的可用区的标签与当前节点的节点所处的可用区的标签不相同,将容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签进行比较;
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签相同,将容器存储到Map中。
6.根据权利要求5所述的方法,其特征在于,还包括:
响应于容器所在节点的节点所处的域的标签与当前节点的节点所处的域的标签不相同,将所有容器存储到Map中以保证服务的可用性。
7.根据权利要求1所述的方法,其特征在于,基于比较结果将容器存储到Map中包括:
将容器存储到Map的键值对中的值中。
8.根据权利要求1所述的方法,其特征在于,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的socket层。
9.根据权利要求8所述的方法,其特征在于,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群内节点或容器通过服务发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
10.根据权利要求1所述的方法,其特征在于,将ebpf程序挂载到集群内节点内核的预设位置包括:
将ebpf程序挂载到集群内节点内核的XDP位置。
11.根据权利要求10所述的方法,其特征在于,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器包括:
响应于集群外部客户通过nodeprot发起访问,根据数据包的目的地址读取Map以获取到服务对应的后端容器。
12.根据权利要求1所述的方法,其特征在于,为集群中的每个节点添加预设标签包括:
为集群中每个节点添加节点名称的标签、节点所处的可用区的标签以及节点所处的域的标签。
13.根据权利要求1所述的方法,其特征在于,在集群中创建监听服务的程序包括:
在集群中编写API服务监听程序用于监听集群中的服务。
14.根据权利要求1所述的方法,其特征在于,在集群中创建ebpf程序的Map包括:
在集群中创建ebpf程序的Map,其中Map的键为服务的IP和端口,值为服务对应的后端容器的信息。
15.根据权利要求1所述的方法,其特征在于,还包括:
响应于监听服务的程序监听到集群删除服务,删除对应Map中服务的信息。
16.根据权利要求1所述的方法,其特征在于,所述集群为k8s集群。
17.一种实现集群的服务拓扑感知的装置,其特征在于,所述装置包括:
添加模块,所述添加模块配置成为集群中的每个节点添加预设标签;
创建模块,所述创建模块配置为在集群中创建监听服务的程序并在集群中创建ebpf程序的Map;
存储模块,所述存储模块配置为响应于监听服务的程序监听到集群服务发生变化,获取服务的详细信息并根据服务的拓扑感知规则筛选后端容器,并将容器存储到Map中,所述存储模块还配置为响应于监听服务的程序监听到集群创建或更新服务,解析服务对应的后端容器的具体信息,并获取容器所在节点的信息,将容器所在节点的标签信息与当前节点的标签信息进行比较,并基于比较结果将容器存储到Map中;
处理模块,所述处理模块配置为将ebpf程序挂载到集群内节点内核的预设位置,在访问集群的数据包进入内核网络协议栈前通过查询Map选择服务对应的后端容器。
18. 一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-16任意一项所述方法的步骤。
19.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-16任意一项所述方法的步骤。
CN202310023589.6A 2023-01-09 2023-01-09 一种实现集群的服务拓扑感知的方法、装置、设备及介质 Active CN115712545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310023589.6A CN115712545B (zh) 2023-01-09 2023-01-09 一种实现集群的服务拓扑感知的方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310023589.6A CN115712545B (zh) 2023-01-09 2023-01-09 一种实现集群的服务拓扑感知的方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN115712545A CN115712545A (zh) 2023-02-24
CN115712545B true CN115712545B (zh) 2023-04-18

Family

ID=85236181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310023589.6A Active CN115712545B (zh) 2023-01-09 2023-01-09 一种实现集群的服务拓扑感知的方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115712545B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10594798B2 (en) * 2016-06-16 2020-03-17 Veniam, Inc. Systems and methods for managing containers in a network of moving things
US10394784B2 (en) * 2016-12-22 2019-08-27 Intel Corporation Technologies for management of lookup tables
CN113949537B (zh) * 2021-09-26 2023-11-21 杭州谐云科技有限公司 一种基于eBPF的防火墙管理方法和***
CN113986459A (zh) * 2021-10-21 2022-01-28 浪潮电子信息产业股份有限公司 一种容器访问的控制方法、***、电子设备及存储介质
CN114039789B (zh) * 2021-11-17 2023-11-14 北京天融信网络安全技术有限公司 流量防护方法及电子设备、存储介质

Also Published As

Publication number Publication date
CN115712545A (zh) 2023-02-24

Similar Documents

Publication Publication Date Title
US10911549B2 (en) Proxy routing based on path headers
US20200153706A1 (en) Method and device for terminal device management based on right control
CN113301116A (zh) 微服务应用跨网络通信方法、装置、***及设备
CN111064804B (zh) 网络访问方法和装置
CN110572439A (zh) 一种基于元数据服务和虚拟转发网桥的云监控方法
US20230216895A1 (en) Network-based media processing (nbmp) workflow management through 5g framework for live uplink streaming (flus) control
CN113301079B (zh) 一种数据的获取方法、***、计算设备及存储介质
CN114157639B (zh) 服务器智能网卡信息采集的方法、装置、设备及可读介质
CN114064206A (zh) 一种访问边缘节点的pod方法、***、设备及存储介质
EP4329248A1 (en) Packet forwarding method and apparatus, network device, and storage medium
US10298672B2 (en) Global contact-point registry for peer network devices
US20230300215A1 (en) Proxy-Mediated Service Request Handling between Network Functions
CN116760834A (zh) 一种负载均衡方法、***、设备以及存储介质
CN115712545B (zh) 一种实现集群的服务拓扑感知的方法、装置、设备及介质
US20230275974A1 (en) Network functionality (nf) aware service provision based on service communication proxy (scp)
US11924294B2 (en) Service request handling
US20230318960A1 (en) Methods, systems, and computer readable media for service communication proxy (scp) routing
CN115987990A (zh) 多集群负载均衡方法、装置、电子设备及存储介质
CN113364681B (zh) 网络路径确定方法、装置、电子设备、介质和程序产品
CN101908982A (zh) 虚拟局域网探测方法、装置及***
WO2021233646A1 (en) Service request handling
CN113839876A (zh) 一种内部网络的传输路径优化方法及设备
CN113626144A (zh) 一种集群创建存储双活卷的方法、装置、设备及可读介质
CN111526044A (zh) 一种交换机与服务器之间链路发现方法及设备、介质
US20230179653A1 (en) Service request handling

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