一种Kubernetes环境下的自动网络巡检系统的制作方法
未命名
08-15
阅读:89
评论:0
service,对应的后端pod均为serverpod。
15.优选的,网络巡检测试程序包括以下测试用例:
16.客户端pod通过service在集群内部的名字访问service;
17.客户端pod访问同一节点上的其他服务器pod;
18.客户端pod访问不同节点上的服务器pod;
19.客户端pod访问clusteripservice;
20.客户端pod访问nodeportservice;
21.node访问clusterservice;
22.node访问nodeportservice。
23.客户端pod通过service在集群内部的名字访问service:这表示客户端的pod通过使用集群内部的服务名称(例如服务a)进行访问,实际上是在访问后端与服务a关联的一个或多个服务器pod。
24.客户端pod访问同一节点上的其他服务器pod:这指的是客户端的pod在同一节点(也就是同一台服务器)上访问其他pod。比如,客户端pod和服务器pod都在同一台服务器上运行,客户端pod通过服务器pod的ip地址进行访问。
25.客户端pod访问不同节点上的服务器pod:这指的是客户端的pod从一个节点访问在另一个节点上运行的pod。在这种情况下,客户端和服务器pod分别在不同的服务器上运行。
26.客户端pod访问clusteripservice:这表示客户端的pod访问由一个或多个服务器pod支持的集群ip服务。集群ip服务是kubernetes中的一种服务,它通过一个共享的ip地址为一组在集群内运行的pod提供访问点。
27.客户端pod访问nodeportservice:这表示客户端的pod访问nodeport服务。nodeport服务是kubernetes中的一种服务,它通过在每个节点上开放一个端口为运行在集群内的pod提供访问点。
28.node访问clusterservice:这指的是运行kubernetes的服务器(节点)访问由一个或多个pod支持的集群服务。例如,服务器可能需要查询集群服务的状态或配置。
29.node访问nodeportservice:这表示节点访问其上运行的nodeport服务。nodeport服务在节点上公开一个端口,允许外部流量直接到达该端口,然后将流量路由到后端的pod。
30.测试内容通过以下方式实现通信:
31.首先,在程序中发起一个请求,访问http://src/ping/dst。其中,src表示源地址,dst表示目的地址。当源地址(src)的api服务器接收到该请求后,它将发起一个新的请求访问dst/ping。这样,源地址与目的地址之间的通信得以实现。
32.本发明的有益效果主要体现在以下几个方面:
33.1、自动化网络巡检:该系统利用自动化的方式进行网络巡检,不需要手动操作,从而节省了人力资源和时间成本。通过网络巡检测试模块,系统能够自动执行一系列巡检步骤,包括创建巡检测试环境、执行网络测试、将结果写入缓存等。这种自动化的巡检过程可以定期执行,确保网络的正常运行和稳定性。
34.2、实时巡检结果展示:系统中的巡检结果展示模块通过/metrics接口提供实时的
网络巡检测试结果。该模块从缓存中获取结果,并通过prometheus调用collect函数将数据返回给客户端。这使得用户能够及时了解网络的状态和性能指标,以便进行必要的调整和优化。
35.3、精确的测试环境创建:在创建测试环境时,包括创建所需的namespace、在指定节点上创建serverpod和clientpod。此外,还创建了cluster ip service和node port service,对应的后端pod均为serverpod。这种精确的环境创建确保了巡检测试的准确性和可靠性。
36.4、全面的网络巡检测试用例:网络巡检测试程序包括多个测试用例,覆盖了各种网络访问情况。这些测试用例能够全面评估网络的连通性、性能和可用性,发现潜在的问题和瓶颈。
37.5、确保巡检的独占性和一致性:通过获取和校验巡检锁,系统能够确保在进行网络巡检测试时只有一个实例在执行,避免了多个实例同时进行测试所带来的冲突和干扰。巡检锁的存在确保了巡检过程的独占性,使得测试结果更加准确和可靠。巡检锁还可避免资源竞争和冲突:在kubernetes环境中,不同的应用或任务可能会共享相同的资源,如节点或网络。使用巡检锁可以防止其他应用或任务在巡检过程中占用或修改被巡检资源,从而保证了巡检的完整性和准确性。巡检锁的引入避免了资源竞争和冲突,保护了巡检过程的可靠性。巡检锁还可确保巡检过程的顺序性:巡检锁的存在确保了巡检过程中各个步骤的执行顺序。在获取巡检锁之前,其他实例无法执行巡检测试步骤,从而保证了每个步骤的按序执行。这种顺序性确保了巡检过程的正确性和可追溯性,使得巡检结果更加可信。
附图说明
38.图1是本发明总体流程示意图;
39.图2是本发明创建测试环境的具体步骤示意图;
40.图3是本发明源地址和目的地址之间的通信示意图。
具体实施方式
41.以下将结合实施例对本发明的一种在kubernetes环境下的自动网络巡检系统进行详细说明。需要说明的是,下面描述的实施例仅为说明本发明,并不构成对本发明的任何限制。
42.如图1和图2所示,在本实施例中,本发明提供了一种kubernetes环境下的自动网络巡检系统,具体包括:
43.网络巡检测试模块:负责执行网络巡检测试的各个步骤。
44.巡检结果展示模块:用于提供实时的网络巡检测试结果。
45.网络巡检测试模块的具体实施方式:
46.获取和校验巡检锁:使用分布式锁机制,如基于分布式存储系统的锁或分布式锁服务(例如etcd、zookeeper)。在进行网络巡检测试之前,获取巡检锁并进行校验,确保只有一个实例在执行巡检过程。
47.创建巡检测试环境:
48.创建所需的namespace(命名空间),用于隔离巡检测试环境。在指定节点上创建
serverpod和client pod,用于模拟网络访问。
49.执行巡检网络测试:
50.使用网络测试工具(例如ping、traceroute)对网络进行测试。执行各项测试用例,如pod之间的访问、跨节点访问等。
51.将巡检结果写入缓存并推送至prometheus:
52.将巡检结果存储到缓存中,如redis、memcached等,以便后续查询和展示。使用prometheus进行数据采集和监控,将巡检结果推送给prometheus。
53.清理巡检环境和释放巡检锁:
54.清理巡检测试环境,包括删除创建的namespace和相应的pod、service等资源。释放巡检锁,使其他实例可以获取并执行巡检过程。
55.巡检结果展示模块实现/metrics接口,通过该接口向客户端提供实时的网络巡检测试结果。从缓存中获取巡检结果数据。使用prometheus的collect函数调用,将数据返回给客户端。
56.如图3所示,测试内容通过以下方式实现通信:
57.首先,在程序中发起一个请求,访问http://src/ping/dst。其中,src表示源地址,dst表示目的地址。当源地址(src)的api服务器接收到该请求后,它将发起一个新的请求访问dst/ping。这样,源地址与目的地址之间的通信得以实现。
58.在另一个实施例中,假设需要在kubernetes环境下实施自动网络巡检系统来监控微服务应用的网络连接和性能。则系统具体设置可以为如下:
59.网络巡检测试模块的实施方式:
60.获取和校验巡检锁:
61.使用etcd作为分布式存储系统,并集成etcd的分布式锁机制。
62.在每个巡检任务开始前,通过分布式锁获取巡检锁,确保只有一个实例执行巡检任务。
63.创建巡检测试环境:
64.使用kubernetes api和client-go库创建一个名为"network-testing"的namespace,用于隔离巡检环境。
65.基于微服务应用的拓扑结构,在指定节点上创建serverpod和client pod,配置容器镜像、资源限制和环境变量。
66.执行巡检网络测试:
67.使用网络测试工具,如curl、iperf、ping等,在client pod和serverpod之间执行网络连接和性能测试。
68.通过kubernetes api查询和访问service、pod、endpoint、node等资源,模拟真实的网络访问情况。
69.解析测试结果,提取关键指标和数据,如延迟、丢包率、吞吐量等。
70.将巡检结果写入缓存并推送至prometheus:
71.使用redis作为缓存系统,并使用redis客户端库(如redis-py)将巡检结果以json格式存储在redis中。
72.将巡检结果数据推送至prometheus的pushgateway,以供后续的数据采集和监控。
73.清理巡检环境和释放巡检锁:
74.通过kubernetes api删除"network-testing"命名空间及其下的所有资源(pod、service等),确保巡检环境的清理。
75.释放巡检锁资源,以便其他实例可以获取并执行后续的巡检任务。
76.巡检结果展示模块的实施方式:使用flask框架创建一个基于python的web服务,用于提供restful api接口。
77.在api服务中,编写一个/metrics的路由,处理get请求,并通过redis客户端库从缓存中获取巡检结果数据。
78.使用prometheus的client库(如prometheus_client)构建metrics对象,将巡检结果数据注入到metrics对象中。
79.在/metrics路由中,将metrics对象以prometheus格式返回给客户端。
80.在此实施例中,本发明使用etcd作为分布式存储系统来实现巡检锁的获取和校验,使用kubernetes api和client-go库来创建巡检测试环境。通过网络测试工具进行实际的网络连接和性能测试,并将结果以json格式存储在redis缓存中。同时,使用redis客户端库将巡检结果写入redis,并通过prometheus的pushgateway将结果推送给prometheus进行数据采集和监控。
81.在巡检结果展示模块中,本发明使用flask框架创建一个web服务,提供restful api接口。通过路由配置,实现/metrics接口的get请求处理。通过redis客户端库从缓存中获取存储的巡检结果数据。然后,使用prometheus的client库构建metrics对象,将巡检结果数据注入到metrics对象中。最后,在/metrics路由中将metrics对象以prometheus格式返回给客户端。
82.这个实施例基于具体场景,展示了如何在kubernetes环境下实施自动网络巡检系统。通过合理配置巡检环境、执行网络测试、存储结果数据以及展示结果接口,系统能够自动化地进行网络巡检,并提供实时的巡检结果展示。这样的实施方式可以帮助监控微服务应用的网络连接和性能,及时发现潜在问题并采取相应措施,以提高系统的稳定性和可靠性。
83.以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
技术特征:
1.一种kubernetes环境下的自动网络巡检系统,其特征在于,包括网络巡检测试模块和巡检结果展示模块;所述网络巡检测试模块在网络巡检测试时,采用如下步骤:获取和校验巡检锁、创建巡检测试环境、执行巡检网络测试、将巡检结果写入缓存并推送至prometheus、清理巡检环境以及释放巡检锁;所述巡检结果展示模块用于实现/metrics接口,从缓存中获取网络巡检测试结果,并在访问/metrics接口时,通过prometheus调用collect函数将数据返回给客户端。2.根据权利要求1所述kubernetes环境下的自动网络巡检系统,其特征在于,创建测试环境的过程包括创建测试所需的namespace,以及在指定节点上创建serverpod和clientpod。3.根据权利要求2所述kubernetes环境下的自动网络巡检系统,其特征在于,创建测试环境的过程还包括创建clusteripservice和nodeportservice,对应的后端pod均为serverpod。4.根据权利要求1或2所述kubernetes环境下的自动网络巡检系统,其特征在于,网络巡检测试程序包括以下测试用例:客户端pod通过service在集群内部的名字访问service;客户端pod访问同一节点上的其他服务器pod;客户端pod访问不同节点上的服务器pod;客户端pod访问clusteripservice;客户端pod访问nodeportservice;node访问clusterservice;node访问nodeportservice。
技术总结
本发明公开了一种Kubernetes环境下的自动网络巡检系统,涉及集群网络巡检领域,包括网络巡检测试模块和巡检结果展示模块;所述网络巡检测试模块在网络巡检测试时,采用如下步骤:获取和校验巡检锁、创建巡检测试环境、执行巡检网络测试、将巡检结果写入缓存并推送至Prometheus、清理巡检环境以及释放巡检锁;所述巡检结果展示模块用于实现/metrics接口,从缓存中获取网络巡检测试结果,并在访问/metrics接口时,通过Prometheus调用collect函数将数据返回给客户端。本发明基于Kubernetes环境,实现了自动网络巡检系统,具有自动化巡检、实时结果展示和全面测试用例等优点,提高了网络稳定性和可靠性。了网络稳定性和可靠性。了网络稳定性和可靠性。
技术研发人员:花磊 刘学聪 崔骥 赵安全 王亮 梁兵 张振华
受保护的技术使用者:江苏博云科技股份有限公司
技术研发日:2023.05.29
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
