CN114143203A - 一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 - Google Patents
一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 Download PDFInfo
- Publication number
- CN114143203A CN114143203A CN202111303440.0A CN202111303440A CN114143203A CN 114143203 A CN114143203 A CN 114143203A CN 202111303440 A CN202111303440 A CN 202111303440A CN 114143203 A CN114143203 A CN 114143203A
- Authority
- CN
- China
- Prior art keywords
- pod
- service
- network
- data packet
- information
- 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
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 36
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000006378 damage Effects 0.000 claims abstract description 13
- 238000010219 correlation analysis Methods 0.000 claims abstract description 8
- 238000012544 monitoring process Methods 0.000 claims description 26
- 238000001914 filtration Methods 0.000 claims description 18
- 238000004458 analytical method Methods 0.000 claims description 17
- 239000000523 sample Substances 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012216 screening Methods 0.000 claims description 11
- 230000008447 perception Effects 0.000 claims description 8
- 230000002776 aggregation Effects 0.000 claims description 6
- 238000004220 aggregation Methods 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000006978 adaptation Effects 0.000 claims 1
- 230000008859 change Effects 0.000 abstract description 7
- 238000012098 association analyses Methods 0.000 abstract 1
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241000322338 Loeseliastrum Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
- H04L43/045—Processing captured monitoring data, e.g. for logfile generation for graphical visualisation of monitoring data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集方法及系统。所述方法步骤包括:a)动态构建服务拓扑映射关系:实时感知Endpoint变化,构建和更新服务拓扑映射关系图;b)动态识别获取Pod虚拟网卡设备对:动态感知Pod创建与销毁,实时获取每个节点上的Pod虚拟网卡设备对列表;c)采集Pod网络数据包:对Pod外部虚拟网卡设备进行抓包;d)关联分析网络数据包并构建生成指标数据:基于服务拓扑映射关系图,对数据包进行关联分析,构建生成指标数据并上报。本发明解决了Kubernetes容器网络虚拟IP频繁变化导致难以从业务维度进行关联识别网络数据包的问题,能够快速准确地采集、识别和分析数据包,实现覆盖端到端(PodtoPod)的流量采集,建立完整的网络结构拓扑。
Description
技术领域
本发明涉及容器网络流量采集与监控的技术领域,具体地,涉及一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统。
背景技术
当前,企业级应用的容器化部署方式日益成为主流。Docker容器化技术由于其轻量级和标准化实现,近年来得到了飞速发展和广泛应用。Kubernetes(简称K8s)是一个跨主机集群的、开源的容器调度平台,它可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构,已成为业界的容器编排事实标准。在K8s与Docker引起行业巨大变革的同时,也给网络流量采集和监控带来了新的问题需要解决。
容器的特点是弹性伸缩,而支持弹性伸缩的最大的两个特征就是分布式和负载均衡。K8s容器环境中的应用都是以标准的Pod形式部署的,做到了环境的隔离、可移植及弹性扩充,Service的概念屏蔽了后端Pod的部署细节,Ingress解决了Service NodePort类型端口管理的难题,Ingress和Service从两种不同的形式上提供了负载均衡机制。一个容器的Node大概率情况下是个虚拟机,但也可能是个物理机,因此这样的一个容器集群必然要求外部网络是一个三层可连通的网络,这样K8s集群中的Node之间才可以通过IP进行交互;而这样的一个集群节点是以扁平网络的方式进行编织的,但是在这其中,也会存在多租户的叠加网络,在K8s集群内部的容器网络实现里,会看到例如Flannel和Calico这样的扁平网络,它可能是一个覆盖网络(Overlay),也可能是一个纯粹的路由网络(Underlay)。因此,在一个K8s容器集群环境下,假设Node数量为NN个,可能存在NL个负载均衡器——NL的数量基本上等于Node数量,一般一个Service至少能生成一个负载均衡服务,而每个Node上可能会存在NP个Pod,任何Pod之间都是网络可达的,因为整个集群处在一个大三层网络里(Node之间的网络通信),集群外部可通过Ingress、LB的方式来访问集群内部任意一个Pod,这个Pod只需要通过Service、Ingress的方式透传出去,集群内部之间通过Service来相互访问,于是服务之间的交互就会变得十分复杂,东西向流量成为容器环境下的主体流量,这样一个超大规模的部署环境,使得IP数量乘数量级的增长,这可能会有NN*NP或者NL*NP个数量级的IP地址出现。对监控而言,其本质是对端到端的访问情况做监控,在这种情况下,可能需要O(N2)的通信路径需要监控。
传统的网络流量采集和监控方式不能很好地适用于容器网络环境。容器以东西向的网络通信方式为主,它们之间的通信看似平坦,实则并不平坦,大量的LB、Service存在使得Pod之间通信首先要经过DNS,然后进行大量的源、目的地址和端口的映射转换,最终才得到源、目的IP地址之间的通信。在这中间,每一次发生的地址转换都有可能会产生网络性能问题,虽然Pod之间是三层可达的,但实际上两个Pod之间的通信可能会跨越物理服务器机架、交换机、物理防火墙,甚至跨越两个公有云的可用区(AZ),甚至是跨越私有云和公有云之间,端到端的通信路径十分复杂。传统网络模式下的服务器和虚拟机的IP是很少会发生变动的,要想得到业务(服务)之间的网络访问拓扑结构,就可以简化为对IP地址的转化和梳理;但是在容器网络环境中,Pod IP是不断变化的,Service的IP也有可能是会变化的(当且仅当服务销毁、创建时才会发生改变,在创建完成直到销毁之前的整个生命周期内是不会改变的),对IP的识别就变得毫无意义,也就无法再通过IP梳理的方式来进行服务的拓扑了,需要通过一种新的方式来获得服务的拓扑结构。
K8s的特点可以概括总结为:容器网络通信以东西向为主,网络规模超大,端到端的路径十分复杂,服务的拓扑情况动态变化,IP可能会频繁改变。在这样一个大型容器网络环境下,分布式的服务部署情况想要做到全面的监控,就必须要做出一些针对性的解决方案,传统的网络监控方式已不再适用,流量采集必须能够在容器内的网络中完全覆盖端到端,能够建立完整的网络结构拓扑,建立完整的网络传输路径、服务之间的调用链路,从网络流量、时延、错误情况、负载率等维度上提供指标,供开发、运维、产品等相关人员了解整个系统的运行情况,及时发现和定位问题发生的位置。
发明内容
本发明的目的是提供一种能够对K8s Pod进行网络性能指标采集,建立端到端的、全链路网络监控和服务之间访问流量的动态拓扑映射关系的实时数据包指标采集的方法及系统,能够兼容Docker、Containerd等不同容器运行时,解决了不同CNI网络模型的容器网络采集复杂的问题,尤其解决了数据包从业务维度进行关联分析的监控难题。
实现本发明目的的具体技术方案如下:
一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法,包括以下步骤:
步骤a) 动态构建服务拓扑映射关系:实时动态地监听K8s中的Service、Ingress、Pod创建和销毁事件,动态地构建和更新Ingress与Service、Service与Pod、Node与Pod之间的服务拓扑映射关系图;
步骤b) 动态识别获取Pod虚拟网卡设备对:动态感知Pod创建与销毁,实时动态获取每个节点上的Pod列表;自适应不同底层容器运行时,获取节点上的所有Pod虚拟网卡设备对信息列表,根据配置的过滤规则筛选后组成待进行网络数据采集的虚拟网卡设备列表;
步骤c) 采集Pod网络数据包:根据待采集的虚拟网卡设备列表,进行网络数据包的抓取;
步骤d) 关联分析数据包和上报指标数据:基于服务拓扑映射关系图,对数据包的五元组进行分析,构建生成指标数据,上报发送至指标数据接收者,指标数据接收者可以是软件或者硬件。
进一步的,所述动态构建服务拓扑映射关系,具体包括:
步骤a1:实时监听Service、Ingress、Pod创建和销毁事件,动态获取K8s中所有Service、Ingress、Pod的Endpoint信息;
步骤a2:将Service、Ingress、Node、Pod之间的关系进行关联分析;
步骤a3:构建和更新服务拓扑关系映射图。
进一步的,所述动态识别获取Pod虚拟网卡设备对,具体包括:
步骤b1:基于K8s Watch API,实时监听Pod创建与销毁事件,实时更新待采集Pod列表;
步骤b2:根据配置规则对待采集Pod列表进行过滤和筛选;
步骤b3:自动探测底层容器运行时类型,使用gRPC机制与容器运行时进行通信;
步骤b4:通过gRPC接口获取Pod所在网络命名空间;
步骤b5:在Pod网络命名空间内,通过Pod IP精确筛选得到Pod内部虚拟网卡信息;
步骤b6:在节点的根网络命名空间查找Pod内部虚拟网卡的对端,即Pod外部虚拟网卡信息;
步骤b7:最后得到节点上需要进行采集的Pod虚拟网卡设备对列表。
进一步的,所述采集网络数据包,具体包括:
步骤c1:根据过滤条件筛选出需要采集的Pod;
步骤c2:将抓包处理程序绑定到Pod对应的外部虚拟网卡设备上;
步骤c3:启动抓包线程进行持续地网络数据抓包采集;
步骤c4:统计单位时间内(如时分秒)的抓包总数(packet)、数据量(byte)、数据包有效载荷、数据包大小指标信息。
进一步的,所述关联分析数据包和上报指标数据,具体包括:
步骤d1:分析:将抓取得到的Pod内外交换的网络数据包进行拆封,读取网络层(IP)、传输层(TCP/UDP)的五元组信息以及应用层(HTTP/HTTPS)的header信息,其中五元组包括源IP地址、目的IP地址、协议号、源端口和目的端口;
步骤d2:关联:根据五元组信息,关联Service、Node信息,根据HTTP协议层信息,关联Ingress信息;
步骤d3:过滤:根据配置信息,通过五元组、业务关联信息等不同维度来过滤数据包,其中业务关联信息包括服务名、服务IP、服务域名、服务/节点端口号、Ingress IP地址、Ingress 域名和Ingress 7层路由的路径名;
步骤d4:上报:汇总形成指标数据,上报给指标数据接收者。
一种基于动态服务拓扑映射的K8s网络数据包指标采集系统,包括流量汇聚交换机、处理器、存储器以及存储在所述存储器上运行的用于网络数据包指标采集的计算机程序;所述处理器运行所述计算机程序,所述计算机程序实现上述的方法和步骤,所述系统分为动态服务拓扑感知子系统和采集探针子系统,其中采集探针子系统包括Pod虚拟网卡获取模块以及网络流量与指标采集模块:
S1:动态服务拓扑感知子系统:实时监听K8sService、Ingress、Pod创建销毁事件,实时动态地通过K8s api接口获取最新Service Endpoints、Ingress Endpoints、PodEndpoints信息,解析后构建服务拓扑映射关系;
S2:采集探针子系统:分为两个模块:
M1:Pod虚拟网卡获取模块:实时监听K8sPod事件,自适应地探测不同的容器运行时(如Containerd、Docker等),根据不同的容器运行时(Runtime)网络命名空间挂载点,获取到Pod内部网络命名空间,进一步获取Pod内部虚拟网卡(Veth)信息和Pod外部虚拟网卡(Peer Veth)列表;
M2:网络流量与指标采集模块:根据Pod虚拟网卡设备获取模块得到的Pod外部虚拟网卡列表,启动一系列的网络数据包抓包采集线程,抓取和分析Pod内外交换的网络数据包,并支持网络五元组(即源IP地址、目的IP地址、协议号、源端口、目的端口)方式过滤数据包,根据动态服务拓扑感知子系统得到的拓扑关系,额外支持通过服务名(DNS名称)、端口号、Ingress IP地址、Ingress 域名、Ingress 7层路由的路径名等维度来过滤相关数据包,通过服务拓扑映射关系进行计算,汇总得到指标信息并上报。
所述系统以K8sDaemonSet部署运行的方式或直接以二进制运行的方式运行在K8s集群的每个工作节点(虚拟或者物理主机)上,对Pod外部虚拟网卡设备进行绑定,启动抓包的线程,进行网络数据抓包分析,并依据上述步骤,采集得到每个数据包的指标数据。
所述采集系统将这些指标数据压缩后,发送至指标数据接收控制器(Controller)进行汇总、存储和聚合分析。同时可以将原始数据包以旁路的方式存储到节点挂载的存储介质(比如Cephfs、HDFS等)或者发送到距离当前节点最近的中转处理系统、流量汇聚交换机上,可以以雾计算的方式对数据包进行进一步拆解和分析。
所述系统的优点在于通过监听K8s事件信息,实时分析得到最新的服务拓扑映射关系,并将这些拓扑信息与数据包信息进行融合关联,发送到指标数据接收控制器后,能够建立实时动态变化的端到端的监控数据,采取相应的可视化方案,能够实时看到网络流量在通信路径上的情况,及时发现故障点,定位通信问题。
同时所述系统支持通过控制器向其发送配置文件的方式,来决定如何进行数据包的采集,比如是否过滤某些服务、Pod或者Node,是否进行原始数据包的转存封装,是否对原始数据包进行截断,可以配置根据网络五元组的形式来过滤和筛选数据包。
一种计算机可读写存储器,所述存储器用于存储计算机程序和网络数据包,所述计算机程序为上述系统的可执行二进制代码程序,所述计算机程序将采集得到的网络数据包存储在所述计算机可读写存储器上。
本发明支持了对K8s Pod进行端到端的网络性能指标采集,尤其解决了Pod网络数据包进行服务拓扑关联映射的难题,从而创新性的实现了对数据包进行业务标识,可以从业务维度对数据包进行监控分析,同时,本发明提高了不同容器运行时的自动适配性,能够兼容Docker、Containerd等多种不同容器运行时,屏蔽了底层容器运行时的差异对Pod网络数据包进行采集造成的差异化,解决了不同CNI网络模型的容器网络采集复杂的问题,使用本发明方法或系统,能够高效地建立对K8sPod网络性能的数据包采集和和业务维度地监控分析。
附图说明
图1是本发明的方法步骤流程图;
图2是本发明的系统使用状态结构示意图;
图3是本发明的动态服务拓扑感知子系统的流程示意图;
图4是本发明的Pod虚拟网卡获取模块的流程示意图;
图5是本发明的网络流量与指标采集模块的流程示意图;
图6是本发明系统的K8s网络数据包采集的总体工作流程示意图。
具体实施方式
下面结合附图,对本发明具体实施方式做出详细说明。以下介绍的本发明具体实施示例将有助于本领域相关技术人员进一步理解本发明。需要指出的是,对于本领域的一般性技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进,依然属于本发明的保护范围。
本发明实施例公开了一种基于动态服务拓扑映射的K8s容器网络数据包指标采集方法。所述采集方法采集得到的示例指标数据如表1所示:
表1 采集的指标数据
所述采集方法如图1所示,包括如下步骤:
步骤a) 动态构建服务拓扑映射关系:实时动态地监听K8s中的Service、Ingress、Pod创建和销毁事件,动态地构建和更新Ingress与Service、Service与Pod、Node与Pod之间的服务拓扑映射关系图;
步骤b)动态识别获取Pod虚拟网卡设备对:动态感知Pod创建与销毁,实时动态获取每个节点上的Pod列表;探测不同底层容器运行时,获取节点上的所有Pod虚拟网卡设备对信息列表,根据配置的过滤规则筛选后组成待进行网络数据采集的虚拟网卡设备列表;
步骤c)采集Pod网络数据包:根据待采集的虚拟网卡设备列表,进行网络数据包的抓取和指标计算;
步骤d)关联分析数据包和上报指标数据:基于服务拓扑映射关系图,对数据包的五元组进行分析,构建生成指标数据,上报发送至指标数据接收者,指标数据接收者可以是软件或者硬件。
本发明的方法支持对接其他各种能够处理指标数据的监控系统,监控系统可以通过利用指标数据中提供的业务关联关系,对数据包进行识别,进一步的进行业务访问量统计、TCP会话梳理、异常流量检测、监控告警等应用。
本发明实施例还公开了基于上述方法实现的设备系统。所述设备系统如图2所示,本发明的计算机程序系统包括动态服务拓扑感知子系统和采集探针子系统。动态服务拓扑感知子系统基于K8swatchAPI持续监听Service、Pod和Ingress的创建、删除事件,动态更新服务拓扑映射关系图,保存至数据库,并通过gRPC接口方式对外提供查询服务。采集探针子系统又分为Pod虚拟网卡获取模块和网络流量与指标采集模块。Pod虚拟网卡获取模块根据过滤规则筛选出节点上待网络数据抓包的veth虚拟网卡列表,将veth列表提供给网络流量与指标采集模块;网络流量与指标采集模块会启动一系列的线程对每一个虚拟网卡进行网络抓包,支持配置以零拷贝或者拷贝方式来抓取数据,抓到数据包之后可以通过配置来选择要不要以旁路的方式来保存数据包,存储器可选择磁盘文件或者Cephfs、HDFS等分布式存储,也可以选择将数据包以GRE协议进行封装后发送到指定IP或者指定网卡、流量汇聚交换机上,由其他程序来负责进一步的存储或者分析,同时,网络流量与指标采集模块对数据包进行解析,取出五元组(源IP、目的IP、源端口、目的端口、协议),再依据动态服务拓扑感知子系统提供的拓扑信息进行关联分析,收集Pod网络数据宝指标数据,最后将指标汇总发送到控制器,控制器可以是第三方监控系统,不属于本发明范围,控制器负责收集采集探针子系统发送的指标数据,对采集探针进行状态管理和配置下发,以及汇总指标数据提供可视化展示。动态服务拓扑感知子系统单独打包为二进制程序,以Deployment方式部署运行为一个服务,提供一个gRPC接口用于对采集探针子系统提供拓扑变更通知和服务拓扑信息。采集探针子系统单独打包为一个二进制程序,以DaemonSet方式部署运行在K8s集群的每一个节点上,提供一个命令行接口用于执行启动。
参照图3,动态服务拓扑感知子系统基于K8s watch机制启动监听程序,监听K8sPod、Service、Ingress等创建、删除事件,根据事件信息,通过接口访问K8sApiServer重新获取Service和Ingress列表,分别交给Service解析子程序和Ingress解析子程序来处理。其具体步骤如下:
a)首先通过K8客户端动态获取所有的Service和Ingress信息列表;
b)Ingress解析子程序对Ingress列表进行解析,得到Ingress对应的所有的Service名称和端口号,以及Ingress的域名、IP地址、名称;
c)Service解析子程序遍历解析每一项Service信息,并获取得到该Service所有的Pod Endpoint列表;
d)根据c)获得的PodEndpoint列表,解析得到每一项Endpoint的Name、NodeName、Hostname、IP、Port、Node信息,得到每个ServiceEndpoint对应的PodEndpoints,建立起Service与Pod的双向映射关系;
e)组装b)和d)得到的数据,得到Ingress 与Service,Service 与Pod,Node与Pod两两之间的双向映射关系,从而进一步生成服务拓扑图。
f)基于K8sWatchAPI事件监听机制,持续动态地监听K8s Pod、Ingress、Service创建、销毁的事件变化,当监测到变化时重复a)到e)步骤,更新服务拓扑关系映射图。
动态拓扑感知子系统以Deployment方式发布在K8s集群上运行,以独立服务的方式提供给Pod虚拟网卡获取模块和网络流量与指标采集模块使用。
在采集探针子系统中,Pod虚拟网卡获取模块的执行步骤包括如下:
a)首先通过K8sWatchAPI事件监听机制,动态获取当节点上的所有Pod列表;
b)根据过滤配置规则,解析得到需要过滤筛选的Pod列表,与a)中的列表取交集,得到需要进行网络数据采集的Pod列表;
c)探测底层容器运行时类型,通过UnixSocket与容器运行时通信以获取对应Pod容器的网络命名空间;
d)在该网络命名空间中获取得到Pod网络命名空间内部的虚拟网卡设备信息;
e)根据其信息在节点根网络命名空间中筛选得到Pod内部虚拟网卡设备的对端(在Pod网络命名空间的外部),通过此方式获得所有当前节点上的所有待抓包采集的虚拟网卡设备对列表。
参照图4,Pod虚拟网卡获取模块会暴露一个HTTPPUT接口,控制系统通过PUT请求向其发送过滤规则配置,收到后该系统会将此过滤规则配置保存在本地,并及时访问K8sApiServer请求得到当前节点上的最新的Pod列表,根据过滤规则筛选出待抓包的Pod列表并取出容器的ID列表,然后根据不同的容器运行时(Docker或者Containerd)决定在不同的网络命名空间(Namespace,简称ns)挂载点获取对应的容器网络命名空间,通过容器进程ID进入到该网络命名空间内部,获取网卡列表,并根据对应PodIP进行筛选,精确匹配得到Pod内部的通信网卡信息,读取该网卡的PeerIndex,然后退出容器的网络命名空间,在根网络命名中查找与PeerIndex一致的veth设备,此veth设备连接节点根命名空间和Pod所在网络命名空间,网络流量与指标采集模块将会在此veth设备上进行绑定,启动抓包线程进行网络数据包的采集和分析工作。
参照图5,网络流量与指标采集模块根据Pod虚拟网卡获取模块提供的veth网卡列表,比对系统中正在抓包的网卡设备列表,取交集得到的网卡设备列表继续保持抓包采集,不做任何动作,取差集得到的两部分网卡设备列表,一部分为新增的,另一部分为待剔除的,将待剔除的网卡设备对应的抓包线程进行关闭和清理,对新增的网卡设备启动新的抓包线程进行数据采集。其执行步骤如下:
a)根据Pod虚拟网卡获取模块,得到待抓包的Pod外部虚拟网卡设备列表;
b)为每一个veth设备启动一个线程进行抓包,支持以零拷贝和拷贝两种方式配置进行抓包,抓到的数据包统一输送到数据包接收的packet消息通道;
c)创建一个数据包处理分析线程,专门接收从各个抓包线程发送到packet通道的数据包,支持全量转发与截断两种方式,全量模式下会将完整数据包转存至文件、分布式存储或者通过GRE封装转发至网络上的接收服务器、流量汇聚交换机,截断方式与全量方式的区别是,截断方式会将数据包中的头部信息保留,而将payload信息丢弃。
d)分析原始数据包的五元组信息,根据配置的过滤筛选规则对数据包进行过滤,依据动态服务拓扑感知子系统获取拓扑映射关系,得到数据包的源pod、目的pod名称,pod所属的service、ingress信息,以及对应pod所在的namespace、node名称,将这些指标信息封装发送至控制器进行处理分析,同时将原始数据包使用非K8s常见CNI网络模型的协议(如GRE)进行封装转发至具体的网卡、流量汇聚交换机或者零封装保存至存储介质上。
参照图2和图5,每一个抓包线程会将抓取的网络数据包统一发送到数据包接收通道(Channel),交由数据包分析处理子程序专门处理,数据包分析处理子程序会提取数据包的网络五元组,通过动态服务拓扑感知子系统提供的拓扑信息,关联分析得到汇总指标数据,将指标数据发送至控制器;同时,根据配置规则,决定是否采用旁路输出的方式,将原始数据包进行保存以供其他程序另行处理,保存方式可选为磁盘文件、Cephfs和HDFS分布式存储等存储介质或者封装转发等,磁盘文件、Cephfs或者HDFS存储的方式几乎是一致的,通过在所运行的容器内部挂载存储目录,数据包将直接保存至该目录,而封装转发的方式,则是以GRE协议对原始数据包进行封装,然后直接转发至节点上的指定网卡或者指定的IP地址或者流量汇聚交换机上,交由其他程序代为处理。
数据包分析处理子程序支持通过以数据包五元组的信息来过滤采集,也支持以服务名称/IP/端口、Pod名称/IP/端口、Ingress名称/IP/域名/路径等方式来进行过滤采集,过滤规则依然是由外部控制系统下发配置规则得到。
参照图6,采集探针子系统通过命令行方式启动,可以通过命令行方式提供初始的配置信息、过滤规则等等,启动运行后,可以随时由控制器通过HTTPPUT方式下发配置信息、过滤采集规则等来指导所述系统如何进行网络数据抓包和存储分析。随后采集探针子系统将获取抓包采集设备列表,启动一系列抓包线程,持续采集网络数据包,期间可通过旁路输出方式对原始网络数据包进行存储、转发,同时对数据包利用动态服务拓扑感知子系统提供的拓扑信息进行关联分析,汇总指标数据进行上报至控制器。
Claims (7)
1.一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法,其特征在于,该方法包括以下步骤:
动态构建服务拓扑映射关系:实时监听K8s中的Service、Ingress、Pod事件,获取Endpoint信息,关联分析Ingress与Service、Service与Pod、Node与Pod之间的关系,动态构建和更新服务拓扑映射关系图;
动态识别获取Pod虚拟网卡设备对:动态感知Pod创建与销毁,实时动态获取节点上的Pod列表;自动适配不同底层容器运行时,获取节点上的所有Pod虚拟网卡设备对信息列表,根据配置的过滤规则筛选后组成待进行网络数据采集的虚拟网卡设备列表;
采集Pod网络数据包:根据待采集的虚拟网卡设备列表,进行网络数据包的抓取;
关联分析数据包和上报指标数据:基于服务拓扑映射关系图,对数据包的五元组进行分析,构建生成指标数据,上报发送至指标数据接收者,指标数据接收者是软件或者硬件。
2.根据权利要求1所述的方法,其特征在于,所述步骤a)具体包括:
实时监听Service、Ingress、Pod创建和销毁事件,动态获取K8s中所有Service、Ingress、Pod的Endpoint信息;
将Service、Ingress、Node、Pod之间的关系进行关联分析;
构建和更新服务拓扑关系映射图。
3.根据权利要求1所述的方法,其特征在于,所述步骤b)具体包括:
基于K8sWatchAPI,实时监听Pod创建与销毁事件,实时更新待采集Pod列表;
根据配置规则对待采集Pod列表进行过滤和筛选;
自动探测底层容器运行时类型,使用gRPC机制与容器运行时进行通信;
通过gRPC接口获取Pod所在网络命名空间;
在Pod网络命名空间内,通过PodIP精确筛选得到Pod内部虚拟网卡信息;
在节点的根网络命名空间查找Pod内部虚拟网卡的对端,即Pod外部虚拟网卡信息;
最后得到节点上需要进行采集的Pod虚拟网卡设备对列表。
4.根据权利要求1所述的方法,其特征在于,所述步骤c)具体包括:
根据过滤条件筛选出需要采集的Pod;
将抓包处理程序绑定到Pod对应的外部虚拟网卡设备上;
启动抓包线程进行持续地网络数据抓包采集;
统计单位时间内(如时分秒)的抓包总数(packet)、数据量(byte)、数据包有效载荷、数据包大小指标信息。
5.根据权利要求1所述的方法,其特征在于,所述步骤d)具体包括:
分析:将抓取得到的Pod内外交换的网络数据包进行拆封,读取网络层(IP)、传输层(TCP/UDP)的五元组信息以及应用层(HTTP/HTTPS)的header信息,其中五元组包括源IP地址、目的IP地址、协议号、源端口和目的端口;
关联:根据五元组信息,关联Service、Node信息,根据HTTP协议层信息,关联Ingress信息;
过滤:根据配置信息,通过五元组、业务关联信息的不同维度来过滤数据包,其中业务关联信息包括服务名、服务IP、服务域名、服务/节点端口号、Ingress IP地址、Ingress 域名和Ingress 7层路由的路径名;
上报:汇总形成指标数据,上报给指标数据接收者。
6.一种基于权利要求1所述方法的动态服务拓扑映射的K8s容器网络数据包指标采集系统,其特征在于,包括流量汇聚交换机、处理器、存储器以及存储在所述存储器上运行的用于网络数据包指标采集的计算机程序;所述处理器用于运行所述计算机程序,所述计算机程序实现权利要求1~5中所述的方法和步骤,所述计算机程序包括动态服务拓扑感知子系统和采集探针子系统,其中采集探针子系统包括Pod虚拟网卡获取模块以及网络流量与指标采集模块。
7.一种计算机可读写存储器,所述计算机可读写存储器存储计算机程序和网络数据包,其特征在于,所述计算机程序执行时实现如权利要求1~5中所述的方法和步骤,并将采集得到的网络数据包存储在所述计算机可读写存储器上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303440.0A CN114143203B (zh) | 2021-11-05 | 2021-11-05 | 一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111303440.0A CN114143203B (zh) | 2021-11-05 | 2021-11-05 | 一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114143203A true CN114143203A (zh) | 2022-03-04 |
CN114143203B CN114143203B (zh) | 2023-11-10 |
Family
ID=80392412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111303440.0A Active CN114143203B (zh) | 2021-11-05 | 2021-11-05 | 一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114143203B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615168A (zh) * | 2022-03-22 | 2022-06-10 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114826939A (zh) * | 2022-04-25 | 2022-07-29 | 神州灵云(北京)科技有限公司 | 一种k8s集群的网络流量分析方法 |
CN114978610A (zh) * | 2022-04-29 | 2022-08-30 | 北京火山引擎科技有限公司 | 一种流量传输控制方法、装置、设备及存储介质 |
CN115150285A (zh) * | 2022-06-24 | 2022-10-04 | 阿里云计算有限公司 | 网络拓扑关系确定方法、网络系统、设备及存储介质 |
CN115348185A (zh) * | 2022-08-19 | 2022-11-15 | 招银云创信息技术有限公司 | 一种分布式查询引擎的控制方法及其控制装置 |
CN115550200A (zh) * | 2022-12-05 | 2022-12-30 | 神州灵云(北京)科技有限公司 | 一种服务器ip与服务标识关联的方法及装置 |
CN115941496A (zh) * | 2022-11-10 | 2023-04-07 | 西安诺瓦星云科技股份有限公司 | Led显示系统设备拓扑编辑方法、装置及电子设备 |
CN116170341A (zh) * | 2022-12-23 | 2023-05-26 | 中国联合网络通信集团有限公司 | 虚拟化平台监控方法、设备、系统及存储介质 |
CN116170389A (zh) * | 2023-04-19 | 2023-05-26 | 安超云软件有限公司 | 业务容器引流方法、系统及计算机集群 |
CN117176802A (zh) * | 2023-11-02 | 2023-12-05 | 太平金融科技服务(上海)有限公司 | 一种业务请求的全链路监控方法、装置、电子设备及介质 |
CN117938809A (zh) * | 2024-03-25 | 2024-04-26 | 翼方健数(北京)信息科技有限公司 | 域名访问路径优化方法、系统和可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150172075A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Managing data flows in overlay networks |
US20160078342A1 (en) * | 2012-05-04 | 2016-03-17 | Transoft (Shanghai), Inc. | Systems and methods of autonomic virtual network management |
CN109783218A (zh) * | 2019-01-24 | 2019-05-21 | 中国—东盟信息港股份有限公司 | 一种基于Kubernetes容器集群的与时间相关联的容器调度方法 |
US20200241903A1 (en) * | 2019-01-25 | 2020-07-30 | Vmware, Inc. | Systems, methods, and apparatus to improve containerized application visibility |
CN112181764A (zh) * | 2020-09-23 | 2021-01-05 | 南京南瑞继保电气有限公司 | Kubernetes资源数据的监视方法及装置 |
CN112564967A (zh) * | 2020-12-02 | 2021-03-26 | 杭州谐云科技有限公司 | 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质 |
CN113364624A (zh) * | 2021-06-04 | 2021-09-07 | 上海天旦网络科技发展有限公司 | 基于边缘计算的混合云流量采集方法和系统 |
-
2021
- 2021-11-05 CN CN202111303440.0A patent/CN114143203B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160078342A1 (en) * | 2012-05-04 | 2016-03-17 | Transoft (Shanghai), Inc. | Systems and methods of autonomic virtual network management |
US20150172075A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Managing data flows in overlay networks |
CN109783218A (zh) * | 2019-01-24 | 2019-05-21 | 中国—东盟信息港股份有限公司 | 一种基于Kubernetes容器集群的与时间相关联的容器调度方法 |
US20200241903A1 (en) * | 2019-01-25 | 2020-07-30 | Vmware, Inc. | Systems, methods, and apparatus to improve containerized application visibility |
CN112181764A (zh) * | 2020-09-23 | 2021-01-05 | 南京南瑞继保电气有限公司 | Kubernetes资源数据的监视方法及装置 |
CN112564967A (zh) * | 2020-12-02 | 2021-03-26 | 杭州谐云科技有限公司 | 基于eBPF的云服务拓扑自发现方法及系统、电子设备、存储介质 |
CN113364624A (zh) * | 2021-06-04 | 2021-09-07 | 上海天旦网络科技发展有限公司 | 基于边缘计算的混合云流量采集方法和系统 |
Non-Patent Citations (1)
Title |
---|
游贵荣: "轻量级大数据实验平台设计与实现", 《广东石油化工学院学报》, vol. 31, no. 3 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114615168A (zh) * | 2022-03-22 | 2022-06-10 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114615168B (zh) * | 2022-03-22 | 2024-05-17 | 恒安嘉新(北京)科技股份公司 | 一种应用级监控方法、装置、电子设备、存储介质及产品 |
CN114826939B (zh) * | 2022-04-25 | 2024-04-23 | 神州灵云(北京)科技有限公司 | 一种k8s集群的网络流量分析方法 |
CN114826939A (zh) * | 2022-04-25 | 2022-07-29 | 神州灵云(北京)科技有限公司 | 一种k8s集群的网络流量分析方法 |
CN114978610A (zh) * | 2022-04-29 | 2022-08-30 | 北京火山引擎科技有限公司 | 一种流量传输控制方法、装置、设备及存储介质 |
CN114978610B (zh) * | 2022-04-29 | 2024-05-28 | 北京火山引擎科技有限公司 | 一种流量传输控制方法、装置、设备及存储介质 |
CN115150285A (zh) * | 2022-06-24 | 2022-10-04 | 阿里云计算有限公司 | 网络拓扑关系确定方法、网络系统、设备及存储介质 |
CN115348185A (zh) * | 2022-08-19 | 2022-11-15 | 招银云创信息技术有限公司 | 一种分布式查询引擎的控制方法及其控制装置 |
CN115348185B (zh) * | 2022-08-19 | 2023-12-05 | 招银云创信息技术有限公司 | 一种分布式查询引擎的控制方法及其控制装置 |
CN115941496A (zh) * | 2022-11-10 | 2023-04-07 | 西安诺瓦星云科技股份有限公司 | Led显示系统设备拓扑编辑方法、装置及电子设备 |
CN115550200A (zh) * | 2022-12-05 | 2022-12-30 | 神州灵云(北京)科技有限公司 | 一种服务器ip与服务标识关联的方法及装置 |
CN115550200B (zh) * | 2022-12-05 | 2023-02-14 | 神州灵云(北京)科技有限公司 | 一种服务器ip与服务标识关联的方法及装置 |
CN116170341A (zh) * | 2022-12-23 | 2023-05-26 | 中国联合网络通信集团有限公司 | 虚拟化平台监控方法、设备、系统及存储介质 |
CN116170341B (zh) * | 2022-12-23 | 2024-04-09 | 中国联合网络通信集团有限公司 | 虚拟化平台监控方法、设备、系统及存储介质 |
CN116170389A (zh) * | 2023-04-19 | 2023-05-26 | 安超云软件有限公司 | 业务容器引流方法、系统及计算机集群 |
CN117176802B (zh) * | 2023-11-02 | 2024-01-16 | 太平金融科技服务(上海)有限公司 | 一种业务请求的全链路监控方法、装置、电子设备及介质 |
CN117176802A (zh) * | 2023-11-02 | 2023-12-05 | 太平金融科技服务(上海)有限公司 | 一种业务请求的全链路监控方法、装置、电子设备及介质 |
CN117938809A (zh) * | 2024-03-25 | 2024-04-26 | 翼方健数(北京)信息科技有限公司 | 域名访问路径优化方法、系统和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114143203B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114143203B (zh) | 一种基于动态服务拓扑映射的Kubernetes容器网络数据包指标采集的方法及系统 | |
US11641319B2 (en) | Network health data aggregation service | |
US20210119890A1 (en) | Visualization of network health information | |
US10756949B2 (en) | Log file processing for root cause analysis of a network fabric | |
CN111543038B (zh) | 使用中间设备流拼接的网络流拼接 | |
US10243820B2 (en) | Filtering network health information based on customer impact | |
Yu | Network telemetry: towards a top-down approach | |
US10911263B2 (en) | Programmatic interfaces for network health information | |
US20160359880A1 (en) | Geo visualization of network flows | |
US11044170B2 (en) | Network migration assistant | |
CN110659109B (zh) | 一种openstack集群虚拟机监控系统及方法 | |
CN110855493B (zh) | 用于混合环境的应用拓扑图绘制装置 | |
KR20140119561A (ko) | 센서네트워크의 대규모 데이터 수집 장치 및 방법 | |
JP5560936B2 (ja) | 構成情報取得方法、仮想プローブおよび構成情報取得制御装置 | |
CN111343029B (zh) | 一种基于数据转发节点拓扑监控的监控平台及方法 | |
CN113542074B (zh) | 一种可视化管理kubernetes集群的东西向网络流量的方法及系统 | |
EP3744073B1 (en) | Discovery of middleboxes using traffic flow stitching | |
CN110912731B (zh) | 基于nfv采用dpi技术实现业务识别和拓扑分析的系统和方法 | |
CN108599978B (zh) | 一种云监控方法和装置 | |
EP3520330A1 (en) | Visualization of network health information | |
CN106161339B (zh) | 获取ip访问关系的方法及装置 | |
Levin et al. | Network Monitoring in Federated Cloud Environment | |
CN116319868A (zh) | 网络数据处理方法、终端、存储介质及处理器 | |
CN115567319A (zh) | 一种日志采集解析规则优化以及系统性能优化 | |
CN108241570A (zh) | 一种状态查看方法和系统 |
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 |